[Deep Learning] Model 저장 및 로드
keras에서 학습한 Model을 저장 및 로드하는 방법. 저장 : ModelCheckpoint, model.save() 로드 : keras.models.load_model()
✅ Model을 저장하는 방법
학습시킨 모델을 저장하는 방법은 Callback 함수를 이용하는 방법과 학습이 끝난 후, 모델의 .save()
메소드를 활용해 저장하는 방법이 있다.
✔️ ModelCheckpoint
Callback 함수 중 ModelCheckpoint
함수를 이용하면 설정한 값에 따라 모델을 저장할 수 있다.
from tf.keras.callbacks import ModelCheckpoint
1
2
3
4
5
6
7
mc = ModelCheckpoint(filepath='/checkpoints/model_save.h5',
monitor='val_loss',
verbose=1,
save_best_only=True,
save_weights_only=False) # 가중치만 저장 or 모델 구조도 저장
model.fit(x, y, epochs=EPOCHS, callbacks=[mc])
filepath에는 formatting option이 적용가능하여 다음과 같이 epoch와 val_loss와 같은 정보를 파일 이름으로 지정하여 저장할 수 있다.
1
2
3
4
5
6
7
mc = ModelCheckpoint(filepath='/checkpoints/{epoch:02d}-{val_loss:.2f}.h5',
monitor='val_loss',
verbose=1,
save_best_only=True,
save_weights_only=False) # 가중치만 저장 or 모델 구조도 저장
model.fit(x, y, epochs=EPOCHS, callbacks=[mc])
✔️ model.save()
학습이 끝난 모델을 model.save(filepath)
로 저장할 수 있다. 이때 모델의 가중치는 학습이 끝난 시점에 저장되어있는 가중치이다. (만약 EarlyStopping 콜백함수를 사용했다면, 해당 옵션에 맞는 가중치가 저장되어 있을 것임)
1
model.save('model_save.h5')
✅ Model을 불러오는 방법
모델을 불러오는 방법은 keras.models.load_model(filepath)
를 통해 가능하다. 만약 모델 구조와 가중치가 함께 저장되어있는 파일이라면 불러왔을 때 모델 객체와 가중치가 불러와지고, 가중치만 저장되어 있는 파일이라면 모델 구조는 쌓은 후에 model.load_weights(filepath)
를 통해 가중치를 불러올 수 있다.
1
2
3
4
5
6
# 모델 구조와 가중치 함께 저장된 파일
model = keras.models.load_model('model_save.h5')
# 가중치만 저장된 파일
# model 은 이미 모델 구조가 쌓여있다.
model.load_weights('weights.h5')