首页 > 解决方案 > 检查输入时出错:预期 conv2d_1_input 的形状为 (3, 32, 32) 但得到的数组的形状为 (32, 32, 3)

问题描述

我想为 cifar10 数据集训练 CNN,但在检查输入时出现此错误 Error: expected conv2d_10_input to have shape (3, 32, 32) but got array with shape (32, 32, 3)

这是我的 CNN 模型

epochs = 10 batch_size = 32

model.fit(X_train,Y_train,validation_data=(X_test,Y_test),epochs=epochs,batch_size=batch_size,verbose = 1)

标签: pythontensorflowkeras

解决方案


数据集似乎是(高度、宽度、通道)格式,但模型需要(通道、高度、宽度)格式。

我们可以使用tf.transpose()可以围绕张量的维度“切换”的功能在这些之间进行转换。

要将单个图像张量从 HWC 转换为 CHW,只需执行以下操作:

reshaped = tf.transpose(image_tensor, (2,0,1))

要转换批次,您可以执行以下操作:

reshaped = tf.transpose(images_tensor, (0,3,1,2))

推荐阅读