Keras 동적 데이터 생성기 (dataGenerator) 및 동적 모델 트레이닝 fitgenerator

 

 최근 Kaggle 이미지 분류 경기 : RSNA 두개 내 출혈 감지  ( https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/overview )와 Yolov3 읽기

흥미로운 팁 소스가 학습 및 훈련의 깊이로 노광하고, 그 fit_generator의 Keras와 데이터, 사용 가능한 메모리의 부피를 생성하는 발전기 및 발전기를 구성하는 경우 때,이 방법은 대규모 훈련 데이터 세트에 적합하다. DataGenerator는 일반적 __len 포함 keras 시퀀스 클래스가 파생 된 클래스 __ __ getitem__, on_epoch_end 등, 예를 들어, 다음 배치 영상 데이터 생성 :

클래스 dataGenerator (keras.utils.Sequence) : 
      
      
      DEF  __init__ (자체, LIST_IDS, 라벨의 BATCH_SIZE = 1, img_size = (512, 512. ), 
                   img_dir, * 인수, ** kwargs로) : 

         "" " 
            self.list_IDs : 스토어 모든 필요한 교육 이미지 파일 이름 목록. 
            self.labels :. 기록 pandas.DataFrame 데이터 유형 사진 기밀 정보를 표시는 사전에 주어졌다 
            self.batch_size : 모든 배치 생산, 훈련 샘플 크기를. 
            self.img_size을 : 교육 이미지 크기. 
            self.img_dir :. 경로 사진을 컴퓨터에 저장는 
      
      
         "" " 

          
          self.list_IDs = LIST_IDS 
          self.labels =이 레이블 
          self.batch_size = BATCH_SIZE 
          self.img_size= Img_size 
          self.img_dir = img_dir 
          self.on_epoch_end () 

      DEF  __len__ (자기) 
          
          "" " 
             . 위로 발생기 길이 발생한 총 배치 데이터 즉, 번호" 
             
          "" 
          복귀 INT (CEIL (LEN (self.list_IDs을 ) / self.batch_size))는 

     DEF  __getitem__을 (자기 인덱스) 
         
         "" " 
            이 기능은 처리 된 데이터를 우리가 필요로하는 각각의 시간을 반환한다." 
         "" 
         
         인덱스들 =의 self.indices [self.batch_size 지수 *. (+ 인덱스 1 ) * self.batch_size] 
         list_IDs_temp = self.list_IDs [K] 에 대한 K 인덱스] 
         X-는 Y = 셀프.__data_generation (list_IDs_temp는)
          반환 X 축의 Y- 

     DEF의 on_epoch_end (자기) : 
         
         "" " 
            .이 호출마다 자동 실행의 끝을 획기적인 훈련되고, 여기에 임의의 인덱스는 다음 배치 실행을 촉진하기 위해 차질입니다" 

         "" 
         self.indices = np.arange (LEN (self.list_IDs)) 
         np.random.shuffle (self.indices) 

     DEF  __data_generation (자기, list_IDs_temp) 

        "" " 
           파일명, 데이터가 생성되는 주어진다." 
        "" 
        X- = NP .empty ((self.batch_size, self.img_size * ,. 1 )) 
        는 Y = np.empty ((self.batch_size ,. 6) DTYPE = np.float32) 

       에 대한 I,ID 열거 (list_IDs_temp)
       X는 [I,]= mpimg.imread (self.img_dir + ID + " .png를 " ) 
       Y [I,] = self.labels.loc [ID] .values가 

       반환 X, Y

 

다음과 같이 발전기, 우리는 fit_generator 방법으로 훈련 할 수있다, 형식 루틴은 다음과 같습니다 :

model.fit_generator (발전기

steps_per_epoch = ... ,

신 (新) 시대 = ... ,

자세한 = ... ,

콜백 = ... ,

validation_data = ... ,

validation_steps = ... ,

validation_freq = ... ,

class_weight = 없음 = ...,

max_queue_size = ...

노동자 = ... ,

use_multiprocessing = ... ,

)

또한 우리는 또한 일괄 예측을 수행 할 수 있습니다

model.predict_generator ()

추천

출처www.cnblogs.com/szqfreiburger/p/11621261.html