繁体   English   中英

ValueError:global_average_pooling2d 层的输入 0 与该层不兼容:预期 ndim=4,发现 ndim=2。 收到的完整形状:[无,128]

[英]ValueError: Input 0 of layer global_average_pooling2d is incompatible with the layer: expected ndim=4, found ndim=2. Full shape received: [None, 128]

我加载保存的 model,出于 f.netuning 的原因,我将分类层添加到加载的 model 的 output,所以这是我写的:

def create_keras_model():
    model = tf.keras.models.load_model('model.h5', compile=False)
    resnet_output = model.output
    layer1 = tf.keras.layers.GlobalAveragePooling2D()(resnet_output)
    layer2 = tf.keras.layers.Dense(units=256, use_bias=False, name='nonlinear')(layer1)
    model_output = tf.keras.layers.Dense(units=2, use_bias=False, name='output', activation='relu')(layer2)
    model = tf.keras.Model(model.input, model_output)
    return model

但我发现这个错误:

ValueError: Input 0 of layer global_average_pooling2d is incompatible with the layer: expected ndim=4, found ndim=2. Full shape received: [None, 128]

任何人都可以帮助我并告诉我这个错误是什么以及如何解决这个问题。 谢谢!

如果您共享model.h5架构或model.h5的最后一层,本可以回答得更好。

在您的情况下,输入维度为2 ,其中tf.keras.layers.GlobalAveragePooling2D()期望输入维度为4

根据tf.keras.layers.GlobalAveragePooling2D文档,tf.keras.layers.GlobalAveragePooling2D 层期望低于输入形状 -

输入形状:如果data_format='channels_last' :形状为(batch_size, rows, cols, channels)的 4D 张量。 如果data_format='channels_first' :形状为(batch_size, channels, rows, cols)的 4D 张量。

在此tensorflow 教程中,您将学习如何使用来自预训练网络的迁移学习以及微调对猫和狗的图像进行分类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM