Python 输入形状的卷积神经网络误差

Python 输入形状的卷积神经网络误差,python,machine-learning,neural-network,deep-learning,conv-neural-network,Python,Machine Learning,Neural Network,Deep Learning,Conv Neural Network,我有1000张28*28分辨率的图像。我将这1000张图像转换成numpy数组,并形成一个大小为(1000,28,28)的新数组。所以,虽然 使用keras创建卷积层时,输入形状(X值)指定为(1000,28,28),输出形状(Y值)指定为(1000,10)。因为我 VE1000示例为输入和10类输出 model = Sequential() model.add(Conv2D(32, kernel_size=(3, 3),activation='relu',kernel_initializer=

我有1000张28*28分辨率的图像。我将这1000张图像转换成numpy数组,并形成一个大小为(1000,28,28)的新数组。所以,虽然 使用keras创建卷积层时,输入形状(X值)指定为(1000,28,28),输出形状(Y值)指定为(1000,10)。因为我 VE1000示例为输入和10类输出

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),activation='relu',kernel_initializer='he_normal',input_shape=(1000,28,28)))
.
.
.
model.fit(train_x,train_y,batch_size=32,epochs=10,verbose=1)
因此,在使用
fit
函数时,检查输入时显示
ValueError:Error:预期conv2d_1_输入有4个维度,但得到的数组的形状(1000,28,28)
为错误。请帮助我的伙计们为CNN提供适当的输入和输出尺寸

代码:


您的numpy阵列需要第四维,常见的标准是使用第一维对样本进行编号,因此将(1000,28,28)更改为(1,1000,28,28)


您可以阅读更多信息。

您需要将输入更改为4维,将
通道设置为
1
:(1000,28,28,1),并且需要将卷积层的
输入形状更改为
(28,28,1)


从您的输入来看,您似乎正在使用tensorflow作为后端

在keras中,
输入_形状
应始终为三维。 对于tensorflow作为后端,模型的
输入\u形状

input_shape = [img_height,img_width,channels(depth)]
对于tensor flow后端,应该是

input_shape = [28,28,1]
并且
列车x
的形状应为

train_x = [batch_size,img_height,img_width,channels(depth)]
就你而言

train_x = [1000,28,28,1]

当您使用灰度图像时,图像的尺寸将为(图像高度,图像宽度),因此您必须为图像添加额外的尺寸,这将导致(图像高度,图像宽度,1)“1”表示图像的深度,对于灰度为“1”,对于rgb为“3”。

如果我将(1000,28,28)转换为(11000,28,28)然后
ValueError:输入数组的样本数应与目标数组的样本数相同。找到1个输入样本和1000个目标样本。
正在发生。您需要更改输入形状以获得单个样本。如果看不到代码的其余部分,我将无法讲述更多内容。
train_x = [batch_size,img_height,img_width,channels(depth)]
train_x = [1000,28,28,1]