Python 如何在没有负尺寸的情况下实现Conv2D和maxpooling2d

Python 如何在没有负尺寸的情况下实现Conv2D和maxpooling2d,python,tensorflow,machine-learning,keras,conv-neural-network,Python,Tensorflow,Machine Learning,Keras,Conv Neural Network,我正试图将Conv2D和Maxpooling添加到我的头部模型中,但我似乎无法做到这一点 headModel = baseModel.output headModel = (Conv2D(448,(3,3),input_shape=data.shape[1:]))(headModel) headModel = (MaxPooling2D(pool_size=(7,7)))(headModel) headModel = Flatten(name="flatten")(headM

我正试图将Conv2D和Maxpooling添加到我的头部模型中,但我似乎无法做到这一点

headModel = baseModel.output
headModel = (Conv2D(448,(3,3),input_shape=data.shape[1:]))(headModel)
headModel = (MaxPooling2D(pool_size=(7,7)))(headModel)
headModel = Flatten(name="flatten")(headModel)
headModel = Dense(128, activation="relu")(headModel)
headModel = Dropout(0.5)(headModel)
headModel = Dense(2, activation="softmax")(headModel)
在我添加conv2D之前,Maxpooling2D可以完美地工作,但是一旦我添加了conv2D,就会出现以下错误

因“{node max_poolig2d_6/MaxPool}}=MaxPoolT=DT_FLOAT,data_format=“NHWC”,explicit_paddings=[],ksize=[1,7,7,1],padding=“VALID”,步长=[1,7,7,1]”和输入形状:[?,5,5448]从5中减去7而导致的负维度大小。 在处理上述异常期间,发生了另一个异常: ValueError回溯(最近一次调用上次)

理想情况下,我希望有2个Maxpooling层和2个Conv2D层,所以我可以有类似的东西

多谢各位


您可以设置
padding='same'
,这将向 特征映射,从而保留特征映射的维度


当您试图在功能映射上执行卷积或最大池时,会出现异常(如问题中所述),这无法进一步减少。例如,功能映射的大小为
(2,2,32)
,则不能在其上执行内核大小为3的卷积(使用padding=
valid
)。

可以在
Conv2D
中设置
padding='same'
以保留输入功能映射的维度。padding='same'确实有效,谢谢,我在这里补充了一个答案。如果有帮助,就接受它。