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

转载的文章链接:为什么使用全局平均池化层?关于globalaveragepoolinghttps://blog.csdn.net/qq_23304241/article/details/80292859在卷积神经网络的初期,卷积层通过池化层(一般是最大池化)后总是要一个或n个全连接层,最后在softmax分类。其特征就是全连接层的参数超多,使模型本身变得非常臃肿。之后,有大牛在NIN(NetworkinNetwork)论文中提到了使用全局平局池化层代替全连接层的思路,以下是摘录的一.

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

转载的文章链接:
为什么使用全局平均池化层?
关于 global average pooling
https://blog.csdn.net/qq_23304241/article/details/80292859

在卷积神经网络的初期,卷积层通过池化层(一般是 最大池化)后总是要一个或n个全连接层,最后在softmax分类。其特征就是全连接层的参数超多,使模型本身变得非常臃肿。
之后,有大牛在NIN(Network in Network)论文中提到了使用全局平局池化层代替全连接层的思路,以下是摘录的一部分资料:

global average poolilng。既然全连接网络可以使feature map的维度减少,进而输入到softmax,但是又会造成过拟合,是不是可以用pooling来代替全连接。
答案是肯定的,Network in Network工作使用GAP来取代了最后的全连接层,直接实现了降维,更重要的是极大地减少了网络的参数(CNN网络中占比最大的参数其实后面的全连接层)。Global average pooling的结构如下图所示:

在这里插入图片描述
由此就可以比较直观地说明了。这两者合二为一的过程我们可以探索到GAP的真正意义是:对整个网路在结构上做正则化防止过拟合。其直接剔除了全连接层中黑箱的特征,直接赋予了每个channel实际的内别意义。
实践证明其效果还是比较可观的,同时GAP可以实现任意图像大小的输入。但是值得我们注意的是,使用gap可能会造成收敛速度减慢。
但是,全局平均池化层比较全连接层,为什么会收敛速度变慢,它们对模型的训练有什么差异呢?我没有找到相关的文章的介绍。以下是发挥我自己的想象(很有可能是错误的)来理解的几个点:
1.全连接层结构的模型,对于训练学习的过程,可能压力更多的在全连接层。就是说,卷积的特征学习的低级一些,没有关系,全连接不断学习调整参数,一样能很好的分类。
此处是完全猜测,没有道理。
2.全局平均池化层代替全连接层的模型,学习训练的压力全部前导到卷积层。卷积的特征学习相较来说要更为”高级”一些。(因此收敛速度变慢?)
为什么这么想呢?我的理解是,全局平均池化较全连接层,应该会淡化不同特征间的相对位置的组合关系(“全局”的概念即如此)。因此,卷积训练出来的特征应该更加“高级”。
3. 以上的两个观点联合起来,可以推导出,全局平均池化层代替全连接层虽然有好处,但是不利于迁移学习。因为参数较为“固化”在卷积的诸层网络中。增加新的分类,那就意味着相当数量的卷积特征要做调整。而全连接层模型则可以更好的迁移学习,因为它的参数很大一部分调整在全连接层,迁移的时候卷积层可能也会调整,但是相对来讲要小的多了。
这3点完全是我个人的理解,希望有大牛留言批评指正。

global average pooling 与 average pooling 的差别就在 “global” 这一个字眼上。global与 local 在字面上都是用来形容 pooling 窗口区域的。 local 是取 feature map 的一个子区域求平均值,然后滑动这个子区域; global 显然就是对整个 feature map 求平均值了。
因此,global average pooling 的最后输出结果仍然是 10 个 feature map,而不是一个,只不过每个feature map 只剩下一个像素罢了。这个像素就是求得的平均值。 官方 prototxt 文件 里写了。网络进行到最后一个average pooling 层的时候,feature map 就剩下了 10 个,每个大小是 8 * 8。顺其自然地作者就把pooling 窗口设成了 8 个像素,意会为 global average pooling 。可见,global averagepooling 就是窗口放大到整个 feature map 的 average pooling 。

每个讲到全局池化的都会说GAP就是把avg pooling的窗口大小设置成feature map的大小,这虽然是正确的,但这并不是GAP内涵的全部。GAP的意义是对整个网络从结构上做正则化防止过拟合。既要参数少避免全连接带来的过拟合风险,又要能达到全连接一样的转换功能,怎么做呢?直接从feature map的通道上下手,如果我们最终有1000类,那么最后一层卷积输出的feature map就只有1000个channel,然后对这个feature map应用全局池化,输出长度为1000的向量,这就相当于剔除了全连接层黑箱子操作的特征,直接赋予了每个channel实际的类别意义。

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

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

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


相关推荐

  • idea2021最新激活码【最新永久激活】

    (idea2021最新激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~Z9…

    2022年3月22日
    110
  • forfiles 批处理删除文件

    forfiles 批处理删除文件1 用批处理文件删除当前目录下 7 天以前的扩展名为 bkf 文件 以当前系统时间为基准 示例 forfiles m bkf d 7 c cmd cdel file f 2 forfiles 自动删除 7 天前文件 以当前系统时间为基准 示例 forfiles p d test s m d 7 c cmd cdel path d test 换成你要的目录路径 d 7 指删除 7 天以前文件 forfiles p

    2025年6月17日
    3
  • next()nextLine()以及nextInt()的区别及用法

    next()nextLine()以及nextInt()的区别及用法next()、nextLine()、nextInt()作为scanner内置的方法,常常让人傻傻分不清楚,今天在这里记下他们的区别以及以此区别为出发点的用法:他们的区别在于对于空格的处理方式不同,以及返回值不同。使用nextLine()方法时,不将空格看做是两个字符串的间隔,而是看作字符串的一部分,返回时,它作为String类型一并返回:publicclassdemo{ pub

    2022年4月29日
    85
  • 有关软件设计师的报名问题及答案_软件设计师软考

    有关软件设计师的报名问题及答案_软件设计师软考下面是青岛人才市场的联系地址和电话 青岛市中高级人才市场海尔路178号889166728891667088916679 中国青岛人才大市场山东路171号856329738564389885636580 贵州路人才市场贵州路69号一楼咨询:82685619 城阳人才市场(人才交流中心)城阳正阳路222号87868756 胶南市人才交流服务中心新华路8

    2025年9月23日
    7
  • kali中间人攻击—-盗取账号和密码

    kali中间人攻击—-盗取账号和密码声明:本案例仅供个实验使用,并不作任何违法违纪等不正当,请遵守约定。1.原理解析在局域网内通信都是通过交换机及路由器连接外部网络的,对于局域网内大家都使用的一个协议为ARP协议,这个协议很奇特因为它是用来标定局域网内每台主机的MAC地址使用的,还有就是ARP协议也是用来规定网关的。  在我们下面要做的实验的过程中,kali系统会时刻向选定的机器发送“我是网关”,这样堵塞了真…

    2022年7月20日
    47
  • 服务器开机显示0x000000ca,使用电脑出现蓝屏代码0x000000CA故障该如何解决?[通俗易懂]

    服务器开机显示0x000000ca,使用电脑出现蓝屏代码0x000000CA故障该如何解决?[通俗易懂]最近有用户反应在使用电脑的时候出现了蓝屏,蓝屏代码0x000000CA,导致电脑无法使用,该如何去解决这种问题对于很多用户还真是束手无策,下面来看看豆豆解决这种故障问题吧。电脑出现蓝屏代码0x000000CA故障解决方法:1经查,这个蓝屏出错代码:0x000000ca原因:操作系统无法执行%1。2原因之一:如果在计算机上的高级配置和电源接口(ACPI)BIOS返回Microsoft…

    2022年10月8日
    1

发表回复

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

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