如何从已保存的预训练模型的h5文件中查找层数?

时间:2019-02-04 07:28:30

标签: python numpy h5py pre-trained-model transfer-learning

我有以h5格式保存的VGG-16重量。我想查看网络中的层数。我该怎么办?

我尝试使用:

file = h5py.File(vgg16.h5)

此后,我检查了file.attrs,但在此之后,我不知道该使用哪个命令来查找网络中的层数。

3 个答案:

答案 0 :(得分:1)

如果只有权重而不是模型结构,则可以使用keys()方法获取该权重文件中的所有图层名称。

例如:我有一个配重文件:Product_List = [ Product( prod_id:1, prod_name:"Product A", ), Product( prod_id:2, prod_name: "Product B", ), ]; Item_List = [ Item( item_id:1, item_name:"Item 1", prod_id:2, ), Item( item_id:2, item_name:"Item 2", prod_id:2, ), Item( item_id:3, item_name:"Item 3", prod_id:1, ), ]; Item_Size_List = [ Item_Size( size_id:1, size_qty:10, packet_size:4 item_id:2, ), Item_Size( size_id:2, size_qty:5, packet_size:1 item_id:2, ), Item_Size( size_id:3, size_qty:4, packet_size:2 item_id:3, ), ];

如果我想知道此重量文件中存在哪些层,可以执行以下操作:

saved-weight.h5

这些是保存重量文件中存在的层

答案 1 :(得分:0)

没有您的数据或代码,很难提供更多详细信息。 为了演示访问h5数据的h5py方法,这是一个简单的示例,该示例创建一个h5文件,该文件包含1组和3个数据集。创建组和数据集后,有一个循环来打印数据集名称,形状和dtype。

import h5py, numpy as np
h5f=h5py.File('SO_54511719.h5','w')

ds_data = np.random.random(100).reshape(10,10)
group1 = h5f.create_group('group1')
group1.create_dataset('ds_1', data=ds_data)
group1.create_dataset('ds_2', data=ds_data)
group1.create_dataset('ds_3', data=ds_data)

print ('number of datasets in group:', len(group1))
for (dsname, dsvalue) in group1.items() :
    print ('for',dsname,':')
    print ('shape:',dsvalue.shape)
    print ('dtype:',dsvalue.dtype)

h5f.close()

输出看起来像这样:

number of datasets in group: 3
for ds_1 :
shape: (10, 10)
dtype: float64
for ds_2 :
shape: (10, 10)
dtype: float64
for ds_3 :
shape: (10, 10)
dtype: float64

答案 2 :(得分:0)

如果在提供的spyder中键入此代码,则说明您已安装Keras库。您将在h5.file中获得所有图层

from keras.models import load_model

classifier=load_model('my_model.h5')

classifier.summary()