首页 > 解决方案 > 当我保持每层 Maxpooling 时,如何克服我的输出形状减小的问题?

问题描述

我正在构建一维卷积神经网络 (CNN)。从许多来源我了解到,如果添加更多层,CNN 的性能会提高。然而,在每个池化层,我的输出形状比我的输入小 50%(因为我使用的池大小为 2)。这意味着一旦我的输出具有形状 1,我就无法添加更多层。

有没有办法克服这个“减少形状问题”,或者只是增加我的输入形状的问题?

标签: pythontensorflowkerasconv-neural-networkmax-pooling

解决方案


我正在构建一维卷积神经网络 (CNN)。从许多来源我了解到,如果添加更多层,CNN 的性能会提高。

这并非总是如此。它通常取决于您拥有的数据和您要解决的任务。

引用https://www.quora.com/Why-do-we-use-pooling-layer-in-convolutional-neural-networks

池化允许特征相对于彼此移动,从而即使在存在小的失真的情况下也能实现特征的稳健匹配。池化还有许多其他好处,例如: 减少特征图的空间维度。因此也减少了处理层次结构中较高的参数数量。这简化了整体模型的复杂性。

然后根据步幅、池大小和填充,您可能会自愿减少输出形状。

回到您的问题,如果您不希望您的形状减小,请考虑使用 strides=1 和 padding='same'。

(见https://keras.io/layers/pooling


推荐阅读