首页 文章

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

提问于
浏览
1

我正在使用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 回答

  • 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_wtsw2 中的相应权重是否相等 . 这可能需要一些调整 . 例如,如果图层是卷积的,那么您有两个权重数组(一个用于内核,另一个用于偏差) . 你可以访问它们:

    first_layer_wts_kernel = w1[allKeys[0]]['kernel'][:]
    first_layer_wts_bias = w1[allKeys[0]]['bias'][:]
    

    您可以通过始终检查可用密钥来解决这个问题 .

相关问题