如何解决CNN中的输入形状问题?

时间:2020-07-20 08:15:24

标签: python machine-learning deep-learning cnn

我正在使用手写字符进行分类,并遵循我的CNN模型。 我已将图像转换为灰度并进行了二值化。 我该如何解决这个问题?

model = models.Sequential()

model.add(layers.Conv2D(filters=10,kernel_size=(3,3),padding = 'same', input_shape=(100, 100, 3),activation = 'relu'))
model.add(layers.Conv2D(30,(5,5),activation='relu'))

model.add(layers.MaxPooling2D(pool_size=(2,2)))

model.add(layers.Dropout(0.5))

model.add(layers.Conv2D(40,(3,3),activation='relu'))
model.add(layers.Conv2D(60,(3,3),activation='relu'))

model.add(layers.MaxPooling2D(pool_size=(2,2)))

model.add(layers.Flatten())

model.add(layers.Dense(180,activation='relu'))

model.add(layers.Dropout(0.5))

model.add(layers.Dense(100,activation='relu'))
model.add(layers.Dense(12,activation='softmax'))

错误

ValueError: Input 0 of layer sequential_41 is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [None, 100, 100]

1 个答案:

答案 0 :(得分:0)

在模型中,您已将输入形状声明为AttributeError: 'BlobProperties' object has no attribute 'download_blob' 。该模型期望一个3通道的图像,但是您已经说过您的输入数据是灰度的,这意味着它只有一个通道。这意味着您的输入数据的形状为(100,100,3),则形状仅为(100,100,1)。添加了(100,100)维度后,它就会变成batch_size,这就是您遇到的错误。

将输入形状更改为[None,100,100]应该可以解决问题。