トレーニングしたモデルから重みを保存してロードしようとしています。
モデルを保存するために使用しているコードは次のとおりです。
TensorBoard(log_dir='/output')
model.fit_generator(image_a_b_gen(batch_size), steps_per_epoch=1, epochs=1)
model.save_weights('model.hdf5')
model.save_weights('myModel.h5')
これが間違った方法なのか、もっと良い方法があるのかどうか教えてください。
しかし、これを使ってロードしようとすると、
from keras.models import load_model
model = load_model('myModel.h5')
しかし、このエラーが発生します:
ValueError Traceback (most recent call
last)
<ipython-input-7-27d58dc8bb48> in <module>()
1 from keras.models import load_model
----> 2 model = load_model('myModel.h5')
/home/decentmakeover2/anaconda3/lib/python3.5/site-
packages/keras/models.py in load_model(filepath, custom_objects, compile)
235 model_config = f.attrs.get('model_config')
236 if model_config is None:
--> 237 raise ValueError('No model found in config file.')
238 model_config = json.loads(model_config.decode('utf-8'))
239 model = model_from_config(model_config,
custom_objects=custom_objects)
ValueError: No model found in config file.
何が間違っているのか、何かアドバイスはありますか? よろしくお願いします。
ベストアンサー1
あなたが何をしたいのかを正確に説明している YouTube ビデオがこちらにあります:Kerasモデルを保存して読み込む
Keras では 3 つの異なる保存方法が利用できます。これらについては、上記のビデオ リンク (例付き) と下記で説明されています。
まず、エラーが発生する理由は、呼び出し方法がload_model
間違っているためです。
モデルの重みを保存して読み込むには、まず
model.save_weights('my_model_weights.h5')
重みを保存するには、まずモデルを構築し、次にload_weights
モデルを呼び出す必要があります。
model.load_weights('my_model_weights.h5')
もう 1 つの節約テクニックは ですmodel.save(filepath)
。このsave
関数は以下を保存します。
- モデルの再作成を可能にするモデルのアーキテクチャ。
- モデルの重み。
- トレーニング構成 (損失、オプティマイザー)。
- オプティマイザーの状態。中断したところからトレーニングを再開できます。
この保存されたモデルをロードするには、次のようにします。
from keras.models import load_model
new_model = load_model(filepath)'
最後に、model.to_json()
はモデルのアーキテクチャのみを保存します。アーキテクチャをロードするには、次のようにします。
from keras.models import model_from_json
model = model_from_json(json_string)