[Keras] 콜백함수 (3) - 조기종료: EarlyStopping
Jan 20, 2020

EarlyStopping 콜백을 활용하면, model의 성능 지표가 설정한 epoch동안 개선되지 않을 때 조기 종료할 수 있습니다. EarlyStopping과 이전에 언급한 ModelCheckpoint 콜백의 조합을 통하여, 개선되지 않는 학습에 대한 조기 종료를 실행하고, ModelCheckpoint로 부터 가장 best model을 다시 로드하여 학습을 재게할 수 있습니다.

from keras.callbacks import ModelCheckpoint, EarlyStopping

filename = 'checkpoint-epoch-{}-batch-{}-trial-001.h5'.format(EPOCH, BATCH_SIZE)
checkpoint = ModelCheckpoint(filename,             # file명을 지정합니다
                             monitor='val_loss',   # val_loss 값이 개선되었을때 호출됩니다
                             verbose=1,            # 로그를 출력합니다
                             save_best_only=True,  # 가장 best 값만 저장합니다
                             mode='auto'           # auto는 알아서 best를 찾습니다. min/max
                            )

earlystopping = EarlyStopping(monitor='val_loss',  # 모니터 기준 설정 (val loss) 
                              patience=10,         # 10회 Epoch동안 개선되지 않는다면 종료
                             )

model.compile(optimizer='adam', loss='mae', metrics=['mae'])

model.fit(x_train, y_train, 
      validation_data=(x_valid, y_valid),
      epochs=EPOCH, 
      batch_size=BATCH_SIZE, 
      callbacks=[checkpoint, earlystopping], # checkpoint, earlystopping 콜백
     )

위와 같이 콜백 리스트에 ModelCheckpointEarlyStopping 모두 넘겨줌으로써 best model을 중간 저장함과 동시에 더 이상 개선되지 않을 때 조기 종료시킬 수 있습니다.



관련 글 더보기

- TensorFlow 2.0 - 단어 토큰화, Embedding, LSTM layer를 활용한 뉴스 데이터 sarcasm 판단

- Digit Recognizer (Kaggle) - over 99% accuracy

- 딥러닝(LSTM)을 활용하여 삼성전자 주가 예측을 해보았습니다

- [Keras] 콜백함수 (2) - weight 중간 저장: ModelCheckpoint

- [Keras] 콜백함수 (1) - 학습률(learning rate): ReduceLROnPlateau

데이터 분석, 머신러닝, 딥러닝의 대중화를 꿈 꿉니다.