首页 > 解决方案 > covolution2d 和 maxpolling2d 如何应用于 Keras 的输入?

问题描述

我对我将要谈论的所有内容都很陌生,所以问题可能太简单了。

提前感谢您的回答!

我的问题来自下图: keras 中的 cnn

为了更清楚:

  1. 对于第一个卷积,从1 x 28 x2825 x 26 x26,输入(1 层)通过过滤器(25 层)。因此,一层过滤了 25 次(对吗?)。
    但是对于第二个卷积,从25 x 13 x 13到,应用于输入50 x 11 x 11的过滤器的操作是什么?我对手术感到困惑。因为如果输入的每一层都经过过滤器,输出应该是。为什么输出还是50层?50 x 3 x 325 x 13 x 131250 x 11 x 1125 x 13 x 1350 x 3 x 3

  2. 对于第二个Max Pooling,如何MaxPooling2D()处理奇数大小的层?余数(11 mod 2)1。在上图中,从115,发生了1什么?

    另外,最大池化奇数输入层的常见操作是什么?

标签: machine-learningkerasconv-neural-networkconvolutionmax-pooling

解决方案


每个卷积应用于输入(前一层的输出)的所有通道,在这种情况下,一个过滤器(来自 50x3x3 Conv2d)应用于所有 25 个(来自 25x3x3 Conv2d)输入,然后结果将总结为给出一个 50Conv2d 的输出特征图,这将进行 50 次。是有关如何将过滤器应用于特征图的链接。经验法则是,如果下一个卷积有 N 个过滤器,它的输出也应该有 N 个特征图。

对于maxPooling,MaxPooling2D中填充的默认值;在您的情况下应用的是“有效|”,这意味着池函数将不包含内核大小中不能包含的值。在您的示例中,内核为 2,这意味着第 11 个元素未包含在操作中。是关于 padding="valid" 标志的一个很好的链接,第二个答案很好地展示了在此操作期间输入的某些元素是如何被遗漏的。


推荐阅读