【问题标题】:Keras: Adaptive Max PoolingKeras:自适应最大池化
【发布时间】:2018-10-22 17:32:39
【问题描述】:

我正在研究 CNN,我有不同大小和纵横比的图像,在预处理步骤中调整大小和中心裁剪图像可能会丢失一些有价值的信息(特别是从边缘 - 右、左、上和下)。 我认为,更好的方法是应用自适应最大池(给出目标输出尺寸),以便在我们将图像传递到最后一层之前调整图像大小。 在 keras 中,我可以添加一个简单的最大池化层,但是在 keras 中有没有办法告诉/限制最大池化层的输出大小?例如:如果图像为 800x1520,但所需输出为 200x200,则应用最大池化并将图像大小调整为 200x200

【问题讨论】:

    标签: python machine-learning keras


    【解决方案1】:

    Keras 中没有“自适应池化层”,但有GlobalMaxPooling 层家族。它们可以处理未定义的输入形状(即一维可以是None),但始终具有相同的输出形状。

    但是,请注意,在单个批次中,所有输入都需要具有完全相同的维度。如果所有图像的大小都不同,这意味着您的批大小被限制为 1,这将使训练和推理变得非常缓慢。

    我建议您首先尝试查看当您将所有图像调整为相同大小时您的模型效果如何,或者如果您填充较小的图像以使其达到与最大图像相同的尺寸。这两个选项中哪个效果更好显然很大程度上取决于图像和您的特征检测架构,但由于上述限制,使用可变输入大小应该是最后一个选项。

    【讨论】:

    • 你能证明你为什么说“使用可变输入大小应该是最后的选择”吗?
    • 当然,如果我的回答不清楚,抱歉。理由是这样的:“在单个批次中,所有输入都需要具有完全相同的尺寸。如果所有图像的大小不同,这意味着您被限制为 1 的批次大小,这将使训练和推理变得痛苦减缓。”请不要犹豫,要求进一步澄清。
    猜你喜欢
    • 2017-06-16
    • 2017-12-02
    • 1970-01-01
    • 2018-08-19
    • 2017-01-23
    • 2022-10-30
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多