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

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

  • iqooz5x有几个颜色

    iqooz5x有几个颜色

  • ipad网易云hd音效设置(平板网易云音效)

    ipad网易云hd音效设置(平板网易云音效)

  • 电脑微信记录可以迁至手机吗(电脑微信记录可以迁至苹果手机吗)

    电脑微信记录可以迁至手机吗(电脑微信记录可以迁至苹果手机吗)

  • 腾讯课堂怎么换背景(腾讯课堂怎么换微信号登录)

    腾讯课堂怎么换背景(腾讯课堂怎么换微信号登录)

  • xr是刷新率多少hz(xr是什么刷新率)

    xr是刷新率多少hz(xr是什么刷新率)

  • 换苹果手机怎么把照片传过去(换苹果手机怎么导入通讯录联系人)

    换苹果手机怎么把照片传过去(换苹果手机怎么导入通讯录联系人)

  • 苹果电脑桌面图标没了(苹果电脑桌面图片)

    苹果电脑桌面图标没了(苹果电脑桌面图片)

  • 小米ota卡有什么用(小米ota卡怎么样)

    小米ota卡有什么用(小米ota卡怎么样)

  • 华为手机顶部出现耳机样子怎么取消(华为手机顶部出现和汽车里程表一样)

    华为手机顶部出现耳机样子怎么取消(华为手机顶部出现和汽车里程表一样)

  • QQ辅助资料对的可是提示错误(qq辅助资料填对了)

    QQ辅助资料对的可是提示错误(qq辅助资料填对了)

  • 个人可以申请微信公众号吗(个人可以申请微信收款码吗)

    个人可以申请微信公众号吗(个人可以申请微信收款码吗)

  • 微信将对方拉入黑名单自己发信息对方收得到吗(微信将对方拉入黑名单又拉回来)

    微信将对方拉入黑名单自己发信息对方收得到吗(微信将对方拉入黑名单又拉回来)

  • 小米手环收不到微信消息(小米手环收不到电话提醒)

    小米手环收不到微信消息(小米手环收不到电话提醒)

  • 华为手机把对方电话拉黑还能收到短信吗(华为手机把对方拉黑怎么恢复)

    华为手机把对方电话拉黑还能收到短信吗(华为手机把对方拉黑怎么恢复)

  • 计算机功能是由cpu一条一条(计算机的功能是运算吗)

    计算机功能是由cpu一条一条(计算机的功能是运算吗)

  • 红米跟小米有什么区别(红米跟小米有什么关系)

    红米跟小米有什么区别(红米跟小米有什么关系)

  • 爱奇艺如何用qq登录(爱奇艺如何用手机号登录)

    爱奇艺如何用qq登录(爱奇艺如何用手机号登录)

  • ddr3和ddr3l有什么区别(ddr3与ddr3l哪个好)

    ddr3和ddr3l有什么区别(ddr3与ddr3l哪个好)

  • 小米9怎么升级miui11(小米9怎么升级miui12)

    小米9怎么升级miui11(小米9怎么升级miui12)

  • vivo怎么删除系统更新包(vivo怎么删除系统安装包)

    vivo怎么删除系统更新包(vivo怎么删除系统安装包)

  • 全民k歌vip怎么取消(全民k歌vip怎么开通)

    全民k歌vip怎么取消(全民k歌vip怎么开通)

  • 百度小程序如何制作(百度小程序如何关闭)

    百度小程序如何制作(百度小程序如何关闭)

  • 安卓beatsx怎么看电量

    安卓beatsx怎么看电量

  • 手机清除数据怎么恢复(不用的苹果手机怎么清除所有数据)

    手机清除数据怎么恢复(不用的苹果手机怎么清除所有数据)

  • 虎牙直播怎么放音乐(虎牙直播怎么放大屏幕)

    虎牙直播怎么放音乐(虎牙直播怎么放大屏幕)

  • install命令  复制文件和设置权限属性(复制/root/install.log到/tmp)

    install命令 复制文件和设置权限属性(复制/root/install.log到/tmp)

  • 个税年度汇算清缴开始时间
  • 附加税减免如何申报
  • 实收资本在利润表中怎么体现出来
  • 服务业税收包括什么
  • 个人房产租金收入如何纳税申报
  • 高温补贴能以别的形式发放吗
  • 对赌协议补偿款计入哪个科目
  • 怎么核算关联企业的借款费用?
  • 专票红冲后还需重新开票吗
  • 收到网站招聘费专票如何做账务处理?
  • 影视发行收入该如何做税收处理?
  • 应付账款不付处理分录如何写?
  • 企业增值税留抵退税新闻稿范文
  • 计算房产税时容积率怎么算
  • 账本印花税怎么缴纳
  • 出口退税的城建税和教育费附加怎么算
  • 显示发票离线,应当如何处理
  • 代开的专用发票附加税该怎么申报?
  • 管理费用的纳税调整
  • 投资退税申请应怎么写
  • 交易性金融资产和长期股权投资的区别
  • 上海中级会计报名入口
  • 变动成本主要包括
  • 股东分红是看未交税吗
  • 什么是保守型证券
  • 会计主要做些啥
  • 合伙企业财产的管理和使用规定
  • 如何用u盘装系统知乎
  • 电脑进不了系统怎么用u盘重装
  • linux命令使用
  • dwm.exe是啥
  • 定额征收的个体户怎么做账
  • 菲律宾薄荷岛疫情最新消息
  • 增值税达不到起征点账务处理
  • php 生成缩略图
  • php文件上传用什么请求方法
  • 合同内容和开票内容不一致
  • 销售金额环比
  • js示例
  • 金税盘中的发票修复是什么意思
  • 工资为0需要申报个税吗
  • 企业没有ca怎么登陆公积金账户
  • phpcms安装无法连接数据库服务器
  • sql随机数字
  • 酒店周转材料怎么摊销
  • 业务招待费进项税额转出会计分录
  • 高新企业申报条件有哪些
  • 一般纳税人购销合同印花税减免政策
  • 增值税要计入应收账款吗
  • 安装sqlserver2005警告iis
  • 补交土地税要交多少钱
  • 企业减资要交税嘛
  • 支付土地租金计入什么科目里面
  • 营改增后服务业账务处理
  • 机票开的个人的票是什么
  • 采购商品的运费会计分录
  • 福利补贴制度
  • mac安装surge
  • windows没有无线网络
  • centosuuid
  • windowspe安装win7
  • Linux/Ubuntu chmod命令详解使用格式和方法
  • CentOS yum php mcrypt 扩展安装方法
  • azipmd5.exe是什么
  • Linux httpd(apache)启动失败 解决办法
  • win8查看内存
  • 升级安装windows并保留文件
  • win8.1玩游戏卡
  • 在linux操作系统中
  • jquery插件使用教程
  • android仿qq聊天
  • 深入了解工作优势怎么回答
  • jquerygrid
  • js状态管理
  • jq easyui
  • 不同版本安卓控制台区别
  • jquery当前时间
  • js闭包实现
  • jquery mobile grid
  • 山东地税局网上办税平台
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设