全局平均池化层的作用(全局平均池化(Global Average Pooling))
最近看论文 ,看到了全局平均池化 ,之间见过这东西 ,但是没有仔细了解 ,今天学习一下 ,并记录下来 ,方便以后查阅 。
概念概述
出处:Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013.
定义:将特征图所有像素值相加求平局 ,得到一个数值 ,即用该数值表示对应特征图 。
目的:替代全连接层
效果:减少参数数量 ,减少计算量,减少过拟合
思路:如下图所示。假设最终分成10类 ,则最后卷积层应该包含10个滤波器(即输出10个特征图) ,然后按照全局池化平均定义,分别对每个特征图 ,累加所有像素值并求平均 ,最后得到10个数值,将这10个数值输入到softmax层中 ,得到10个概率值 ,即这张图片属于每个类别的概率值 。
在原文这样描述全局平均值池化:
作用
:如果要预测K个类别 ,在卷积特征抽取部分的最后一层卷积层 ,就会生成K个特征图 ,然后通过全局平均池化就可以得到 K个1×1的特征图 ,将这些1×1的特征图输入到softmax layer之后 ,每一个输出结果代表着这K个类别的概率(或置信度 confidence) ,起到取代全连接层的效果 。
优点: 和全连接层相比 ,使用全局平均池化技术,对于建立特征图和类别之间的关系 ,是一种更朴素的卷积结构选择 。 全局平均池化层不需要参数 ,避免在该层产生过拟合 。 全局平均池化对空间信息进行求和,对输入的空间变化的鲁棒性更强 。torch实现
import torch a = torch.rand([4,3,4,4]) a.size()输出:
torch.Size([4, 3, 4, 4]) b = torch.nn.functional.adaptive_avg_pool2d(a, (1,1)) # 自适应池化 ,指定池化输出尺寸为 1 * 1 b.size()输出:
torch.Size([4, 3, 1, 1])参考资料
Global Average Pooling Layers for Object Localization
Comparison of the fully connected layer and global average pooling layer.
全局平均池化(Global Average Pooling)
pytorch 学习 | 全局平均池化 global average pooling 实现 和作用优点解析
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!