본문 바로가기
인공지능/Deep Learning

[Deep Learning] 가장 좋은 모델과 기록을 자동 저장하기 ModelCheckPoint, CSVLogger

by coding_su 2023. 1. 2.

📝epoch 마다 가장 좋은 모델을 자동으로 저장하는 ModelCheckPoint / 기록을 저장하는 CSVLogger

우선 모델과 로그를 저장할 디렉토리를 만든다

# 파이썬 코드로 디렉토리 만들기
# PROJECT_PATH 변수에는 내 드라이브 파일경로를 저장해두었다

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 + '/')

 

CHECKPOINT_PATH 경로에 val_accuracy의 성능이 가장 좋은 모델을 저장하라는 코드 작성

(verbose= 1 디버깅용이다 화면에 찍어달라는 것)

from keras.callbacks import ModelCheckpoint

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

 

에포크가 끝날때마다 현재는 화면에 표시하는데 이 정보를 파일로 저장해서 화면을 안보더라도 나중에 파일 열어서 확인이 가능하도록 LOGFILE_PATH 경로에 log를 남기는 코드를 작성

from keras.callbacks import CSVLogger

csv_logger = CSVLogger(LOGFILE_PATH, append= True)

 

학습시킬때 callbacks= 에 위에서 만든 코드를 저장한 변수 [mcp, csv_logger]를 입력해준다

epoch_history = model.fit( train_generator, epochs= 40, validation_data=(X_val, y_val), batch_size= 64, callbacks= [mcp, csv_logger] )

 

학습시키면 val_accuracy의 성능이 가장 좋은 모델이 내 구글 드라이브에 저장된다

 

구글 드라이브에 저장된 가장 좋은 모델을 불러와서 테스트까지 해보겠다

# 모델이 들어 있는 경로를 변수에 저장했다 (CHECKPOINT_PATH)

best_model = tf.keras.models.load_model(CHECKPOINT_PATH)

best_model.evaluate(X_test, y_test)

댓글