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

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

  • word文档底色怎么改成白色(word文档底色怎么变成白色)

    word文档底色怎么改成白色(word文档底色怎么变成白色)

  • 糯米网为什么用不了微信红包(糯米网属于什么模式)

    糯米网为什么用不了微信红包(糯米网属于什么模式)

  • vivo手机自动清灰(vivo手机自动清理灰尘)

    vivo手机自动清灰(vivo手机自动清理灰尘)

  • 手机屏幕按压咯吱响(手机屏幕按压有响声怎么办)

    手机屏幕按压咯吱响(手机屏幕按压有响声怎么办)

  • 直播平台给主播限流的原因(直播平台给主播发工资交税了吗)

    直播平台给主播限流的原因(直播平台给主播发工资交税了吗)

  • 华为怎么下载谷歌商店(华为怎么下载谷歌地图)

    华为怎么下载谷歌商店(华为怎么下载谷歌地图)

  • Excel底纹在哪设置(excel中如何设置)

    Excel底纹在哪设置(excel中如何设置)

  • 导航条可以是文字链接和什么链接(导航条可以是文字链接和什么链接一起用)

    导航条可以是文字链接和什么链接(导航条可以是文字链接和什么链接一起用)

  • AirPods一代和二代外观区别(airpods一代和二代外观区别图片)

    AirPods一代和二代外观区别(airpods一代和二代外观区别图片)

  • 退换货的旺旺名是什么(退货写上购物旺旺名字是什么意思)

    退换货的旺旺名是什么(退货写上购物旺旺名字是什么意思)

  • oppo高性能模式有什么用(OPPO高性能模式在哪里)

    oppo高性能模式有什么用(OPPO高性能模式在哪里)

  • 电信的宽带账号和密码在哪里看(电信的宽带账号和密码怎么查)

    电信的宽带账号和密码在哪里看(电信的宽带账号和密码怎么查)

  • iphone11和xr屏幕边框一样吗(苹果xr和11的屏幕)

    iphone11和xr屏幕边框一样吗(苹果xr和11的屏幕)

  • 闲鱼不申诉会怎样(闲鱼15天不申诉会自动取消)

    闲鱼不申诉会怎样(闲鱼15天不申诉会自动取消)

  • word水平居中怎么设置(word水平居中怎么改动字体)

    word水平居中怎么设置(word水平居中怎么改动字体)

  • qq群收到礼物能提现吗(qq群里送礼物)

    qq群收到礼物能提现吗(qq群里送礼物)

  • 红米k20怎么用typec耳机(红米k20怎么用手机u盘)

    红米k20怎么用typec耳机(红米k20怎么用手机u盘)

  • 快手黄钻和快币的区别(快手黄钻和快币的比例)

    快手黄钻和快币的区别(快手黄钻和快币的比例)

  • p30pro夜景怎么使用(华为p30介绍夜景功能怎样调出夜视)

    p30pro夜景怎么使用(华为p30介绍夜景功能怎样调出夜视)

  • 华为平板m5怎样切换电脑模式(华为平板m5怎样截屏)

    华为平板m5怎样切换电脑模式(华为平板m5怎样截屏)

  • Win10更新补丁怎么删 删除win10已更新补丁的两种方法(win10更新补丁怎么关闭)

    Win10更新补丁怎么删 删除win10已更新补丁的两种方法(win10更新补丁怎么关闭)

  • linux DRBD编译安装与配置方法(linux编译驱动文件)

    linux DRBD编译安装与配置方法(linux编译驱动文件)

  • 个人退税需要多少天
  • 计提维保费
  • 运输发票抵扣联丢了
  • 电子税务局申报的财务报表在哪里查询
  • 个体工商户年度报告表怎么报
  • 个体行业哪些不需要交税
  • 工资3500该不该辞职
  • 增值税免税收入计入什么科目
  • 建安企业异地个税怎么交
  • 工程款开票备注栏
  • 耕地占用税和土地使用税的区别
  • 公允价值变动增加在借方还是贷方
  • 增值税专用发票校验码是哪个位置
  • 出售股票公允价值变动损益
  • 托收凭证的会计科目
  • 不锈钢材料开票
  • 没有单据怎么核算成本?
  • 网速检测工具
  • 下列项目中属于免征增值税的有
  • macos catalina与macos big区别
  • 初级考试判断题怎么扣分
  • windows11 怎么更新
  • 宽带连接错误代码691
  • 政府的奖励金计入哪个科目
  • 出口货物退税率为0,是否出口免税
  • islp2sta.exe - islp2sta是什么进程 有什么作用
  • php chr
  • 公司购买的大型安装设备什么时候转入固定资产
  • 临时工交押金会被扣吗
  • 建房转让协议书
  • php imagecopymerge
  • 财务专用章是干啥的
  • php关联数组和索引数组的区别
  • 项目资本金现金流量表现金流入
  • Thinkphp事务操作实例(推荐)
  • uniapp dom操作
  • 税务代开,开错了重开要多久?
  • 结存成本怎么计算先进先出法
  • 非限定性收入属于什么科目?
  • 为什么很多公司选择股票上市
  • python报错怎么办
  • 个税系统中的离职怎么填
  • 资产负债表跟利润表勾稽关系公式
  • 股东权益合计是所有者权益总和么
  • 应付账款的入账价值为未来偿还额
  • 检查记账凭证的内容包括
  • 支付结算规定的基本要求
  • 营改增之后是不是就没有营业税了
  • 材料自产自销的会计科目
  • 财务会计制度及核算软件备案怎么填写
  • 红字发票信息表在哪里查询
  • 计提工资发工资可做成一笔账吗
  • 农民专业合作社法
  • 金税系统怎么填写开票信息
  • 汽车保险费能不能不交
  • 代理出口业务会计分录
  • mysql二进制安装教程
  • unix系统采用什么结构
  • windows vista(service pack1)
  • ubuntu中运行c程序
  • ubuntu配置yum
  • ubuntu系统常用命令
  • windows8.1玩英雄联盟
  • 抢先体验的游戏可以退款吗
  • win10系统局域网共享打印机设置
  • windows媒体中心关不掉
  • Win10 Mobile Redstone新功能介绍
  • windows7 sp1升级包
  • win7电脑耳机插上还是外放
  • nodejs获取客户端设备信息
  • javascript基于什么的语言
  • javascript总结
  • jQuery扩展实现text提示还能输入多少字节的方法
  • javascript运用
  • pythonsetter
  • 更改税务购票员
  • 保险是不是跟车走
  • 江苏社保退工办理流程
  • 分国分项抵免法
  • 广东地方税务局领导班子名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设