我正在使用 Tensorflow 学习 Keras,我构建了一个非常简单的模型,该模型采用大小224x224x3
的输入图像并应用MaxPooling
,将其展平为一维向量和该一维向量是输出。
请注意,该模型仅用于教程目的。但是,当我看到模型的摘要(即 model.summary())时,池化层的输出与输入的大小相同。
代码:
in_shape = (224, 224, 3)
in_feats = Input(shape=in_shape)
pool = MaxPooling2D(pool_size=4, strides=1, padding='same')(in_feats)
flat = Flatten(name='flat')(pool)
model = Model(inputs=in_feats, outputs=flat)
# print summary
print (model.summary())
总结如下:
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 224, 224, 3) 0
_________________________________________________________________
pool (MaxPooling2D) (None, 224, 224, 3) 0
_________________________________________________________________
flat (Flatten) (None, 150528) 0
=================================================================
Total params: 0
Trainable params: 0
Non-trainable params: 0
_________________________________________________________________
您会注意到池化层的输出与输入的大小相同。可能是什么原因造成的?
最佳答案
这是一个愚蠢的错误。其结果取决于池化层使用的填充类型。 下面给出了正确的结果。
pool = MaxPooling2D(pool_size=4, strides=1, padding='valid')(in_feats)
您可以阅读有关填充的更多信息 here
关于python - Keras 功能 API : Pooling input does not give correct output shape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52745754/