본문 바로가기
IT 프로그래밍 관련/딥러닝

epoch마다 가장 좋은 모델을 저장하는 ModelCheckpoint

by 지나는행인 2021. 3. 4.
728x90

딥러닝을 할때 성능을 위해서 epoch를 설정한다. ( 너무 많은 epoch는 오버핏이 될 수 있다.)

 

일일이 직접 모니터 하지 않아도, epoch마다 성능이 올라가면 자동으로 저장해주는 ModelCheckpoint가 있다.

 

from tensorflow.keras.callbacks import ModelCheckpoint


cp = ModelCheckpoint(filepath=CHECKPOINT_PATH, monitor='val_accuracy',
                     save_best_only = True, verbose = 1)

라이브러리 적용 후 ModelCheckpoint를 설정한다.

 

filepath : 저장할 경로,  위에서는 경로가 변수로 저장되어 있어 변수로 쓰였다.

monitor : 어떤걸 보고 저장할 것인가. 난 validation set의 accuracy를 보겠다.!

             ( loss 등. 따로 설정 가능하다.)

save_best_only=True  : 가장 좋은 모델만 저장.

 

후에 설정된 ModelCheckpoint는 훈련시킬때 적용한다.

 

history = model.fit(trainGen.flow(X_train, y_train, batch_size=64),
                    steps_per_epoch = len(X_train) // 64,
                    validation_data = (X_val, y_val),
                    validation_steps = len(X_val) // 64,
                    callbacks = cp,
                    epochs = 50
)

## 위와 같이 모델을 훈련시킬때, callbacks = cp 를 하면 설정된 그대로 epoch진행시마다 val_accuracy를 기준으로 더 성능이 좋다면, 덮어가면서 지정된 폴더에 저장한다.

저장된 모델은 다시 불러내어 사용 가능하다.

댓글