【问题标题】:ValueError: Input 0 is incompatible with layer model_8: expected shape=(None, 898, 699, 1), found shape=(None, 699, 1)ValueError: Input 0 is in compatible with layer model_8: expected shape=(None, 898, 699, 1), found shape=(None, 699, 1)
【发布时间】:2021-11-01 13:32:38
【问题描述】:

我想将一个尺寸为 898 x 699 的数组重塑为预期的shape=(None, 898, 699, 1),这是卷积神经网络 (CNN) 所需的。我曾尝试使用命令np.expand_dims(model, axis=-1),但是当我将其结果传递给 CNN 时,它会返回此错误消息。

ValueError: Input 0 is in compatible with layer model_8: expected shape=(None, 898, 699, 1), found shape=(None, 699, 1)

我该如何纠正这个问题?

这是我的模型总结

Model: "model_8"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_12 (InputLayer)        [(None, 898, 699, 1)]     0         
_________________________________________________________________
conv2d_29 (Conv2D)           (None, 898, 699, 32)      320       
_________________________________________________________________
max_pooling2d_17 (MaxPooling (None, 449, 350, 32)      0         
_________________________________________________________________
conv2d_30 (Conv2D)           (None, 449, 350, 32)      9248      
_________________________________________________________________
max_pooling2d_18 (MaxPooling (None, 225, 175, 32)      0         
_________________________________________________________________
conv2d_transpose_18 (Conv2DT (None, 450, 350, 32)      9248      
_________________________________________________________________
conv2d_transpose_19 (Conv2DT (None, 900, 700, 32)      9248      
_________________________________________________________________
conv2d_31 (Conv2D)           (None, 900, 700, 1)       289       
=================================================================
Total params: 28,353
Trainable params: 28,353
Non-trainable params: 0
_________________________________________________________________

【问题讨论】:

    标签: python tensorflow deep-learning neural-network reshape


    【解决方案1】:

    您的输入层与您提供给模型的数据的形状不兼容。数据样本的大小为 (None, 699, 1)(其中 None 是批次维度)。也许你并不是说你的第一个维度是批量维度(我看到你也想要一个大小为 899 的维度)。因此,如果您使用 TF 数据集,您可以执行以下操作:

    dataset = dataset.batch(1)
    

    这将为数据集添加一个新维度,您将拥有一个与您的输入形状兼容的数据集形状 (None, 899, 699,1)。

    【讨论】:

    • 我使用的是 numpy 数组而不是 TF 数据集。如何使用 numpy 实现这种形状(无、899、699、1)?
    • 然后你可以这样做:x= x[np.newaxis, :] and y = y[np.newaxis, :]。其中 x 和 y 分别是输入和输出的 numpy 数组
    猜你喜欢
    • 2021-12-14
    • 2023-03-23
    • 2021-03-30
    • 2022-01-17
    • 2022-09-24
    • 2022-01-03
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多