【问题标题】:How to fix ("ValueError: You are trying to load a weight file containing 16 layers into a model with 0 layers")如何修复(“ValueError:您正在尝试将包含 16 层的权重文件加载到具有 0 层的模型中”)
【发布时间】:2020-01-25 17:35:14
【问题描述】:

我正在像这样使用 vgg16:

model = VGG16()
data, labels = ReadImages(TRAIN_DIR)

vgg16 = VGG16()

model = Sequential()

#Converting VGG16 into Sequential model
for layer in vgg16.layers[:-1]:
    model.add(layer)

#Freezing all layers except last layer for transfer learning
for layer in model.layers:
    layer.trainable = False

#Adding custom softmax layer
model.add(Dense(1,activation='sigmoid'))

#Compiling our model
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])

model.fit(np.array(data), np.array(labels), batch_size=32, epochs=3)

model.save('model.h5')

当我尝试将此模型加载到另一个 py 文件中时..:

model = load_model('model.h5')

我已经尝试过 load_weights 并且也抛出了错误

...返回此错误:

ValueError: You are trying to load a weight file containing 16 layers into a model with 0 layers

我应该如何加载这个模型来进行预测?

版本:keras 2.2.4 tensorflow 1.14.0

【问题讨论】:

  • 首先检查 Keras 版本,如果您一定要使用旧版本,请尝试定义 input_shape。看here。

标签: python machine-learning image-processing keras vgg-net


【解决方案1】:

此问题已在较新版本的 TensorFlow 中得到解决

只需升级您的 TensorFlow: pip install tensorflow --upgrade

【讨论】:

  • 如果您确定新版本包含修复程序,则提供指向更改日志的链接以确认这一点会很有用。
【解决方案2】:

已知问题:https://github.com/keras-team/keras/issues/10417

共有三个选项: 1. 重新创建模型架构并使用“load_weights”。如果您只想进行预测,这很好。 2. 降级到 Keras 版本2.1.6. 3. 此链接https://github.com/keras-team/keras/issues/10417#issuecomment-435620108 提供了一种解决方法。我为 VGG16 改编了这个。这将更新 h5 文件。

def fix_layer0(filename, batch_input_shape, dtype):
    with h5py.File(filename, 'r+') as f:
        model_config = json.loads(f.attrs['model_config'].decode('utf-8'))
        layer0 = model_config['config']['layers'][0]['config']
        layer0['batch_input_shape'] = batch_input_shape
        layer0['dtype'] = dtype
        f.attrs['model_config'] = json.dumps(model_config).encode('utf-8')

fix_layer0('model.h5', [None, 224, 224, 3], 'float32')

loaded_model = load_model('model.h5')

【讨论】:

  • 对不起,我发布了错误的版本。我正在使用 load_model,它会返回该错误
  • 您使用的是哪个版本的 Keras/tensorflow?
  • keras 2.2.4 张量 1.14.0
猜你喜欢
  • 1970-01-01
  • 2020-06-17
  • 2019-06-12
  • 2022-07-23
  • 2019-01-03
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 2019-04-10
相关资源
最近更新 更多