Kerasで重みを保存して読み込む 質問する

Kerasで重みを保存して読み込む 質問する

トレーニングしたモデルから重みを保存してロードしようとしています。

モデルを保存するために使用しているコードは次のとおりです。

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)

おすすめ記事