このリンクから人間の姿勢推定ケラモデルを複製しました 人間の姿勢推定ケラ
Google Colabでモデルをロードしようとすると、次のエラーが表示されます
コード
from keras.models import load_model
model = load_model('model.h5')
エラー
ValueError Traceback (most recent call
last)
<ipython-input-29-bdcc7d8d338b> in <module>()
1 from keras.models import load_model
----> 2 model = load_model('model.h5')
/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py in load_model(filepath, custom_objects, compile)
417 f = h5dict(filepath, 'r')
418 try:
--> 419 model = _deserialize_model(f, custom_objects, compile)
420 finally:
421 if opened_new_file:
/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py in _deserialize_model(f, custom_objects, compile)
219 return obj
220
--> 221 model_config = f['model_config']
222 if model_config is None:
223 raise ValueError('No model found in config.')
/usr/local/lib/python3.6/dist-packages/keras/utils/io_utils.py in __getitem__(self, attr)
300 else:
301 if self.read_only:
--> 302 raise ValueError('Cannot create group in read only mode.')
303 val = H5Dict(self.data.create_group(attr))
304 return val
ValueError: Cannot create group in read only mode.
誰かがこの読み取り専用モードを理解するのを手伝ってもらえますか?このモデルをロードするにはどうすればよいですか?
Google Collabで作成されたGit Gistの例を以下に示します。 https://Gist.github.com/kolygri/835ccea6b87089fbfd64395c3895c01f
私が理解する限りでは:
モデルのアーキテクチャを設定および定義してから、model.load_weights( 'alexnet_weights.h5')を使用する必要があります。
以下に、便利なGithub会話リンクを示します。これは、問題をよりよく理解するのに役立ちます。 https://github.com/keras-team/keras/issues/6937
同様の問題があり、この方法で解決しました
storeJSON
形式のgraph\architecture
およびh5
形式のweights
import json
# lets assume `model` is main model
model_json = model.to_json()
with open("model_in_json.json", "w") as json_file:
json.dump(model_json, json_file)
model.save_weights("model_weights.h5")
次にload model
を最初にcreate
graph\architecture
とload_weights
をモデルに含める必要があります
from keras.models import load_model
from keras.models import model_from_json
import json
with open('model_in_json.json','r') as f:
model_json = json.load(f)
model = model_from_json(model_json)
model.load_weights('model_weights.h5')
callbacks.ModelCheckpoint
を使用して重みを保存しましたが、同様のエラーが発生しました。 save_weights_only
というパラメーターがあることがわかりました
save_weights_only=True
を設定した場合、load_model()を使用して別のプロセスでモデルをロードすると、「読み取り専用モードでグループを作成できません」が発生します。エラー。
save_weights_only=False
(デフォルト)を設定すると、load_model()を使用してモデルをロードし、モデルをコンパイルせずに予測を行うことができます。