我有一个.h5文件,其中仅包含已使用Mask-RCNN和Keras框架进行训练以执行对象检测的模型的权重。我想用Python中的Tensorflow + Keras加载此模型,并在自定义图像上运行对象检测。
我使用的是Python 3.8.5,我尝试过使用keras.models.load_model()
函数加载这个模型,但是当我尝试这样做的时候,我收到了错误:
ValueError:在配置文件中未找到模型
我知道这意味着.h5文件只保存了模型权重,为了使用这些权重,我必须将它们加载到具有相同体系结构的模型中。
我已经使用h5 py python模块查看了.h5文件中的组,试图了解其体系结构,但我只看到了如下所示的键:(还有很多很多像这样的,但那些都是我看到的键的总体概述)
“激活_1”、“添加_32”、“bn2a_branch1”、“资源5c_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模型的架构?
谢谢,任何帮助都是非常感激的!
4条答案
按热度按时间9fkzdhlc1#
您可以在根组属性的“model_config”中找到它。只需检查:
字符串
在那里,你会发现所有的层类的名称,形状,激活功能等。
8ulbf1ek2#
尝试将模型加载到另一个变量中,然后调用model.summary()函数
字符串
这应该显示模型的层,如下所示:Summary of model
5t7ly7z53#
您也许能够从所得到的输出中收集一些信息。例如:
字符串
是批量归一化层。我是通过编写从pytorch转换到tensorflow的手动转换代码来了解这一点的。
也许你可以建立一个自己的测试网络,提取权重并读取结构,看看你知道的层的结构是什么样的,然后与你未知的模型结构进行比较?
ergxz8rk4#
有一个网站叫做netron,你可以上传你的.h5文件,并获得你的模型的良好视图。
https://netron.app/