더북(TheBook)

4 학습의 자동 중단

 

텐서플로에 포함된 케라스 API는 EarlyStopping() 함수를 제공합니다. 학습이 진행되어도 테스트셋 오차가 줄어들지 않으면 학습을 자동으로 멈추게 하는 함수입니다. 이를 조금 전 배운 ModelCheckpoint() 함수와 함께 사용해 보면서 최적의 모델을 저장해 보겠습니다.

먼저 다음과 같이 EarlyStopping() 함수를 불러옵니다.

from tensorflow.keras.callbacks import EarlyStopping

early_stopping_callback = EarlyStopping(monitor='val_loss', patience=20)

monitor 옵션은 model.fit()의 실행 결과 중 어떤 것을 이용할지 정합니다. 검증셋의 오차(val_loss)로 지정하겠습니다. patience 옵션은 지정된 값이 몇 번 이상 향상되지 않으면 학습을 종료시킬지 정합니다. monitor='val_loss', patience=20이라고 지정하면 검증셋의 오차가 20번 이상 낮아지지 않을 경우 학습을 종료하라는 의미입니다.

모델 저장에 관한 설정은 앞 절에서 사용한 내용을 그대로 따르겠습니다. 다만 이번에는 최고의 모델 하나만 저장되게끔 해 보겠습니다. 이를 위해 저장될 모델 이름에 에포크나 정확도 정보를 포함하지 않고, ModelCheckpoint()save_best_only 옵션을 True로 설정합니다.

modelpath = "./data/model/Ch14-4-bestmodel.hdf5"

checkpointer = ModelCheckpoint(filepath=modelpath, monitor='val_loss', verbose = 0, save_best_only=True)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.