zoukankan      html  css  js  c++  java
  • 动手学深度学习 | 池化层 | 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的操作,所以其实这步可以在卷积中进行替代。

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

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

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

  • 相关阅读:
    裂项相消
    斜率和问题
    抛物线与椭圆
    数列通项
    双曲线离心率
    优化问题
    单调性讨论
    角平分线
    隐零点
    自动任务调度系统
  • 原文地址:https://www.cnblogs.com/Rowry/p/15333409.html
Copyright © 2011-2022 走看看