卷积神经网路(cnn)中为什么要有池化层?
是因为目前计算机算力不够吗?
1) 池化层可以减少feature map的尺寸, 进而减少计算量. 当然stride大于1的卷积层也可以减少feature map的尺寸.
2) 池化层可以增加感受野. 不过卷积核尺寸大于1的卷积层同样也可以增加感受野.
3) 池化层可以带来特征的平移, 旋转等不变性.
4) (最大值等)池化层一般是非线性操作, 可以增强网路的表达能力. 激活层一般也是非线性的.
从1), 2), 4) 来看, 池化层在CNN中并不是必须的. 至于 3) 有没有其他层也可以实现, 并替代池化层, 则不好说.
1.提特征
2.提高模型的非线性
3.减少计算量(特征图变小了)
我觉得,使用池化层的原因主要是:1、减少大量的计算量。2、引入空间过滤器的层级结构,从而让连续卷积层的观察窗口变大,这样可以更加充分地获得信息。
池化层一方面是为了减少特征图的解析度,减少大量的计算量。另一方面平均池化和最大池化也能提取到一定的特征,这跟传统图像处理有一定关系。不过现在大部分使用stride=2的卷积来减少解析度,只有最后到全连接层前才使用一层全局池化
max pooling扩大感受野,增加非线性提高模型表达能力,但同时会导致特征丢失平移不变性
池化层进行的是下采样操作。主要是进行特征提取工作,使数据特征更加明显。同时也减少了计算量。
1.池化可以降低参数量。
2.池化(max-pooling、avg-pooling)可以一定程度做到旋转不变、仿射不变。
3.有池化操作,确实效果不错。
4.池化不是必须的,用stride替代pooling也是一个趋势。
实际上池化层也能加大感受域,有一定的仿射不变性。
一方面是池化层可以降低参数量,我觉得更重要的是可以获得高层次特征。
减少计算量,降低维度,提取更多有用的特征
为了增加感受野,不然基本维持不变
空域上稀疏
识别,分类等任务确实很有用
但你在生成模型引入,模型立马崩掉
还有relu的的作用也一样,引入稀疏,毕竟又不是生成得将各种信息都转换
去掉与识别无关的噪音,节省算力,并允许网路冗余更多识别相关的特征
对特征图降采样,提升计算速度
推荐阅读: