为了账号安全,请及时绑定邮箱和手机立即绑定

Keras 输入形状抛出预期 4d 的值错误,但得到一个形状为 (60000, 28,28) 的数组

Keras 输入形状抛出预期 4d 的值错误,但得到一个形状为 (60000, 28,28) 的数组

饮歌长啸 2022-07-12 10:23:58
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()x_train = x_train.astype('float32') / 255x_test = x_test.astype('float32') / 255x_train.shape #Shape is (60000, 28, 28)然后模型确保输入形状为 28,28,1,因为 60k 是样本。model2 = tf.keras.Sequential()# Must define the input shape in the first layer of the neural networkmodel2.add(tf.keras.layers.Conv2D(filters=64, kernel_size=2, padding='same', activation='relu', input_shape=(28,28,1))) model2.add(tf.keras.layers.MaxPooling2D(pool_size=2))model2.add(tf.keras.layers.Dropout(0.3))model2.add(tf.keras.layers.Conv2D(filters=32, kernel_size=2, padding='same', activation='relu'))model2.add(tf.keras.layers.MaxPooling2D(pool_size=2))model2.add(tf.keras.layers.Dropout(0.3))model2.add(tf.keras.layers.Flatten())model2.add(tf.keras.layers.Dense(256, activation='relu'))model2.add(tf.keras.layers.Dropout(0.5))model2.add(tf.keras.layers.Dense(10, activation='softmax'))model2.compile(loss='categorical_crossentropy',             optimizer='adam',             metrics=['accuracy'])model2.fit(x_train,         y_train,         batch_size=64,         epochs=25,)我收到错误:ValueError:检查输入时出错:预期 conv2d_19_input 有 4 个维度,但得到了形状为 (60000, 28, 28) 的数组就像每次我尝试理解输入形状时一样,我会更加困惑。就像我在这一点上对 conv2d 和密集的输入形状感到困惑。无论如何,为什么这是错误的?
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

是的,这是正确的,参数input_shape准备取 3 个值。然而,该函数Conv2D需要一个 4D 数组作为输入,包括:

  1. 样本数

  2. 通道数

  3. 图像宽度

  4. 图像高度

而该函数load_data()是一个由宽度、高度和样本数量组成的 3D 数组。

您可以期望通过简单的重塑来解决该问题:

train_X = train_X.reshape(-1, 28,28, 1)
test_X = test_X.reshape(-1, 28,28, 1)

来自 keras 文档的更好定义:

输入形状:4D 张量,形状:(batch,channels,rows,cols)如果 data_format 是“channels_first”或 4D 张量,形状:(batch,rows,cols,channels)如果 data_format 是“channels_last”。


查看完整回答
反对 回复 2022-07-12
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

您缺少通道维度(值为 1),可以通过重塑数组轻松纠正:

x_train = x_train.reshape((-1, 28, 28, 1))
x_test = x_test.reshape((-1, 28, 28, 1))


查看完整回答
反对 回复 2022-07-12
  • 2 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信