web-dev-qa-db-ja.com

Kerasの読み取り専用モード

このリンクから人間の姿勢推定ケラモデルを複製しました 人間の姿勢推定ケラ

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.

誰かがこの読み取り専用モードを理解するのを手伝ってもらえますか?このモデルをロードするにはどうすればよいですか?

10

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

10

同様の問題があり、この方法で解決しました

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を最初にcreategraph\architectureload_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')
6
Akhilesh

callbacks.ModelCheckpointを使用して重みを保存しましたが、同様のエラーが発生しました。 save_weights_onlyというパラメーターがあることがわかりました

save_weights_only=Trueを設定した場合、load_model()を使用して別のプロセスでモデルをロードすると、「読み取り専用モードでグループを作成できません」が発生します。エラー。

save_weights_only=False(デフォルト)を設定すると、load_model()を使用してモデルをロードし、モデルをコンパイルせずに予測を行うことができます。

0
handhand