Post

[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')
This post is licensed under CC BY 4.0 by the author.

[Deep Learning] ImageDataGenerator 사용법

[Deep Learning] keras 콜백 함수 ReduceLROnPlateau