딥러닝

딥러닝(19) 에포크시마다 가장 좋은 모델을 저장하는 모델체크포인트 사용방법

개발연습자1 2023. 1. 3. 17:54

트랜스퍼 러닝은 분명 좋은 방법이나 여전히 우리는 몇 에포크까지 해야 가장 좋은 모델이 되는지 알수 없다. 따라서 모델의 checkpoint를 만들어 에포크시마다 가장 좋은 모델이 되는 순간을 기록한다.

 

일단 데이터를 부르고 학습하는 순간까지 가보자 학습하기 전에 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+'/')

 

케라스라이브러리로 callback 함수를 써서 체크포인트를 만든다.

from keras.callbacks import ModelCheckpoint

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

 

이때 CSVlogger도 만드는데 CSVlogger란 쉽게 말하면 에포크가 끝날때마다 정보를, 파일로 저장해서, 화면 안보더라도, 나중에 파일 열어서 확인이 가능하도록, log를 남기는 방법이다.

 

from keras.callbacks import CSVLogger

csv_logger=CSVLogger(LOGFILE_PATH,append= True)

 

학습을 진행하는 단계로 넘어가자

 

학습을 진행시 위에 썼던 callbacks 대괄호안에 체크포인트와 CSVlogger의 변수를 써주고 학습을 진행한다.

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

 

 

그럼 빨강줄 쳐져있는곳처럼 에포크가 하나 끝날때마다 정확도가 가장 높았을때를 기록한다. 다음 에포크가 정확도가 더 높지 않다면 기록하지 않는다.

반응형