热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

torch检查有必要做吗,cudamemcpy2d

可以自适应的调整各通道的特征响应值,对通道间的内部依赖关系进行建模,主要为下面三个步骤:Squeeze:沿着空间维度进行特征压缩,将每个二维的特征通道变成一个数,是具有全局的感受野


可以自适应地调整每个通道的特征响应值,以建立通道之间的内部依赖关系模型。 主要有以下三个步骤。


Squeeze:通过沿空间维度进行特征压缩并将每个二维的特征通道改变为一个维度来具有全局感知范围。 进行全局平均轮询,可以得到大小的特征图,可以理解为该特征图具有全局感受野。


扩展:每个要素通道生成表示该要素通道重要性的权重。 使用全连接神经网络,对Sequeeze后的结果进行非线性变换。


re weight :将扩展输出的权重视为每个特征通道的重要性,并通过乘法作用于每个通道。


SE block在较低级别偏向于提取任务之间的共享特征,而在较高级别偏向于提取与任务相关的特征。


代码的实现大致如下。


classselayer(nn.module ) :def_init_ ) self,channel,reduction=16 ) :super ) selayer, self(_init_ ) self.avg _ pool=nn.adaptiveavgpool 2d (1) self.fc=nn.sequential (nn.linear ) ) chinear _=x.size(y=self.avg_pool ) x ).view ) b,c ) # squeeze操作y=self.fc(y ).view ) b,c,1,1 ) # FC是


classsqueezeblock(nn.module ) :def_init_ ) self,exp_size,divide=4.0 ) 3360super ) squeezeblock, self(_init_ ) ifdivide 1: self.dense=nn.sequential (nn.linear (exp _ size,int ) exp _ size/dize nn . # jing ) else : self.dense=nn.sequential (nn.linear (exp_size,exp_size )、#nn.prelu ) exp _ size ) nn width=x.size (out=torch.nn.functional.avg _ pool 2d ) x,kernel_size=-1 ) out=self.dense(out ) out=1 ) #out=hard_sigmoid ) out ) return out * x SE squeeze方式:我只是比较了max和avg,发现avg更好一些。 扩展方式:使用了ReLU、Tanh、Sigmoid,但可知Sigmoid较好,这里指的是第二个激活函数。 stage: resnet50具有多个阶段,实验表明se应用于所有阶段效果最好。 整合策略:发现将se放置在残差单元的前部,后部与残差单元平行放置,或最终放置在前部比较好。 # seres net 50 fromtorchimportnnclassselayer (nn.module ) :def_init_(self,channel, reduction=16 ) 3360SF self(_init_ ) ) self.avg _ pool=nn.adaptiveavgpool 2d (1) self.fc=nn.sequential ) nn nn.linear ) channel//reduction,channel,bias=False ),nn.Sigmoid ) ) defforward ) )。 _=x.size(y=self.AVG_pool ) x ).view ) b,c ) y=self.fc(y ).view ) b,c,1,1 ) returnx * y.eew inplanence reduction=16 ) :super(sebasicblock,self(_init_ ) ) self.conV1=conV3x3) planes,planes, stride(self.bn1=nn.batchnorm2d ) planes ) self.relu=nn.relu(inplace=true ) self.conV2=conV3x3) planes, 1 ) self.bn2=nn.batchnorm2d(planes ) self.se=selayer ) planes, reduction ) self.down sample=down sample self.self ) sample x ) : residual=xout=self.con v1 (x ) out=self.bn1 ) . downsampleisnotnone : residual=self.down sample (x ) out=residualout=self.relu ) out ) return out


推荐阅读
  • 5分钟攻克NDK开发中javah不能反编译的问题
    网上关于javah不能反编译出.h头文件的问题的资料本来就不多,而且大多似乎已经过时,给出的几种解决方法都没有切中要害。害得我苦苦找了一天,终于修成正果。特分享如下:这是我最终 ... [详细]
  • 最近版上有不少人在讨论图像处理的就业方向,似乎大部分都持悲观的态度。我想结合我今年找工作的经验谈谈我的看法。就我看来,个人觉得图像处理的就业还是不错的。 ... [详细]
  • Joda-Time 学习笔记
    一Jode-Time介绍任何企业应用程序都需要处理时间问题。应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径。使用JDK完成这项任务将非常痛苦和繁琐。既 ... [详细]
  • 1、什么是Struts?   Struts是基于MVC的轻量级框架,主要处理请求分发的问题,重心在控制层和表现层。   –基于MVC:实现了MVC,满足MVC的设计思想。   –轻 ... [详细]
  • 本文整理了Java中javax.media.opengl.GL.glFlush()方法的一些代码示例,展示了GL.glFlush()的具体用法 ... [详细]
  • 本文主要讲述以下几个方面:  1.元字符  2.贪婪匹配  3.实例1.元字符.匹配任意一个字符,除换行符^匹配以一个字符开头的字符串‘$’ ... [详细]
  • 1http:blog.csdn.netlfdfhlarticledetails8220729代码如下:imageView.startAnimation(welcomeAnimation) ... [详细]
  • 在C的世界里,语句块是封装的一种表现形式,而语句块大都以function的语法格式呈现。在使用function时,如何使得function ... [详细]
  • 第二章 基础技术
    一、运行单一实例通过创建系统命名互斥对象的方式来实现1、实现原理通过CreateMutex函数创建一个命名的互斥对象,如果对象创建成功,而且通过调用GetLastError函数获取 ... [详细]
  • 代码评审_实验代码评审
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了实验代码评审相关的知识,希望对你有一定的参考价值。 一、实验目的 ... [详细]
  • 内容:[J2SE5.0]用Executor灵活处理事件下发作者:AndrewThompson译者:xMatrix版权声明:任何获得Matrix授权的网站,转载时请务必以超链接形式标 ... [详细]
  • S3C6410LCD控制器1、LCD的种类。LCD(LiquidCrystalDisplay),即液晶显示器,是一种采用了液晶控制透光度技术来实现的彩色 ... [详细]
  • 在现有的应用开发过程中经常会有拍照或者录制视频的需求,关于普通的调用系统相机进行拍摄网上的总结已经很全面了,而当我们需要自定义拍照界面使用surface ... [详细]
  • ros:cartographer(二)整体介绍
    cartographer的doc中给出了这个图。现在我还没看过源码,所以只能猜测一些内容。待看完源码后,再详细介绍这个图。直观地说,左侧 ... [详细]
  • hrbust OJ13哥的机器人(利用叉乘判断拐向)
    ViewCode**利用叉乘判断拐向*auther:Try86*#include#includeusingnamespacestd;ch ... [详细]
author-avatar
春阳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有