Theano 기반 딥 러 닝 (Deep Learning) 프레임 워 크 Keras 학습 수필 - 10 - 리 턴

원래 주소:http://blog.csdn.net/niuwei22007/article/details/49229909
        Callbacks (리 셋 함수) 는 모델 훈련 기간 에 지정 한 단계 에서 호출 되 는 함수 입 니 다.리 턴 함 수 를 통 해 모델 훈련 과정 에서 모델 내부 정보 와 통계 데 이 터 를 볼 수 있다.리 셋 함수 list 를 전달 하여 fit () 함수 에 전달 한 후 관련 리 셋 함 수 는 지정 한 단계 에서 호출 될 수 있 습 니 다.
1. Callbacks 기본 클래스
keras.callbacks.Callback()

속성:
  • Params: 사전 유형.훈련 매개 변수 (예 를 들 어 verbosity, batch size, number of epochs...)
  • Model: keras. models. Model 유형.훈련 모델 에 인용 되다.

  • 방법:
  • on_train_begin (logs = {}): 훈련 전 호출
  • on_train_end (logs = {}): 훈련 후 호출
  • on_epoch_begin (epoch, logs = {}): 제 epoch 차 전 호출
  • on_epoch_end (epoch, logs = {}): epoch 차 후 호출
  • on_batch_begin (batch, logs = {}): 제 batch 블록 앞 호출
  • on_batch_end (batch, logs = {}): 제 batch 블록 후 호출
  •         위의 방법 중의 logs 는 사전 으로 현재 batch 나 epoch 의 훈련 데이터 (예 를 들 어 오차 율, 정확도, batch size 등) 를 기록 합 니 다.일반적인 fit () 방법 은 다음 과 같은 데 이 터 를 포함 합 니 다.
  • on_epoch_end: 기록 은 오차 율 (검증 가능), 정확도 (검증 및 정밀도 측정 가능)
  • 를 포함 합 니 다.
  • on_batch_begin: 현재 견본 batch 를 포함 하 는 size 를 기록 합 니 다.
  • on_batch_end: 기록 포함 오차 율, 정확도 (정밀도 측정 가능) 

  • 2. 사용 가능 한 반전 함수
    keras.callbacks.ModelCheckpoint(filepath,verbose=0, save_best_only=False)

            사용 자 는 매번 epoch 이후 에 모델 데 이 터 를 저장 합 니 다.하면, 만약, 만약...best_only = True 는 최근 검증 오차 가 가장 좋 은 모델 데이터 가 저 장 됩 니 다.filepath 는 epoch 와 logs 의 키 로 구성 되 어 있 습 니 다.예 를 들 어 filepath = weights. {epoch: 02d} - {val loss:. 2f}. hdf 5 는 epoch 와 val 이 많이 저 장 됩 니 다.loss 정보의 파일;물론 어떤 경로 일 수도 있 습 니 다.
    keras.callbacks.EarlyStopping(monitor='val_loss', patience=0, verbose=0)

            모니터 가 더 이상 개선 되 지 않 을 때 훈련 을 멈 추 는 것 은 patience 를 통 해 알 수 있다.
     
    3. 자신의 반전 함수 만 들 기
            기본 클래스 인 keras. callbacks. Callback 을 확장 하여 일반적인 반전 함 수 를 만 들 수 있 습 니 다.리 셋 함 수 는 self. model 속성 을 통 해 훈련 model 과 연결 해 야 합 니 다.다음은 batch 훈련 후의 오차 율 을 저장 하 는 간단 한 반전 함수 입 니 다.
    classLossHistory(keras.callbacks.Callback):
        defon_train_begin(self, logs={}):
            self.losses = []
     
        defon_batch_end(self, batch, logs={}):
            self.losses.append(logs.get('loss'))

    4. 기록 손실률 사례 소개
    #             
    classLossHistory(keras.callbacks.Callback):
        defon_train_begin(self, logs={}):
            self.losses = []
     
        defon_batch_end(self, batch, logs={}):
            self.losses.append(logs.get('loss'))
    #       
    model = Sequential()
    model.add(Dense(10, input_dim=784, init='uniform'))
    model.add(Activation('softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
     
    #           
    history = LossHistory()
    #     
    model.fit(X_train,Y_train, batch_size=128, nb_epoch=20, verbose=0, callbacks=[history])
     
    #     
    print history.losses
    '''
    [0.66047596406559383, 0.3547245744908703,..., 0.25953155204159617, 0.25901699725311789]
    ''' 

    5. 리 셋 함수 (model checkpoints) 인 스 턴 스 소개
    from keras.callbacks import ModelCheckpoint
     
    model = Sequential()
    model.add(Dense(10, input_dim=784, init='uniform'))
    model.add(Activation('softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
     
    '''
      epoch  ,        ,       。
    '''
    checkpointer =ModelCheckpoint(filepath="/tmp/weights.hdf5", verbose=1, save_best_only=True)
    model.fit(X_train, Y_train, batch_size=128, nb_epoch=20, verbose=0, validation_data=(X_test, Y_test), callbacks=[checkpointer])
     

    참고 자료:
  •  공식 튜 토리 얼
  • 좋은 웹페이지 즐겨찾기