我正在进入卷积神经网络,并想为MNIST数据创建一个。每当我在CNN中添加卷积层时,都会出现错误:
输入0与conv2d_4层不兼容:预期ndim = 4,找到ndim = 5
我试图重塑X_Train数据集,但未成功 我尝试先添加一个展平层,但返回此错误:
输入0与conv2d_5层不兼容:预期ndim = 4,找到ndim = 2
mydf.dataframe = mydf.dataframe[['field1', 'field2']]
如果我注释掉卷积层,它会很好地工作(准确度> 95%),但是我正计划制作一个更复杂的神经网络,将来需要卷积,这就是我的出发点
答案 0 :(得分:0)
您的代码中有两个问题。
to_categorical
,另一次使用LabelBinarizer
。此处不需要后者,因此只需使用to_categorical
将标签编码一次即可。 2.-您输入的形状不正确,应为(28, 28, 1)
。
另外,您应该在卷积层之后添加一个Flatten
层,以便Dense
层正常工作。
答案 1 :(得分:0)
Keras正在寻找尺寸为4的张量,但它的ndim作为尺寸为2的张量。
首先请确保您在Conv2D层中的内核大小在括号内
model.add(Convolution2D(32, (3, 3), activation='relu', input_shape=(img_height, img_height, 1)))
第二,由于Conv2D层需要张量输入,因此需要重塑X_train和X_test变量。
X_train = X_train.reshape(-1,28, 28, 1) #Reshape for CNN - should work!!
X_test = X_test.reshape(-1,28, 28, 1)
model.fit(X_train, Y_train, epochs=3, verbose=2)
有关Conv2D的更多信息,请查看Keras文档here
希望这会有所帮助。