全局平均池化(Global Average Pooling)

CSDN 2024-07-14 16:01:03 阅读 95

最近看论文,看到了全局平均池化,之间见过这东西,但是没有仔细了解,今天学习一下,并记录下来,方便以后查阅。

全局平均池化(Global Average Pooling)

概念概述torch实现参考资料

概念概述

出处: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实现

<code>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 实现 和作用优点解析



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。