我有以 h5 格式保存的 VGG-16 权重。我想查看网络中的层数。我怎样才能做到这一点?
我尝试使用:
file = h5py.File(vgg16.h5)
在那之后,我检查了file.attrs
但在这一点之后我不知道使用哪个命令来查找网络中的层数。
我有以 h5 格式保存的 VGG-16 权重。我想查看网络中的层数。我怎样才能做到这一点?
我尝试使用:
file = h5py.File(vgg16.h5)
在那之后,我检查了file.attrs
但在这一点之后我不知道使用哪个命令来查找网络中的层数。
如果您只有权重而没有模型结构,则可以使用 keys() 方法获取该权重文件中的所有图层名称。
例如:我有一个重量文件:saved-weight.h5
如果我想知道这个权重文件中存在哪些层,您可以执行以下操作:
import h5py
file = h5py.File('saved-weight.h5')
layer_names = file.keys()
# output
layer_names = <KeysViewHDF5 ['add', 'bn_3', 'bn_5', 'bn_7',
'concatenate', 'conv_1', 'conv_2', 'conv_3',
'dropout', 'fc_8', 'fc_9',
'gru_10', 'gru_10_back', 'gru_11', 'gru_11_back',
'input_1', 'input_3', 'input_4', 'labels',
'lambda', 'lambda_1', 'lambda_2', 'lambda_3',
'maxpool_3', 'maxpool_5', 'model', 'permute', 'reshape']>
这些是保存的权重文件中存在的层
如果您在提供的 spyder 中键入此代码,则您已经安装了 Keras 库。您将获得 h5.file 中的所有图层
from keras.models import load_model
classifier=load_model('my_model.h5')
classifier.summary()
没有您的数据或代码,很难提供更多详细信息。为了演示访问 h5 数据的 h5py 方法,这里有一个简单的示例,它创建一个包含 1 个组和 3 个数据集的 h5 文件。创建组和数据集后,有一个循环来打印数据集名称、形状和 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