트랜스퍼 러닝은 분명 좋은 방법이나 여전히 우리는 몇 에포크까지 해야 가장 좋은 모델이 되는지 알수 없다. 따라서 모델의 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])
그럼 빨강줄 쳐져있는곳처럼 에포크가 하나 끝날때마다 정확도가 가장 높았을때를 기록한다. 다음 에포크가 정확도가 더 높지 않다면 기록하지 않는다.
반응형
'딥러닝' 카테고리의 다른 글
딥러닝(20)prophet 라이브러리를 이용한 타임 시리즈 데이터 예측방법 (0) | 2023.01.03 |
---|---|
딥러닝(18) Transfer Learning과 Fine Tunning (0) | 2023.01.03 |
딥러닝(17) 원본파일을 트레인/테스트 파일로 분리하여 사용하는 방법 (0) | 2023.01.03 |
딥러닝(16) ImageDataGenerator 사용하기 (0) | 2023.01.02 |
딥러닝(15) 텐서플로우를 활용한 CNN (0) | 2023.01.02 |