Kerasにおける重み/モデルの保存、読み込みについてご紹介します。
目次
条件
- Python 3.7.0
- Keras 2.1.2
Kerasにおける保存/読み込み
Kerasでは、混同しやすい保存/読み込みメソッドが存在します。
ちぐはぐな使い方をすると、読み込みの際に以下のようなエラーが出力され失敗します。
- 重みを保存(model.save_weights())して、モデルを読み込む(models.load_model)。
ValueError: No model found in config file
重みの保存/読み込み
- 重みの保存には、「model.save_weights()」を使用します。
- 重みの読み込みには、「model.load_weights()」を使用します。
model.save_weights(filepath): モデルの重みをHDF5形式のファイルに保存します。
model.load_weights(filepath, by_name=False): (save_weightsによって作られた) モデルの重みをHDF5形式のファイルから読み込みます。デフォルトでは、アーキテクチャは不変であることが望まれます。(いくつかのレイヤーが共通した)異なるアーキテクチャに重みを読み込む場合、by_name=Trueを使うことで、同名のレイヤーにのみ読み込み可能です。
出典:Keras Documentation
モデルの保存/読み込み
- モデルの保存には、「model.save()」を使用します。
- モデルの読み込みには、「model.load_model()」を使用します。
model.save(filepath):単一のHDF5ファイルにKerasのモデルを保存できます。このHDF5ファイルは以下を含みます。
・再構築可能なモデルの構造
・モデルの重み
・学習時の設定 (loss,optimizer)
・optimizerの状態.これにより,学習を終えた時点から正確に学習を再開できますkeras.models.load_model(filepath):モデルを再インスタンス化できます。 load_modelは、学習時の設定を利用して、モデルのコンパイルも行います(ただし、最初にモデルを定義した際に、一度もコンパイルされなかった場合を除く)。
出典:Keras Documentation
参考
Keras Documentation:モデルについて
https://keras.io/ja/models/about-keras-models/
Keras Documentation:Keras modelを保存するには?
https://keras.io/ja/getting-started/faq/