【问题标题】:Can't load VGG16 Model Weights无法加载 VGG16 模型权重
【发布时间】:2018-04-20 05:56:13
【问题描述】:

我正在使用此代码制作我自己的 VGG16 网络:

# build the VGG16 network
model = Sequential()
model.add(ZeroPadding2D((1, 1), input_shape=(3, img_width, img_height)))
model.add(Convolution2D(64, 3, 3, activation='relu', name='conv1_1'))
model.add(ZeroPadding2D((1, 1)))
model.add(Convolution2D(64, 3, 3, activation='relu', name='conv1_2'))
model.add(MaxPooling2D((2, 2), strides=(2, 2), dim_ordering="th"))
model.add(ZeroPadding2D((1, 1)))
model.add(Convolution2D(128, 3, 3, activation='relu', name='conv2_1'))
model.add(ZeroPadding2D((1, 1)))
model.add(Convolution2D(128, 3, 3, activation='relu', name='conv2_2'))
model.add(MaxPooling2D((2, 2), strides=(2, 2), dim_ordering="th"))

# load the weights of the VGG16 networks
f = h5py.File(weights_path)
for k in range(f.attrs['nb_layers']):
    if k >= len(model.layers):
    # we don't look at the last (fully-connected) layers in the savefile
        break
    g = f['layer_{}'.format(k)]
    weights = [g['param_{}'.format(p)] for p in range(g.attrs['nb_params'])]
    model.layers[k].set_weights(weights)
f.close()
print('Model loaded.')

但是当我调用我的方法时,它崩溃了:

ValueError:层权重形状(3L、3L、3L、64L)不兼容 提供权重形状 (64, 3, 3, 3)

我设置了K.set_image_dim_ordering('th'),但它仍然崩溃。请帮忙。

【问题讨论】:

  • 您能否指定您使用的是哪个版本的 Keras?
  • @hikaru '2.1.5' 不知道如何解决这个错误非常令人沮丧

标签: python keras jupyter-notebook


【解决方案1】:

如果你已经下载了vgg16_weights_tf_dim_ordering_tf_kernels weights,那么你应该使用'tf'排序

K.set_image_dim_ordering('tf')

【讨论】:

    猜你喜欢
    • 2018-12-24
    • 2020-04-17
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多