【问题标题】:Error with the input_shape expected to have 4 dimensions, but got array with shape (73257, 32, 32)input_shape 的错误预期有 4 个维度,但得到了形状为 (73257, 32, 32) 的数组
【发布时间】:2022-01-02 12:30:51
【问题描述】:

我有这种形状的灰度图像:x_train_grey.shape = (73257, 32, 32)

我这样指定第一层:

Flatten(input_shape=(32,32,1)' 因为我没有通过 batch_size 并且灰度图像只有 1 个通道。但我得到这个错误:

ValueError: Error when checking input: expected flatten_1_input to have 4 dimensions, but got an array with shape (73257, 32, 32)

我不明白什么是错的,请帮助。我知道这个问题已经被问过很多次了,但我找不到解决办法。

干杯!

【问题讨论】:

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


    【解决方案1】:

    问题可能在于您将数据传递给模型的方式。如果您的输入形状是(batch_size, 32, 32),请尝试以下操作:

    import tensorflow as tf
    
    grey_scale_images = tf.random.normal((64, 32, 32))
    
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Flatten(input_shape=(32,32,1)))
    
    print(model(grey_scale_images).shape)
    # (64, 1024)
    

    更新:input_shape=(32,32,1)input_shape=(32,32) 都可以使用。这取决于您如何将数据提供给模型:

    import tensorflow as tf
    
    grey_scale_images = tf.random.normal((64, 32, 32))
    Y = tf.random.normal((64, 1024))
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Flatten(input_shape=(32, 32, 1)))
    model.compile(loss='MSE')
    model.fit(grey_scale_images, Y)
    

    【讨论】:

    • 其实,简单地传递input_shape=(32,32) 就可以了,谢谢!
    • 我认为你错了...检查我更新的答案。
    • 谢谢,但我不太确定这是对的。我试过input_shape=(32,32,1),但它不起作用。你建议在通过之前需要做什么而不是input_shape=(32,32)?是否有一些规则说应该使用 (32,32,1) 而不是 (32,32) 或者没关系,正如你所说的两个选项都有效?
    • 检查我答案的底部。正如我所说,两者都有效,但这取决于您的数据是什么样的
    【解决方案2】:

    我也在学习这些东西,但我猜想“1”作为维度的条目数是不可能的。即使有可能,这也是一个开始。 “1”作为轴的大小对我来说没有意义。 还有其他人吗?

    【讨论】:

    • 谢谢,确实input_shape=(32,32) 似乎工作正常
    猜你喜欢
    • 2017-05-24
    • 2018-12-08
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多