Python 如何修复(“ValueError:您试图将包含16层的权重文件加载到包含0层的模型中”)

Python 如何修复(“ValueError:您试图将包含16层的权重文件加载到包含0层的模型中”),python,machine-learning,image-processing,keras,vgg-net,Python,Machine Learning,Image Processing,Keras,Vgg Net,我是这样使用vgg16的: model=VGG16() 数据、标签=读取图像(列车方向) vgg16=vgg16() 模型=顺序() #将VGG16转换为序列模型 对于vgg16中的层。层[:-1]: 模型。添加(图层) #冻结除最后一层外的所有层以进行迁移学习 对于model.layers中的图层: layer.trainable=错误 #添加自定义softmax层 model.add(密集型(1,激活='sigmoid')) #编译我们的模型 compile(优化器='adam',loss=

我是这样使用vgg16的:

model=VGG16()
数据、标签=读取图像(列车方向)
vgg16=vgg16()
模型=顺序()
#将VGG16转换为序列模型
对于vgg16中的层。层[:-1]:
模型。添加(图层)
#冻结除最后一层外的所有层以进行迁移学习
对于model.layers中的图层:
layer.trainable=错误
#添加自定义softmax层
model.add(密集型(1,激活='sigmoid'))
#编译我们的模型
compile(优化器='adam',loss='binary\u crossentropy',metrics=['accurity'])
model.fit(np.array(数据),np.array(标签),批大小=32,历代=3)
model.save('model.h5')
当我尝试将此模型加载到另一个py文件中时

model=load\u model('model.h5'))
我已经尝试加载权重并抛出了一个错误

。。。返回此错误:

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已知问题:

有三种选择:1。重新创建模型体系结构并使用“
load_weights
”。如果你只想做预测,这是很好的。2.降级至Keras版本
2.1.6.
3。此链接提供了一个变通方法。我将其改编为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')

新版本的TensorFlow解决了这个问题

只需升级TensorFlow:
pip安装tensorflow--升级

很抱歉,我发布了错误的版本。。我使用的是load_模型,它返回的错误是您使用的Keras/tensorflow的哪个版本?Keras 2.2.4 tensor 1.14.0首先检查Keras版本,如果您一定要使用旧版本,请尝试定义输入_形状。如果你确定一个新版本包含一个补丁,那么提供一个到变更日志的链接来确认这一点会很有用。