1. ModelCheckpoint
from keras.callbacks import ModelCheckpoint
ModelCheckpoint(filepath,
monitor='val_loss',
verbose=0,
save_best_only=False,
save_weights_only=False,
mode='auto',
period=1)
에포크가 끝날 때마다 모델을 저장하는 콜백
- filepath: string, 모델 파일을 저장할 경로.
- monitor: 기록할 항목.
- verbose: 상세 정보 표시 정도, 0 혹은 1.
- save_best_only: True인 경우 monitor 값을 기준으로 가장 좋았던 모델만 저장합니다.
- save_weights_only: True인 경우 모델의 가중치만 저장되고 (model.save_weights(filepath)), 아닌 경우 전체 모델이 저장됩니다 (model.save(filepath)).
- mode: {auto, min, max} 중 하나. save_best_only=True이면 monitor값을 최대화할지 최소화할지에 따라 현재 저장 파일을 덮어쓸지 결정합니다. monitor=val_acc의 경우 mode=max가 되어야 하며, monitor=val_loss라면 mode=min이 되어야 합니다. auto의 경우 monitor값을 통해 자동으로 설정됩니다.
- period: 체크포인트를 저장할 간격(에포크의 수).
2. CSVLogger
from keras.callbacks import CSVLogger
CSVLogger(filename, separator=',', append=False)
에포크의 결과를 csv 파일로 저장하는 콜백
- filename: csv 파일의 파일 이름, 예: 'run/log.csv'.
- separator: csv 파일에서 구분자로 사용할 string.
- append: append=True인 경우, 파일이 존재하면 파일의 뒤에 덧붙입니다(학습을 이어나갈 때 유용합니다). append=False인 경우, 기존의 파일을 덮어 씁니다.
3. 사용 예시
트랜스퍼 러닝으로 MobileNetV2를 사용했는데, 모델링 과정은 생략하겠다.
1) 저장할 경로, 디렉토리 만들기
import os
TYPE='type'
model_type='mobilenetv2'
user='block'
iteration='1-2'
PROJECT_PATH= '/content/drive/MyDrive/Colab Notebooks/ml_plus'
os.chdir(PROJECT_PATH)
# 모델 체크포인트를 저장할 경로
CHECKPOINT_PATH = PROJECT_PATH+'/checkpoints/'+model_type+'/'+'by-'+TYPE+'-'+model_type+'-'+user+'-'+iteration+'.h5'
# csv로그 파일을 저장할 경로
LOGFILE_PATH=PROJECT_PATH+'/log/'+model_type+'/'+model_type+'-by-'+TYPE+'-training-log'+user+'-'+iteration+'.csv'
# 설정한 경로가 존재하지 않을 경우, 디렉토리 생성
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 + '/')
2) 콜백 만들기
from keras.callbacks import ModelCheckpoint, CSVLogger
mcp = ModelCheckpoint(CHECKPOINT_PATH,
monitor= 'val_accuracy',
save_best_only= True,
verbose= 1)
csv_logger = CSVLogger(LOGFILE_PATH, append= True)
3) 콜백을 추가해 모델 학습하기
epoch_history = model.fit(train_generator, epochs=40,
validation_data= (X_val, y_val),
batch_size= 64,
callbacks= [mcp, csv_logger])
4) 저장된 파일 확인
5) 저장된 best 모델을 불러와 사용
best_model = tf.keras.models.load_model(CHECKPOINT_PATH)
'Machine Learning > Deep Learning' 카테고리의 다른 글
Tensorflow - Transfer Learning 예제 (2) | 2023.01.03 |
---|---|
Transfer Learning(전이 학습) 과 Fine Tuning(미세 조정) (0) | 2023.01.03 |
파일을 Train/Test 디렉토리로 나눠서 저장하는 방법 (0) | 2023.01.02 |
Tensorflow - ImageDataGenerator를 이용한 이미지 전처리와 이미지 증강 (0) | 2023.01.01 |
Tensorflow - CNN 모델 예제 (0) | 2022.12.31 |