ValueError: Input 0 of layer conv2d is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 180, 180)

ValueError: Input 0 of layer conv2d is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 180, 180)

这是我的代码,

我尝试在 CNN 网络下构建,我观察到这个错误,

model.add(Conv2D(8,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(16,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128,3,activation='relu',padding='same',input_shape=(180,180)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(254, activation='relu'))
model.add(Dense(9, activation='softmax'))

image_batch 是形状为 (32, 180, 180, 3) 的张量。这是一批 32 张形状为 180x180x3 的图像(最后一个维度指的是颜色通道 RGB)。 label_batch 是形状为 (32,) 的张量,这些是对应 32 张图像的标签

您需要配置 CNN 来处理形状的输入

model.add(layers.Conv2D(8, (3, 3), activation='relu', input_shape=(180, 180, 3)))

第一个维度被认为是batch_size。如果您指定 input_shape=(180,180) 那么这意味着 image_height=180, image_width=180batch_size=None 这意味着在模型拟合阶段可以给出任意数量的样本作为输入。