Kerasでのload_modelでエラー ValueError: Cannot create group in read-only mode.

ModelCheckpointで保存した重みを tensorflow.keras.models.load_model で読み込むと表題のエラー。

ModelCheckpoint の save_weight_only = True にしていたので、重みデータしか保存されておらず、model の構造が含まれていなかったのが原因。

save_weights_onlyif True, then only the model’s weights will be saved (model.save_weights(filepath)), else the full model is saved (model.save(filepath)).

save_weight_only = False にすると、ちゃんと load_model 出来るようになった。

ただし、モデルの構造データも含まれるため保存される重みファイル .h5 の容量が増えてしまう。

ストレージの読み書き量を出来るだけ減らしたい(クラウドで課金される、PCの保存領域が少ない)のであれば、save_weight_only = True のままにしておき、トレーニング時と同じモデルを定義してから load_model すればOK。

参考

tf.keras.callbacks.ModelCheckpoint  |  TensorFlow Core v2.3.0
Callback to save the Keras model or model weights at some frequency.

コメント

タイトルとURLをコピーしました