动手学深度学习 | 池化层 | 20

池化层

卷积层对于位置是非常敏感的!

这里用检测垂直边缘作为例子,有的时候卷积对位置太敏感也不是好事,比如拍照的时候手抖之类的,边缘就不会那么整齐,所以有时候我们是需要一定程度的平移不变形的。

池化操作也是使用滑动窗口来取值。

上面实际上是没有padding的,所以大小不一致。其实应该是要padding的,让池化过后的feature_map大小保持不变。

最大池化可以降低卷积对位置敏感信息,比如上图经过池化操作,垂直边缘检测就可以容纳1像素的“错位”。

在多通道上,池化和卷积不一样在于,池化是每个通道做一个池化,但是并不会去做进行通道的融合,而卷积是会进行多通道融合的。(为什么池化层不进行多通道融合呢?因为多通道融合的事情可以交给卷积来做,那么池化层也就没有必要做了)

池化和卷积一样,也有padding和stride这两个超参数,但是不同的是池化层没有需要学习的参数。

最大池化层输出的每个窗口中最强的那个信号。

平均池化层就是输出每个窗口平均的信号强度,有一点点“抹平”的成分。

最大池化层和平均池化层都是非常常用的操作。

代码实现

QA

  1. 池化层一般都是放在卷积层的后面?可以放在卷积层的前面吗?

一般池化层都是放在卷积层的后面的,因为池化的意义就是为了降低卷积对位置的敏感度,使得像素附近的值都可以弄出来。

  1. 池化窗口有重叠与没有重叠影响如何?

沐神认为问题不大。

而且现在池化层用的是越来越少,当然这个只是我们还是要讲的。

  1. 为什么有的padding是一个数,有的padding是一个元组?

如果是一个数的话,表示长和宽都是一样的。如果是一个元组,则表示是分别赋值了不同的长宽。

  1. 池化层后计算量是不是减少了?

如果stride=2,那么计算量是减少一半的;但是如果加了padding,而且stride=1,那么其实计算量是没有改变的。

所以加了池化后,计算量可能减少,也可能不变。

  1. 为什么现在池化层用的越来越少了?

池化层的作用:

  • stride=2,这样可以减少一半的计算量。

但是其实卷积也可也进行stride=2的操作,所以其实这步可以在卷积中进行替代。

  • 减少卷积对位置的敏感度

其实现在我们会对图片大量做数据增强,我们会对图片进行移动,放大,缩小,扰动,使得卷积神经网络本身看到的数据就是有很多变化的,这里也降低了池化层的作用。

但是最后的最后,池化层还有一个作用就是把值变成一个单数字。

posted @ 2021-09-25 09:12  RowryCho  阅读(281)  评论(0编辑  收藏  举报