딥러닝 - 콜백을 이용하여 가장 좋은 모델과 로그 저장하기

반응형

이번 포스팅은 콜백을 이용하여 모델/로그를 저장하는 것을 중점으로 작성하였습니다.

딥러닝의 모델링 부분은 포함하지 않습니다.


모델/로그 저장 할 디렉토리 만들기

# 파이썬으로 디렉토리를 만드는 코드 작성
PROJECT_PATH = '.' # 기본 경로 설정, 현재 위치
model_type='mobilenetv2' # 사용중인 모델

# 모델과 로그기록 저장 경로 설정
# CHECKPOINT_PATH: ./checkpoints/mobilenetv2/mobilenetv2.h5
CHECKPOINT_PATH = PROJECT_PATH+'/checkpoints/'+model_type+'/'+model_type+'.h5'
# LOGFILE_PATH: ./log/mobilenetv2/mobilenetv2-training-log.csv
LOGFILE_PATH = PROJECT_PATH+'/log/'+model_type+'/'+model_type+'-training-log'+'.csv'

# 설정한 경로가 존재하지 않을 경우, 디렉토리 생성
import os
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 + '/')

가장 좋은 모델 저장 설정

# monitor : 선택한 인자의 수치가 가장 높을 때
# save_best_only : 성능이 가장 좋았을 때의 여부, True/False
# verbose : 진행도를 텍스트로 출력 여부
from tensorflow.keras.callbacks import ModelCheckpoint
cp = ModelCheckpoint(CHECKPOINT_PATH, monitor='val_accuracy', save_best_only=True, verbose=1)

로그 기록 저장 설정

# CSVLogger 객체 생성
from tensorflow.keras.callbacks import CSVLogger
csv_logger = CSVLogger(LOGFILE_PATH, append=True)

가장 좋은 모델과 로그 기록 저장하기

  •  변수 train_generator는 이미지 전처리를 진행하여 이미 모델링 된 상태
# callbacks에서 설정해둔 cp, csv_logger 호출
epoch_history = model.fit( train_generator, epochs=50, validation_data= (X_val, y_val), \
                          callbacks=[cp, csv_logger], steps_per_epoch=10)

생성 확인

  • 가장 좋은 모델 확인

 

  • 로그 기록 확인

 

반응형