python - Keras 功能 API : Pooling input does not give correct output shape

标签 python tensorflow keras deep-learning

我正在使用 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/

相关文章:

tensorflow - youtube推荐器如何训练video_id嵌入?

python - 如何加载用saved_model保存的tensorflow keras模型以使用预测函数?

python - 我的 CNN 总是得出 0 或 1,而不是百分比。为什么?

python - 如何通过域 django 传输 session 变量?

python - 修剪 pandas 中的每列值

python - Django - 从 View 中为当前用户准备对象

python - 在另一个号码中查找一个号码

python - 如何在keras中实现扩张卷积?

优化器的 Tensorflow 聚合方法

tensorflow - 调用 TensorFlow Keras 模型时 `training=True` 是什么意思?