概述
Global Average Pooling,简称GAP,全局平均池化层
最早在 Network In Network 中提出(第3.2节)
认为是可以 替代 全连接层 的一种新技术。
在keras发布的经典模型中,可以看到不少模型甚至抛弃了全连接层,转而使用GAP,如下:
https://github.com/keras-team/keras-applications/blob/master/keras_applications/vgg16.py
传统方式
在常见的卷积神经网络中,卷积层负责对图像进行特征提取,在获取特征后,传统的方法是接上 全连接层(FC) 之后再进行 激活分类
缺点
参数量极大,有时候一个网络超过80~90%的参数量在最后的几层FC层中;
容易过拟合,很多CNN网络的过拟合主要来自于最后的fc层,因为参数太多,却没有合适的正则化(regularizer);过拟合导致模型的泛化能力变弱;
实际应用中非常重要的一点,paper中并没有提到:FC要求输入输出是fix的,也就是说图像必须按照给定大小,而实际中,图像有大有小,fc就很不方便;
GAP原理
用 GAP 替代 全连接层(FC)。
如上图,假设卷积层的最后输出是6 × 6 × 3 的三维特征图,GAP是求出 每一层特征图 的所有像素点的 平均值,
所有像素值的和/(6*6)
这样 3个特征图 就会输出 3个平均值,组成1*1*3的向量,再进行 softmax 计算
优点
GAP在特征图与最终的分类间转换更加简单自然;
不像 全连接层(FC) 需要大量训练调优的参数,降低了空间参数会使模型更加健壮,抑制 过拟合效果更佳。
keras api
https://www.malaoshi.top/show_1EF4BaBYUx44.html
感谢:
https://www.cnblogs.com/hutao722/p/10008581.html
https://blog.csdn.net/qq_30159015/article/details/79725520
