参考:https://www.cnblogs.com/pprp/p/12456403.html
池化操作(Pooling)是CNN中非常常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维,池化操作通常也叫做子采样(Subsampling)或降采样(Downsampling),在构建卷积神经网络时,往往会用在卷积层之后,通过池化来降低卷积层输出的特征维度,有效减少网络参数的同时还可以防止过拟合现象。
主要功能有以下几点:
- 抑制噪声,降低信息冗余
- 提升模型的尺度不变性、旋转不变形
- 降低模型计算量
- 防止过拟合
一提到池化操作,大部分人第一想到的就是maxpool和avgpool,实际上还有很多种池化操作。
大部分pooling操作满足上图的模型,假设输入大小为ii, 输出大小为oo, kernel size简称kk, stride简称ss,满足以下公式:
o=⌊i−ks⌋+1o=⌊i−ks⌋+1
1. 最大/平均池化
最大池化就是选择图像区域中最大值作为该区域池化以后的值,反向传播的时候,梯度通过前向传播过程的最大值反向传播,其他位置梯度为0。
使用的时候,最大池化又分为重叠池化和非重叠池化,比如常见的stride=kernel size的情况