IT 지식 창고

(Keras) model, weight 저장 및 불러오기

casim 2020. 10. 20. 18:51

http://www.kwangsiklee.com/2019/03/keras%EC%97%90%EC%84%9C-%EB%AA%A8%EB%8D%B8-saveload%ED%95%98%EA%B8%B0/

 

keras에서 model과 weight를 저장 및 불러오는 방법은 여러가지가 있습니다.

1. model만 저장 및 불러오기 (json or yaml)

2. weights만 저장 및 불러오기(h5df)

3. 둘다 저장 및 불러오기(h5df)

 

각각의 방법들은 독립적이라고 생각하면 됩니다. 즉, 각 방법에 대한 keras 함수들이 정해져 있다고 보시면 됩니다.

 

1. model만 저장 및 불러오기

  • json으로 model 저장
# keras.models를 통해 만들어진 Sequential이나 Model
model_json = model.to_json()
with open("model.json", "w") as json_file :
	json_file.write(model_json)
  • json으로 model 불러오기
# json으로 만든 model은 따로 함수를 또 import를 해야함
from keras.models import model_from_json
json_file = open("model.json", "r") 
loaded_model = json_file.read() 
json_file.close() 

model = model_from_json(loaded_model)

2. weights만 저장 및 불러오기

  • weights 저장
# keras.models를 통해 만들어진 Sequential이나 Model
model.save_weights('model_weights.h5')
  • weights 불러오기
model.load_weights('model_weights.h5')

3. model과 weights 동시에 저장 및 불러오기

  • model과 weight를 h5형태로 저장
# keras.models를 통해 만들어진 Sequential이나 Model
model.save('model.h5')
  • 불러오기
# keras.models를 통해 만들어진 Sequential이나 Model
model.load_model('model.h5')

 

다시 말하지만, 3가지 방법은 독립적이며 각 파일 또한 독립적으로 다뤄야합니다.

 

model.save를 통해 만들어진 h5와 weights만 저장된 h5는 엄연히 다른 데이터가 들어가 있기 때문에 서로 호환해서 사용할 수는 없습니다.

헷갈려서 에러가 발생 할 수 있으니, 3가지 방법은 독립적으로 생각하시는 게 좋습니다.