pytorch 学习 | 全局平均池化 global average pooling

版权声明:本文为CSDN博主「qyhyzard」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/CVSvsvsvsvs/article/details/90495254利用现有的poolingAPI实现全局平均池化的效果。首先我们简单理解全局平均池化操作。如果有一批特征图,其尺寸为[B,C,H,W],我们经过全局平均池化之后,尺寸变为[B,C,1,1]。也就是说,全局平均池化…

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

版权声明:本文为CSDN博主「qyhyzard」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CVSvsvsvsvs/article/details/90495254

 

利用现有的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])

 

 

如果要预测K个类别,在卷积特征抽取部分的最后一层卷积层,就会生成K个特征图
然后通过全局平均池化就可以得到 K个1×1的特征图,将这些1×1的特征图输入到softmax layer之后,每一个输出结果代表着这K个类别的概率(或置信度 confidence),起到取代全连接层的效果。
优点:
和全连接层相比,使用全局平均池化技术,对于建立特征图和类别之间的关系,是一种更朴素的卷积结构选择。
全局平均池化层不需要参数,避免在该层产生过拟合。
全局平均池化对空间信息进行求和,对输入的空间变化的鲁棒性更强

 

用GAP替代FC全连接层
有两个有点:一是GAP在特征图与最终的分类间转换更加简单自然;
二是不像FC层需要大量训练调优的参数,降低了空间参数会使模型更加健壮,抗过拟合效果更佳。

pytorch 学习 | 全局平均池化 global average pooling

 

 

https://www.cnblogs.com/hutao722/p/10008581.html

pytorch 学习 | 全局平均池化 global average pooling

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

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

(0)
上一篇 2022年4月11日 下午5:20
下一篇 2022年4月11日 下午5:20


相关推荐

  • 分布式id解决方案

    分布式id解决方案文章目录 1 分布式 id 实现方案 1 1 uuid1 2 数据库主键自增 1 3Redis 自增 1 4 号段模式 1 5 雪花算法 snowflake 1 5 1 百度 uid generator 1 5 2 美团 Leaf 所谓 id 就是能够用作唯一标识的记号 在我们日常的设计中 对于单体架构 我们一般使用数据库的自增 Id 来作为表的主键 但是对于一个分布式系统 就会出现 ID 冲突 所以对于分布式 ID 而言 也需要具备分布式系统的特点 高并发 高可用 高性能等特点 1 分布式 id 实现方案我们先看看常见的分布 id 解

    2026年3月19日
    2
  • activeMq与rabbitmq端口冲突

    activeMq与rabbitmq端口冲突activeMq 与 rabbitmq 端口冲突当安装 activeMq 时出现如下错误修改方法将安装目录下的 xml 配置修改下的端口号修改为 5673

    2026年3月16日
    2
  • partprobe源码分析

    partprobe源码分析partprobe 工具操作系统目录 usr sbin partprobe 程序安装包 parted 3 1 17 el7 x86 64 rpm 命令用法 partprobe 是用来告知操作系统内核分区表发生变化的工具 告知方式是请求内核重读分区表选项如下 d 不会让内核重读分区表 分区表发生变化后使用该命令 partproe d dev sdi 不会告知内核分区发生了变化 s 先让内

    2026年3月26日
    1
  • java线程通信的三种方式「建议收藏」

    java线程通信的三种方式「建议收藏」1、传统的线程通信。在synchronized修饰的同步方法或者修饰的同步代码块中使用Object类提供的wait(),notify()和notifyAll()3个方法进行线程通信。关于这3个方法的解释:wait():导致当前线程等待,直到其他线程调用该同步监视器的notify()方法或notifyAll()方法来唤醒该线程。notify():唤醒在此…

    2022年6月19日
    26
  • jar包反编译工具

    jar包反编译工具在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar。使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间。有的第三方工具,提供具体的使用说明和源代码,有时有的却不提供源代码,使用说明也不是很具体,这对我们使用就非常不方便。  有道是,知其然才知其所以然。有时候,我们…

    2022年7月8日
    29
  • JavaScript(1)高阶函数filter、map、reduce

    JavaScript(1)高阶函数filter、map、reduce前言需求:有这样一个数组[10,20,110,200,60,30,40]1.筛选出数组中小于100的元素2.将筛选出的每个元素的值x23.完成第2步之后,将数组中的所有元素加起来

    2022年8月7日
    8

发表回复

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

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