딥러닝 - Tensorflow: 모델 저장 및 불러오기

dumbbelldore·2025년 1월 12일
0

zero-base 33기

목록 보기
70/97

1. 학습 중 모델 자동 저장 + 불러오기

  • 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')

2. 모델 수동 저장 + 불러오기

  • 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')

*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글