machine-learning - covolution2d 和 maxpolling2d 如何应用于 Keras 的输入?
问题描述
我对我将要谈论的所有内容都很陌生,所以问题可能太简单了。
提前感谢您的回答!
为了更清楚:
对于第一个卷积,从
1 x 28 x28
到25 x 26 x26
,输入(1 层)通过过滤器(25 层)。因此,一层过滤了 25 次(对吗?)。
但是对于第二个卷积,从25 x 13 x 13
到,应用于输入50 x 11 x 11
的过滤器的操作是什么?我对手术感到困惑。因为如果输入的每一层都经过过滤器,输出应该是。为什么输出还是50层?50 x 3 x 3
25 x 13 x 13
1250 x 11 x 11
25 x 13 x 13
50 x 3 x 3
对于第二个Max Pooling,如何
MaxPooling2D()
处理奇数大小的层?余数(11 mod 2)
为1
。在上图中,从11
到5
,发生了1
什么?
另外,最大池化奇数输入层的常见操作是什么?
解决方案
每个卷积应用于输入(前一层的输出)的所有通道,在这种情况下,一个过滤器(来自 50x3x3 Conv2d)应用于所有 25 个(来自 25x3x3 Conv2d)输入,然后结果将总结为给出一个 50Conv2d 的输出特征图,这将进行 50 次。这是有关如何将过滤器应用于特征图的链接。经验法则是,如果下一个卷积有 N 个过滤器,它的输出也应该有 N 个特征图。
对于maxPooling,MaxPooling2D中填充的默认值;在您的情况下应用的是“有效|”,这意味着池函数将不包含内核大小中不能包含的值。在您的示例中,内核为 2,这意味着第 11 个元素未包含在操作中。这是关于 padding="valid" 标志的一个很好的链接,第二个答案很好地展示了在此操作期间输入的某些元素是如何被遗漏的。
推荐阅读
- javascript - 如何在 node-fetch 中一次发送三个数据对象
- master-theorem - 大师方法:分而治之
- python - 使用 asyncio 信号量时,python 内存使用量不断增加
- node.js - Npm install ...在windows上安装依赖项时出错
- eclipse - 如何从现有项目创建 Eclipse 插件
- fluid-framework - 如何在没有实验包的情况下使用 routerlicious?
- python - 如何在 Python 3 中删除除一个特定文件夹之外的所有文件夹
- webpack - 如何使用带有 webpack、sass-loader 和 dart sass 的波浪号前缀导入 sass
- kdb - 在 Q 中,如何从 Kdb 表中获取最后 X 分钟的行?
- postgresql - 过滤日期,其中日期是上个季度的日期