位置: IT常识 - 正文

深度学习中的注意力机制模型及代码实现(SE Attention、CBAM Attention)

编辑:rootadmin
深度学习中的注意力机制模型及代码实现(SE Attention、CBAM Attention)

目录

常用的注意力机制模型

SE Attention

CBAM Attention

CBAM Attention 模型结构​

CBAM Attention 代码实现(Pytorch版):

 注意力机制加到网络的哪里合适


常用的注意力机制模型

推荐整理分享深度学习中的注意力机制模型及代码实现(SE Attention、CBAM Attention),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

深度学习中的注意力机制模型及代码实现(SE Attention、CBAM Attention)

常用的注意力机制多为SE Attention和CBAM Attention。它们基本都可以当成一个简单的网络。例如SE注意力机制,它主要就是由两个全连接层组成,这就是一个简单的MLP模型,只是它的输出变了样。所以,在我们把注意力机制加入主干网络里时,所选注意力机制的复杂程度也是我们要考虑的一个方面,因为增加注意力机制,也变相的增加了我们网络的深度,大小。

SE Attention

详见这篇博文

经典网络模型-SENet注意力机制_L888666Q的博客-CSDN博客_senet网络模型

CBAM Attention

CBAM(Convolutional Block Attention Module) 表示卷积模块的注意力机制模块。是一种结合了空间(spatial)和通道(channel)的注意力机制模块。一般情况下,相比于SEnet只关注通道(channel)的注意力机制可以取得更好的效果。其中CBAM的结构如下面两张图,由Channel Attention和 Spatial Attention这两个模块组成,其中Channel Attention模块和SENet是十分相似的,只是在池化上做了最大和平均池化,把FC层换成了卷积。至于Spatial Attention模块,这个更为简单,本质上就是一个卷积层。论文地址

CBAM Attention 模型结构CBAM Attention 代码实现(Pytorch版):import numpy as npimport torchfrom torch import nnfrom torch.nn import initclass ChannelAttention(nn.Module): def __init__(self,channel,reduction=16): super().__init__() self.maxpool=nn.AdaptiveMaxPool2d(1) self.avgpool=nn.AdaptiveAvgPool2d(1) self.se=nn.Sequential( nn.Conv2d(channel,channel//reduction,1,bias=False), nn.ReLU(), nn.Conv2d(channel//reduction,channel,1,bias=False) ) self.sigmoid=nn.Sigmoid() def forward(self, x) : max_result=self.maxpool(x) avg_result=self.avgpool(x) max_out=self.se(max_result) avg_out=self.se(avg_result) output=self.sigmoid(max_out+avg_out) return outputclass SpatialAttention(nn.Module): def __init__(self,kernel_size=7): super().__init__() self.conv=nn.Conv2d(2,1,kernel_size=kernel_size,padding=kernel_size//2) self.sigmoid=nn.Sigmoid() def forward(self, x) : max_result,_=torch.max(x,dim=1,keepdim=True) avg_result=torch.mean(x,dim=1,keepdim=True) result=torch.cat([max_result,avg_result],1) output=self.conv(result) output=self.sigmoid(output) return outputclass CBAMBlock(nn.Module): def __init__(self, channel=512,reduction=16,kernel_size=49): super().__init__() self.ca=ChannelAttention(channel=channel,reduction=reduction) self.sa=SpatialAttention(kernel_size=kernel_size) def forward(self, x): b, c, _, _ = x.size() residual=x out=x*self.ca(x) out=out*self.sa(out) return out+residual 注意力机制加到网络的哪里合适

注意力机制是一个独立的块,一般来说加在哪里都是可以的,但是,注意机制加入我们的网络中时,他是会影响我们网络的特征提取的,即它注意的特征不一定都是我们重要的特征。所以注意力机制加入我们网络的位置就比较重要了。当我我们使用一个注意力机制不知道加在哪里时可以去看看提出注意力机制作者的源代码。如CBAM注意力机制的源代码,加在了残差网络(以resnet18为例)的残差块后面。如果我们使用的网络不是注意力机制作者使用的网络,建议加在最后一个卷积层后面或者第一个全连接层前面。当然并不是每个注意力机制或者每个网络都适用,因为不同的注意力机制注意的地方可能都不一样,所以加到主干网络的地方可能也不一样。  

本文链接地址:https://www.jiuchutong.com/zhishi/295880.html 转载请保留说明!

上一篇:VsCode安装yarn:yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名(vscode安装python3)

下一篇:元宇宙、区块链 通俗易懂(元宇宙区块链数字货币)

  • 车保保险合同
  • 如何查商品税收分类编码
  • 建筑企业如何预交增值税
  • 购买财务软件可以抵税吗
  • 劳务报酬和工资薪金哪个税率高
  • 个税返还款要交增值税吗
  • 广告公司如何经营管理
  • 房地产企业分立会计处理及税务筹划案例解析
  • 房产开发后自用需要交土地增值税吗
  • 企业购买的雇主责任险
  • 职工的取暖补贴上税吗
  • 母子公司好处
  • 申请生育津贴需要提供什么材料
  • 收到进口增值税发票可以直接抵扣吗
  • 预付账款损失的账务处理如何编制呢?
  • 公司借别的公司的钱再借给别的公司
  • 异地预缴税款怎么做分录
  • 增值税专用发票怎么开
  • 融资租入的固定资产视为承租企业的资产体现了什么原则
  • 酒店固定资产明细表范本
  • 广告租赁公司
  • 小规模纳税人如何开专票
  • win11怎么把默认c盘改到d盘
  • 委托招聘服务费怎么算
  • windows11正式版好用吗
  • 升级鸿蒙系统会解除限制充电60
  • php img
  • thinkphp limit
  • win11开机后无法操作
  • win11怎么清理电脑垃圾
  • 小规模旅游业的会计分录怎么写
  • 企业重组税收政策汇编
  • 无私有住房证明怎么开
  • 库存现金总分类账怎么登记
  • 一维卷积padding
  • vue3使用高德地图
  • 交易性金融资产的入账价值
  • elementui表格自定义排序
  • pytorch的环境配置
  • css圆角边框弧度代码
  • 工业 智能
  • 其他收益算营业成本吗
  • 海外佣金需要交税吗
  • 关于我和鬼变成家人的那件事
  • 小微企业免征增值税优惠
  • 外贸企业收款有限额吗
  • 金税盘v2.0.41怎么扫码开票
  • 银行账户管理的直接责任人是共享中心核算会计
  • 税率免税的发票
  • 发票清单用什么纸打印出来
  • 单位财务报销制度和流程
  • 税率为0的发票能用吗
  • 还有什么服务啊
  • 小规模纳税人有几种税率
  • 什么叫总分类账簿
  • 自来水厂被收购,员工怎么办
  • 向非关联企业捐赠现金会计分录
  • 发票已认证次月退回
  • 货款收不回来了怎么做账
  • 工资扣员工的罚款入什么科目
  • 农民工专户里的钱能转出来吗
  • 费用报销票据规范要求
  • 城镇土地使用税百度百科
  • 代驾服务费属于哪个税收编码
  • 进项税转出的金额是什么
  • 债券发行后在市场上交易时是怎么确定交易价格的
  • 进料加工与来料加工
  • 在sp_executesql中使用like字句的方法
  • sql 查询优化
  • windows安装mysql8.0
  • win7系统设置自动关机
  • linux给文件赋予权限
  • 使用的拼音
  • dos改时间
  • bat中if语句的用法
  • js解析url参数的方法
  • 安卓开发viewpager的用法
  • 深入php面向对象、模式与实践第5版 电子书
  • java项目怎么变成web项目
  • android数据存储总结
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设