keras中的只读模式
deep-learning
keras
python
tensorflow
7
0

我从这个链接克隆的人类姿态估计keras模型人体姿势估计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.

有人可以帮我了解这种只读模式吗?如何加载此模型?

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

这是在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

收藏
评论

我使用callbacks.ModelCheckpoint保存权重,并且遇到类似的错误。我发现有一个名为save_weights_only的参数

如果我设置save_weights_only=True ,那么当我使用load_model()在另一个进程中加载模型时,它将引发“无法以只读模式创建组”。错误。

如果我设置save_weights_only=False (这是默认设置),则可以使用load_model()加载模型并使用它进行预测,而无需先编译模型。

收藏
评论

我有一个类似的问题,并以此方式解决了

JSON格式存储 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\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')
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号