Python 图层max_Poolig2D_5的输入0与该图层不兼容

Python 图层max_Poolig2D_5的输入0与该图层不兼容,python,tensorflow,keras,Python,Tensorflow,Keras,当我尝试训练我的模特时,我 ValueError: Input 0 of layer max_pooling2d_5 is incompatible with the layer: expected ndim=4, found ndim=5. Full shape received: (None, None, 180, 180, 16) 我的图像形状是(32、180、180、3),是4维的。我也在洗牌和批处理我的训练数据集:train\u ds=train\u ds.shuffle(100)

当我尝试训练我的模特时,我

 ValueError: Input 0 of layer max_pooling2d_5 is incompatible with the layer: expected ndim=4, found ndim=5. Full shape received: (None, None, 180, 180, 16)
我的图像形状是
(32、180、180、3)
,是4维的。我也在洗牌和批处理我的训练数据集:
train\u ds=train\u ds.shuffle(100)。批处理(4)

网络

num_classes = 101

model = Sequential([
  layers.experimental.preprocessing.Rescaling(1./255, input_shape=(img_height, img_width, 3)),
  layers.Conv2D(16, 3, padding='same', activation='relu'),
  layers.MaxPooling2D(),
  layers.Conv2D(32, 3, padding='same', activation='relu'),
  layers.MaxPooling2D(),
  layers.Conv2D(64, 3, padding='same', activation='relu'),
  layers.MaxPooling2D(),
  layers.Conv2D(128, 3, padding='same', activation='relu'),
  layers.MaxPooling2D(),
  layers.Conv2D(256, 3, padding='same', activation='relu'),
  layers.MaxPooling2D(),
  layers.Flatten(),
  layers.Dense(128, activation='relu'),
  layers.Dense(num_classes, activation='softmax')
])

是什么导致了这种回溯?

您的原始图像似乎已经成批处理。如果批处理4D张量,它将输出形状为的张量:

(4, 32, 180, 180, 3)

我建议您不要第二次批处理图像。由于您使用的是目录中的
image\u dataset\u
batch\u size=32
,因此不需要使用
。批处理(4)
您的原始图像似乎已经批处理。如果批处理4D张量,它将输出形状为的张量:

(4, 32, 180, 180, 3)

我建议您不要第二次批处理图像。由于您使用的是目录下的
image\u-dataset\u
batch\u-size=32
,因此不需要使用
。batch(4)

这意味着从目录下的
image\u-dataset\u函数中删除
batch\u-size=32
参数,对吗?在这方面我是个新手。不,在这种情况下,你应该删除
batch(4)
而不是。虽然这解决了我的主要问题,
batch()
最初被建议是因为在训练模型时整体性能较低,但我已经尝试应用缓存,这很快导致“内存不足”异常,以及增加卷积层的数量。你还有什么可以用来加快培训过程的建议吗?我的数据集由101.000张图像组成。但批处理已经完成,大小为32。您的错误是批处理批处理这意味着从我的
image\u dataset\u目录
函数中删除
batch\u size=32
参数,对吗?在这方面我是个新手。不,在这种情况下,你应该删除
batch(4)
而不是。虽然这解决了我的主要问题,
batch()
最初被建议是因为在训练模型时整体性能较低,但我已经尝试应用缓存,这很快导致“内存不足”异常,以及增加卷积层的数量。你还有什么可以用来加快培训过程的建议吗?我的数据集由101.000张图像组成。但批处理已经完成,大小为32。你的错误是分批生产