如何知道Keras模型中是否加载了权重?

时间:2017-11-10 01:36:50

标签: python tensorflow keras

我正在使用keras for tensorflow 1.4。由于某些未知原因,当我尝试使用以下方法下载权重(vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5')时,我继续失败:

base_model = VGG16(weights='imagenet', include_top=False)

所以我从脚本中引用的链接手动下载了权重。  https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5

由于VGG16的重量不能设置为权重的路径(它必须是imagenet或None),我使用了代码行:

 base_model = VGG16(weights=None, include_top=False)
 path = os.path.join('weights','vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5')
 base_model.load_weights(path)

与base_model = VGG16相同(权重=' imagenet',include_top = False)? 如何检查重量和输出是否正确?

1 个答案:

答案 0 :(得分:1)

您可以在.h5文件中访问权重:

w1 = h5py.File('someFile.h5')
allKeys = w1.keys()
first_layer_wts = w1[allKeys[0]][:]  # assuming first layer has weights

在Keras模型中加载权重后,您可以按以下方式访问它们:

w2 = model.get_weights()

现在检查first_layer_wts是否w2first_layer_wts_kernel = w1[allKeys[0]]['kernel'][:] first_layer_wts_bias = w1[allKeys[0]]['bias'][:] 中的相应权重相等。这可能需要一些调整。例如,如果图层是卷积的,那么您有两个权重数组(一个用于内核,另一个用于偏差)。您可以访问它们:

$this->load->view('your_view', $data);

您可以通过始终检查可用键来解决这个问题。

相关问题