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。你的错误是分批生产