全局平均池化(全局池化代替全连接层)

全局平均池化是在论文NetworkinNetwork中提出的,原文中全局平均池化的作用和优点:思想:对于输出的每一个通道的特征图的所有像素计算一个平均值,经过全局平均池化之后就得到一个维度==类别数的特征向量,然后直接输入到softmax层作用:代替全连接层,可接受任意尺寸的图像优点:1)可以更好的将类别与最后一个卷积层的特征图对应起来(每一个通道对应一种…

大家好,又见面了,我是你们的朋友全栈君。

 

全局平均池化是在论文Network in Network中提出的,原文中全局平均池化的作用和优点:

å¨è¿éæå¥å¾çæè¿°

思想:对于输出的每一个通道的特征图的所有像素计算一个平均值,经过全局平均池化之后就得到一个 维度=C_{in}=类别数 的特征向量,然后直接输入到softmax层

 

作用:代替全连接层,可接受任意尺寸的图像

 

优点:1)可以更好的将类别与最后一个卷积层的特征图对应起来(每一个通道对应一种类别,这样每一张特征图都可以看成是该类别对应的类别置信图)

2)降低参数量,全局平均池化层没有参数,可防止在该层过拟合

3)整合了全局空间信息,对于输入图片的spatial translation更加鲁棒

 

图解:

全局平均池化(全局池化代替全连接层)

 

pytorch的实现:

pytorch中

没有专门的全局平均池化API,但是我们可以使用现有的pooling API实现这个效果

首先我们简单理解全局平均池化操作:
如果有一批特征图,其尺寸为 [ B, C, H, W], 经过全局平均池化之后,尺寸变为[B, C, 1, 1]
也就是说,全局平均池化其实就是对每一个通道图所有像素值求平均值,然后得到一个新的1 * 1的通道图

明白这个思路之后,我们就可以很容易实现全局平均池化了。

利用自适应平均池化就可以快速实现。或者自适应最大池化也可以,一样。

In [1]: import torch

In [2]: a = torch.rand([4,3,4,4])

In [3]: a.size()
Out[3]: torch.Size([4, 3, 4, 4])

In [4]: b = torch.nn.functional.adaptive_avg_pool2d(a, (1,1))  # 自适应池化,指定池化输出尺寸为 1 * 1

In [5]: b.size()
Out[5]: torch.Size([4, 3, 1, 1])

———————  
原文:https://blog.csdn.net/CVSvsvsvsvs/article/details/90495254 
 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125583.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 差分进化算法之Matlab实现「建议收藏」

    差分进化算法之Matlab实现「建议收藏」一、介绍差分进化算法是模拟自然界生物种群以“优胜劣汰,适者生存”为原则的进化发展规律而形成的一种随机启发式搜索算法。其保留了基于种群的全局搜索策略,采用实数编码,基于差分的简单变异操作和一对一的竞争生存策略,比遗传算法更简单。同时,差分进化算法独特的记忆能力使其可以动态的跟踪当前的搜索情况,及时调整搜索测量,因此具有较强的全局收敛能力。目前为止,差分进化算法已经成为一种求解非线性,不可微,多极…

    2025年8月7日
    2
  • java中的递归算法_java递归算法详解

    java中的递归算法_java递归算法详解Java中的递归算法虽然简单,但想要精通也是有着一定的难度的,本篇文章我们就来详细了解下递归算法。什么是递归?一般的说,递归算法是一种直接或间接地调用自身的算法。在程序中,递归算法能够使算法的描述简洁而且易于理解。递归分几类?递归通常分为两类,直接递归和间接递归:1、直接递归称为方法自身调用自己。2、间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。递归怎么实现实现?例://递归…

    2022年7月7日
    21
  • Altium Designer 13 只能选中当前层元器件

    Altium Designer 13 只能选中当前层元器件今天打开一个ad工程,发现pcb只能选中当前层原件,其它层原件都不能选中。如图所示:这个问题以前都没遇到过,百度后发现是视图配置里面设置了。首先右键pcb文件如下图所示:然后会弹出下面的窗口:在单层模式的位置可以设置如何显示。如果需要取消这些设置 可以按下快捷键shift+s

    2022年7月15日
    41
  • pycharm选哪个版本_pycharm版本区别

    pycharm选哪个版本_pycharm版本区别在pycharm中点击file->setting->project->projectInterpreter。 在出现的projectInterpreter右边的齿轮形状的图标点击add如下图,可以选择自己的版本

    2022年8月26日
    9
  • pycharm2022 2.3激活_在线激活2022.01.20

    (pycharm2022 2.3激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html0H…

    2022年3月31日
    48
  • JavaWeb项目为什么我们要放弃JSP?为什么要前后端解耦?为什么要动静分离?[通俗易懂]

    JavaWeb项目为什么我们要放弃JSP?为什么要前后端解耦?为什么要动静分离?[通俗易懂]以前的项目大多数都是java程序猿又当爹又当妈,又搞前端(ajax/jquery/js/html/css等等),又搞后端(java/mysql/oracle等等)。

    2022年4月28日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号