fit()을 통한 모델 학습 과정에서, ModelCheckpoint Callback을 이용하면 설정한 조건을 만족하는 모델만 선별하여 자동 저장되게끔 설정할 수 있음
주로 검증 손실(val_loss)이 가장 작은 모델이나, 검증 정확도(val_accuracy)가 가장 높은 모델을 저장하는데 사용함
from tensorflow.keras.callbacks import ModelCheckpoint
# ModelCheckpoint 콜백 정의
lowest_val_loss = ModelCheckpoint(
'best_model.h5', # 모델을 저장할 경로 및 파일명
monitor='val_loss', # 모니터링할 지표 (val_loss 또는 val_accuracy 등)
save_best_only=True, # 가장 좋은 모델만 저장 (더 좋은 모델이 나오는 경우 해당 모델로 대체 저장)
mode='min', # 'min'은 손실을 최소화할 때, 'max'는 정확도를 최대화할 때 사용
verbose=1 # 모델 저장 시 내용 출력
)
# 모델 학습 시 콜백 적용
model.fit(
x_train, y_train,
epochs=10,
validation_data=(x_test, y_test),
callbacks=[lowest_val_loss] # 콜백 명시
)
load_model()을 사용해 저장된 모델(가장 성능이 좋았던 모델)을 불러올 수 있음best_model = tf.keras.models.load_model('best_model.h5')
save() 함수를 이용하면 모델의 구조, 가중치, 옴티마이저 상태 등 모든 정보를 한꺼번에 저장할 수 있음# 모델 저장
model.save('my_model.h5') # HDF5 형식으로 저장
# 모델 불러오기
new_model = tf.keras.models.load_model('my_model.h5')
save_weights() 함수를 이용하면 모델의 가중치만 저장할 수 있으며, 파일 크기가 줄어든다는 장점이 있음# 모델 가중치 저장
model.save_weights('my_model_weights.h5')
# 모델 생성 및 가중치 로드
new_model = CustomModel()
new_model.load_weights('my_model_weights.h5')
*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.