我正在使用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)? 如何检查重量和输出是否正确?
答案 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
是否w2
和first_layer_wts_kernel = w1[allKeys[0]]['kernel'][:]
first_layer_wts_bias = w1[allKeys[0]]['bias'][:]
中的相应权重相等。这可能需要一些调整。例如,如果图层是卷积的,那么您有两个权重数组(一个用于内核,另一个用于偏差)。您可以访问它们:
$this->load->view('your_view', $data);
您可以通过始终检查可用键来解决这个问题。