군침이 싹 도는 코딩

Modelcheckpoint / CSVLogger 사용법 본문

Python/Deep Learning

Modelcheckpoint / CSVLogger 사용법

mugoori 2023. 1. 2. 17:19

Modelcheckpoint는 에포크 시 마다 가장 좋은 모델을 저장한다

CSVLogger는 에포크 시 마다 기록을 남길 수 있다

 

 

 

if not os.path.exists(PROJECT_PATH + '/checkpoints/'+ model_type +'/') :
  os.makedirs(PROJECT_PATH + '/checkpoints/'+ model_type +'/')
  
if not os.path.exists(PROJECT_PATH + '/log/'+ model_type +'/') :
  os.makedirs(PROJECT_PATH + '/log/'+ model_type +'/')

# 위 두가지를 저장할 디렉토리를 만들어준다

 

 

 

from keras.callbacks import ModelCheckpoint
from keras.callbacks import CSVLogger

mcp = ModelCheckpoint(CHECKPOINT_PATH, monitor='val_accuracy', save_best_only=True, verbose= 1)
csv_logger = CSVLogger(LOGFILE_PATH, append=True)

# 필요한 라이브러리를 임포트해준다

mcp는 파라미터로 경로, 모니터(무엇으로 결정할 것인가), save_best_only(가장좋은값 저장), verbose(화면에 표시)

csv_logger의 파라미터는 경로, append는 True로 한다

 

 

 

 

from keras import callbacks
epoch_history = model.fit(train_generator, epochs= 20, validation_data=(X_val,y_val), callbacks=[mcp, csv_logger], batch_size=64)
>>>
Epoch 1/20
10/10 [==============================] - ETA: 0s - loss: 0.1267 - accuracy: 0.9585
Epoch 1: val_accuracy improved from -inf to 0.94667, saving model to /content/drive/MyDrive/Colab Notebooks/ml_plus/checkpoints/mobilenetv2/by-type-mobilenetv2-block-1-2.h5
10/10 [==============================] - 12s 832ms/step - loss: 0.1267 - accuracy: 0.9585 - val_loss: 0.1798 - val_accuracy: 0.9467
Epoch 2/20
10/10 [==============================] - ETA: 0s - loss: 0.1368 - accuracy: 0.9652
Epoch 2: val_accuracy improved from 0.94667 to 1.00000, saving model to /content/drive/MyDrive/Colab Notebooks/ml_plus/checkpoints/mobilenetv2/by-type-mobilenetv2-block-1-2.h5
10/10 [==============================] - 7s 660ms/step - loss: 0.1368 - accuracy: 0.9652 - val_loss: 0.0219 - val_accuracy: 1.0000

# 이제 학습을 시킬때 콜백에 두 함수를 넣어주면 된다

결과를 보면 verbose를 써서 val_accuracy가 높아질때마다 저장되었다고 출력이 된다

 

 

 

 

checkpoint
csv_logger

# 지정한 디렉토리로 가보면 가장 좋은 모델과 에포크 기록이 남아있는 로그를 볼 수 있다