位置: 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)

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

  • 水滴筹怎么查询某个病人(水滴筹怎么查询捐款记录)

    水滴筹怎么查询某个病人(水滴筹怎么查询捐款记录)

  • 微信怎么同时登录两个号

    微信怎么同时登录两个号

  • 腾讯会议如何投票(腾讯会议如何投屏ppt)

    腾讯会议如何投票(腾讯会议如何投屏ppt)

  • 扩频通信的基本原理(扩频通信的主要特点)

    扩频通信的基本原理(扩频通信的主要特点)

  • iphone中间的黑色圆圈(苹果中间黑色)

    iphone中间的黑色圆圈(苹果中间黑色)

  • 充电宝有点轻微起鼓(充电宝有点轻微起鼓能带上飞机吗)

    充电宝有点轻微起鼓(充电宝有点轻微起鼓能带上飞机吗)

  • iphonex拉不出控制中心怎么办(苹果x控制栏怎么拉不出来)

    iphonex拉不出控制中心怎么办(苹果x控制栏怎么拉不出来)

  • 微信语音转文字失败怎么解决(微信语音转文字识别不出来怎么办)

    微信语音转文字失败怎么解决(微信语音转文字识别不出来怎么办)

  • 对工作表重命名的作用是什么(对工作表重命名时,名字内不允许有空格)

    对工作表重命名的作用是什么(对工作表重命名时,名字内不允许有空格)

  • 网络层的协议有哪些(属于网络层的协议有)

    网络层的协议有哪些(属于网络层的协议有)

  • wps如何退出全屏模式(wps全屏怎么退出)

    wps如何退出全屏模式(wps全屏怎么退出)

  • 荣耀9支持双电信卡吗(荣耀9支持双电吗)

    荣耀9支持双电信卡吗(荣耀9支持双电吗)

  • 天正t20v4.0支持什么版本cad(天正t20支持cad2018吗)

    天正t20v4.0支持什么版本cad(天正t20支持cad2018吗)

  • ipad ios9.0什么意思(ipad9.0版本)

    ipad ios9.0什么意思(ipad9.0版本)

  • 热点自动关闭怎么解决(热点自动关闭怎么解决oppo)

    热点自动关闭怎么解决(热点自动关闭怎么解决oppo)

  • 苹果手机怎么设置黑名单(苹果手机怎么设置门禁卡NFC)

    苹果手机怎么设置黑名单(苹果手机怎么设置门禁卡NFC)

  • word文档怎么样设双页显示(word文档怎么样可以横版竖版)

    word文档怎么样设双页显示(word文档怎么样可以横版竖版)

  • 手机怎么安装支付宝(手机怎么安装支付宝软件)

    手机怎么安装支付宝(手机怎么安装支付宝软件)

  • 淘宝账号怎么解除限制(淘宝账号怎么解绑闲鱼账号)

    淘宝账号怎么解除限制(淘宝账号怎么解绑闲鱼账号)

  • 苹果手机自动扣费怎么关闭(苹果手机自动扣款了可以退款吗)

    苹果手机自动扣费怎么关闭(苹果手机自动扣款了可以退款吗)

  • 不小心删掉了短信怎么恢复(不小心删掉短信快捷怎么找回来)

    不小心删掉了短信怎么恢复(不小心删掉短信快捷怎么找回来)

  • 旺旺号降权多久能恢复(旺旺号降权多久恢复可以查到是哪单被降了?)

    旺旺号降权多久能恢复(旺旺号降权多久恢复可以查到是哪单被降了?)

  • 一加5t闪充怎么设置(一加5t闪充怎么用)

    一加5t闪充怎么设置(一加5t闪充怎么用)

  • 华为mate20和p30的区别(华为mate20和华为p30的区分区别在哪里)

    华为mate20和p30的区别(华为mate20和华为p30的区分区别在哪里)

  • 多洛米蒂山上空的银河,意大利 (© Carlos Fernandez/Getty Images)(多洛米蒂徒步线路)

    多洛米蒂山上空的银河,意大利 (© Carlos Fernandez/Getty Images)(多洛米蒂徒步线路)

  • 工资延期发放最多不能超过多少天
  • 完税证明是可以抵扣吗
  • 个体定期定额怎么征税2023
  • 结转结余属于什么科目
  • 其它综合收益影响因素
  • 支付安全生产费怎么入账
  • 企业自建房屋卖给职工怎么做账务处理
  • 私人出租房子发票怎么开
  • 纳税人涉税信息查询
  • 一般纳税人企业要交哪些税
  • 融资租赁和融资性售后回租的区别
  • 公司设备没开票维修时配件能开票吗?
  • 维修材料费主要包括
  • 企业购车按揭产生的费用
  • 非贸易企业代扣代缴增值税和附加税如何做账?
  • 企业之间的往来款现金流
  • linux 判断语句
  • 分享php源码批量运行
  • php面试算法
  • 股权收购特殊性税务处理案例
  • win7纯净版系统之家
  • 已认证留抵待抵扣税额分录
  • 转让子公司产生的投资收益在合并层面是不是全部抵消
  • 如何使用wireshark抓取HTTP数据包?
  • Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
  • framework7教程
  • 增值税检查后的调账方法
  • 矿产资源补偿费计入管理费用吗
  • 买一赠一的会计处理与税务处理
  • 二手车销售发票的开具怎么处理?
  • framework4.0怎么打开
  • vue.js前端
  • php实现分页查询
  • ieee下载论文
  • 开发票的零税率和免税有什么区别
  • pinf命令
  • 员工安全培训费可以计入安全费用吗
  • 印花税与增值税有什么区别
  • 无偿划转的资产交什么税收
  • SQLite优化方法
  • 解决Dede5.6联动类型更改排序数字的BUG
  • 多交增值税可以抵扣吗
  • 设备安装收入税率
  • 开票信息修改
  • 企业生产经营发展
  • 开个人劳务票需要本人去吗
  • 残保金逾期申报了补报会有罚款和滞纳金吗?
  • 国家知识产权专利网
  • 公司费用怎么做账
  • 递延所得税资产怎么计算
  • 租赁房产税计税依据及计算方式是什么
  • 研发支出怎么结转到管理费用
  • 其他公司借款现金怎么办
  • 收到假钱怎么算损失
  • 负债类科目分录
  • 培训费用支出
  • 投资性房地产是固定资产吗
  • 房产预售什么时候开始
  • mysql按字节截取
  • win8系统怎么关闭自动更新系统
  • win8专业版系统更改电脑设置没反应
  • unix系统什么样子
  • win10添加闹钟
  • xp的兼容模式
  • linux怎么启动进程
  • kwconfig.exe
  • win7系统笔记本无线网络找不到
  • windows 10 正式版
  • js动态表格可修改表格数据
  • extjs4 treepanel动态改变行高度示例
  • android判断横竖屏
  • java中的锁机制
  • jquery给元素添加属性值
  • ubuntu20.04 python
  • javascript中的getElementById
  • jquery给div添加样式
  • android 5.1 WIFI图标上的感叹号及其解决办法
  • 苏州峰谷电怎么申请
  • 佛山市国家税务局狮山分局简介
  • 比亚迪车载物联网卡
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设