【深度学习】global pooling (全局池化)

今天看SPPNet论文时,看到“global pooling”一词,不是很明白是啥概念。上网查了一下定义,在StackOverflow
上找到了答案:
这里写图片描述

具体回答如下:
这里写图片描述

说白了,“global pooling”就是pooling的 滑窗size 和整张feature map的size一样大。这样,每个 W × H × C W\times H\times C W×H×C 的feature map输入就会被转化为 1 × 1 × C 1\times 1\times C 1×1×C 输出。因此,其实也 等同于每个位置权重都为 1 / ( W × H ) 1/(W\times H) 1/(W×H) 的 FC层操作

等同于输入一个tensor,输出一根vector。

“global pooling”在滑窗内的具体pooling方法可以是任意的,所以就会被细分为“global avg pooling”、“global max pooling”等。

由于传统的pooling太过粗暴,操作复杂,目前业界已经逐渐放弃了对pooling的使用。替代方案 如下:

  • 采用 Global Pooling 以简化计算;

  • 增大conv的 stride 以免去附加的pooling操作。

tf实现

由于输入tensor的shape为[n, h, w, c],那么直接对第1、2维(h、w)用tf.reduce_mean求均值即可:

net = tf.reduce_mean(net, [1, 2], name='global_pool', keep_dims=True)

[1] What does global pooling do?
[2] Global average Pooling
[3] How do I do global average pooling in TensorFlow?
[4] tf.reduce_mean实现global average pooling(全局均值池化)

全局平均池化是一种常用的替代全连接层的方法,它可以用于图像分类和目标检测等任务中。在传统的卷积神经网络中,全连接层通常用于将卷积层提取的特征映射转换为最终的分类结果。然而,全连接层具有大量的参数,容易导致过拟合和计算复杂度高的问题。 相比之下,全局平均池化可以有效地减少参数数量和计算复杂度。它的原理是对每个特征图进行平均池化操作,将特征图的高度和宽度降为1,得到一个固定长度的特征向量。这样做的好处是保留了特征图中每个位置的信息,并且通过平均操作将特征图的维度降低到一个固定值,从而减少了参数数量。 全局平均池化的优点包括: 1. 减少参数数量:相比于全连接层,全局平均池化不需要大量的参数来进行特征转换,从而减少了模型的复杂度。 2. 防止过拟合:全局平均池化可以减少模型的参数数量,降低了过拟合的风险。 3. 提高计算效率:全局平均池化操作简单,计算效率高,适用于大规模的图像数据处理。 然而,全局平均池化也存在一些限制: 1. 丢失空间信息:全局平均池化将特征图的高度和宽度降为1,丢失了空间信息,可能对一些需要位置信息的任务不太适用。 2. 限制特征图的尺寸:全局平均池化要求输入的特征图尺寸固定,如果输入的特征图尺寸不一致,需要进行额外的处理。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值