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

全局平均池化是在论文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)
上一篇 2022年4月18日 下午4:40
下一篇 2022年4月18日 下午4:40


相关推荐

  • 分别用N-S图和PAD表示下面的程序流程图_程序流程图,n-s图和pad图是

    分别用N-S图和PAD表示下面的程序流程图_程序流程图,n-s图和pad图是例题:某程序流程图如右图所示,请分别用 N-S图和PAD图表示。PAD图:N-S:盒图2.计算n阶乘的程序N-S图,PAD图

    2022年8月13日
    8
  • iptables DNAT详解

    iptables DNAT详解文章出处 http hi baidu com allenspace blog item cbba05f3b41c html cmtid 4259a264aa35 nbsp DNATtarget nbsp nbsp nbsp 这个 target 是用来做目的网络地址转换的 就是重写包的目的 IP 地址 如果一个包被匹配了 那么和它属于同一个流的所有的包都会被自动转换 然后就可

    2026年3月18日
    2
  • Kali Linux 安装过程 超详细(图文并茂,通用版)

    Kali Linux 安装过程 超详细(图文并茂,通用版)从Kali2020.1版本新功能说起,在大致读过版本发布说明后,再进行安装,就不会有太大问题,不会频繁出错。然后给出了多种镜像下载途径,包括历史所有版本的镜像,供读者自行选择下载。最后开始正式安装,内容也是十分详细,图文并茂。在文章最后,介绍了默认安装的情况下,如果获取large版本,获取更多工具。最后介绍如何更新Kali,可升级至Kali2020.2版本。

    2022年6月4日
    74
  • 修改win10 ntp服务器地址,修改win10 ntp服务器地址

    修改win10 ntp服务器地址,修改win10 ntp服务器地址修改win10ntp服务器地址内容精选换一换用户可以配置、修改和查看系统时区及NTP服务器相关信息。目前只支持使用操作系统为Linux的外部NTP服务器。以NTP服务器、DNS服务器的操作系统均为SUSE为例:登录Linux弹性云服务器。执行以下命令,切换至root用户。sudosu-sudosu-执行以下命令,编辑ntp.conf文件。vim/etc/ntp.confvim/et…

    2022年6月12日
    115
  • mybatis的拦截器_拦截所有来电怎么设置

    mybatis的拦截器_拦截所有来电怎么设置一、官网介绍MyBatis允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis允许使用插件来拦截的方法调用包括:Executor(update,query,flushStatements,commit,rollback,getTransaction,close,isClosed)拦截执行器的方法; ParameterHandler(ge…

    2025年10月14日
    4
  • linux dlopen 内存版本,dlopen函数详解

    linux dlopen 内存版本,dlopen函数详解Linux提供了一套API来动态装载库。下面列出了这些API:-dlopen,打开一个库,并为使用该库做些准备。-dlsym,在打开的库中查找符号的值。-dlclose,关闭库。-dlerror,返回一个描述最后一次调用dlopen、dlsym,或dlclose的错误信息的字符串。C语言用户需要包含头文件dlfcn.h才能使用上述API。glibc还增加了两个POSIX标准中没有的API:…

    2025年7月14日
    5

发表回复

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

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