为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法从 .h5 文件确定模型架构?

有没有办法从 .h5 文件确定模型架构?

慕标琳琳 2023-12-12 14:57:37
我有一个 .h5 文件,其中仅包含使用 Mask-RCNN 和 Keras 框架训练来执行对象检测的模型的权重。我想在 Python 中使用 Tensorflow + Keras 加载此模型,并在自定义图像上运行对象检测。我正在使用 Python 3.8.5,并且尝试使用该keras.models.load_model()函数加载此模型,但在尝试这样做时收到错误:ValueError:在配置文件中找不到模型据我了解,这意味着 .h5 文件仅保存模型权重,为了利用这些权重,我必须将它们加载到具有相同架构的模型中。我使用 h5py python 模块来查看 .h5 文件内的组,试图了解其架构,但我只看到如下所示的键:(还有很多很多类似的键,但这些是对我看到的钥匙)“activation_1”、“add_32”、“bn2a_branch1”、“res5c_out”等。这些组有时具有数据集成员,访问这些成员时,会提供类似于以下内容的信息:<HDF5 group "/bn4v_branch2a/bn4v_branch2a" (4 members)\>   <HDF5 dataset "beta:0": shape (256,), type "<f4"\>   <HDF5 dataset "gamma:0": shape (256,), type "<f4"\>   <HDF5 dataset "moving_mean:0": shape (256,), type "<f4"\>   <HDF5 dataset "moving_variance:0": shape (256,), type "<f4"\>我可以假设一些东西,比如“activation_1”可能对应于激活层,但其余的层似乎与我在构建时习惯看到/使用的 Dense、LeakyReLU、BatchNormalization 层等无关一个模型。我需要在这里做什么?如何从仅包含模型权重的 .h5 文件确定 Keras + Mask-RCNN 模型的架构?谢谢,非常感谢任何帮助!
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

您可以在根组属性的“model_config”中找到它。只需检查:

f = h5py.File(your_model_name, 'r')
f.attrs.get('model_config')

在那里你会找到所有图层类的名称、形状、激活函数等。


查看完整回答
反对 回复 2023-12-12
?
呼如林

TA贡献1798条经验 获得超3个赞

尝试将模型加载到另一个变量中,然后调用 model.summary() 函数

model_2 = load_model('old_model.h5')
model_2.summary()
查看完整回答
反对 回复 2023-12-12
?
慕神8447489

TA贡献1780条经验 获得超1个赞

有一个名为 netron 的网站,您可以上传 .h5 文件并获得模型的良好视图。

https://netron.app/


查看完整回答
反对 回复 2023-12-12
?
慕斯709654

TA贡献1840条经验 获得超5个赞

您也许能够从获得的输出中收集一些信息。例如

<HDF5 group "/bn4v_branch2a/bn4v_branch2a" (4 members)\>  
<HDF5 dataset "beta:0": shape (256,), type "<f4"\>  
<HDF5 dataset "gamma:0": shape (256,), type "<f4"\>  
<HDF5 dataset "moving_mean:0": shape (256,), type "<f4"\>  
<HDF5 dataset "moving_variance:0": shape (256,), type "<f4"\>

是批量归一化层。我通过编写手动转换代码从 pytorch 转换为tensorflow 知道了这一点。

也许您可以构建自己的测试网络,提取权重并读取结构,看看这些结构与您已知的层是什么样子,然后与您未知的模型结构进行比较?


查看完整回答
反对 回复 2023-12-12
  • 3 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信