注意力模块

  • 通道(时间)注意力模块
  • 空间注意力模块

通道(时间)注意力模块

为了汇总空间特征,作者采用了全局平均池化最大池化两种方式来分别利用不同的信息。


输入是一个 H×W×C 的特征 F,

  1. 我们先分别进行一个空间的全局平均池化和最大池化得到两个 1×1×C 的通道描述。
  2. 接着,再将它们分别送入一个两层的神经网络,第一层神经元个数为 C/r,激活函数为 Relu,第二层神经元个数为 C。这个两层的神经网络是共享的。
  3. 然后,再将得到的两个特征相加后经过一个 Sigmoid 激活函数得到权重系数 Mc。
  4. 最后,拿权重系数和原来的特征 F 相乘即可得到缩放后的新特征。

    实现代码如下:
class ChannelAttention(nn.Module):def __init__(self, in_planes, rotio=16):super(ChannelAttention, self).__init__()#两个 1×1×C 的通道描述self.avg_pool = nn.AdaptiveAvgPool2d(1)self.max_pool = nn.AdaptiveMaxPool2d(1)# 两层的神经网络,1x1卷积实现通道降维与升维self.sharedMLP = nn.Sequential(nn.Conv2d(in_planes, in_planes // ratio, 1, bias=False), nn.ReLU(),nn.Conv2d(in_planes // rotio, in_planes, 1, bias=False))# 再将得到的两个特征相加后经过一个 Sigmoid 激活函数得到权重系数 Mcself.sigmoid = nn.Sigmoid()def forward(self, x):avgout = self.sharedMLP(self.avg_pool(x))maxout = self.sharedMLP(self.max_pool(x))return self.sigmoid(avgout + maxout)

空间注意力模块

在通道注意力模块之后,我们再引入空间注意力模块来关注哪里的特征是有意义的。

与通道注意力相似,给定一个 H×W×C 的特征 F’,

  1. 我们先分别进行一个通道维度的平均池化和最大池化得到两个 H×W×1 的通道描述,并将这两个描述按照通道拼接在一起。
  2. 然后,经过一个 7×7 的卷积层,激活函数为 Sigmoid,得到权重系数 Ms。
  3. 最后,拿权重系数和特征 F’ 相乘即可得到缩放后的新特征。


实现代码如下:

class SpatialAttention(nn.Module):def __init__(self, kernel_size=7):super(SpatialAttention, self).__init__()assert kernel_size in (3, 7), 'kernel size must be 3 or 7'padding = 3 if kernel_size == 7 else 1# avg_out和max_out 进行拼接cat后为两层,输出为一层self.conv1 = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False)# 激活函数self.sigmoid = nn.Sigmoid()def forward(self, x):avg_out = torch.mean(x, dim=1, keepdim=True)max_out, _ = torch.max(x, dim=1, keepdim=True)x = torch.cat([avg_out, max_out], dim=1)x = self.conv1(x)return self.sigmoid(x)

【深度学习】时间注意力模块与空间注意力模块相关推荐

  1. 图深度学习入门教程(六)——注意力机制与图注意力

    深度学习还没学完,怎么图深度学习又来了?别怕,这里有份系统教程,可以将0基础的你直接送到图深度学习.还会定期更新哦. 主要是基于图深度学习的入门内容.讲述最基本的基础知识,其中包括深度学习.数学.图神 ...

  2. Active Learning: 一个降低深度学习时间,空间,经济成本的解决方案

    北京 | 高性能计算之GPU CUDA课程11月24-26日3天密集学习  快速带你晋级阅读全文> 作者简介自述:I received the BSc degree with honors in ...

  3. 动手学深度学习(五十)——多头注意力机制

    文章目录 1. 为什么用多头注意力机制 2. 什么是多头注意力机制 3. 多头注意力机制模型和理论计算 4. 动手实现多头注意力机制层 小结 练习 1. 为什么用多头注意力机制 所谓自注意力机制就是通 ...

  4. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python模块、包和库)

    模块(Module) 模块是一个python文件(.py),拥有多个功能相近的函数或类. 便于代码复用,提高编程效率,提高了代码的可维护性. 避免函数名和变量名冲突. 包(Package) 为了避免模 ...

  5. 【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解

    前言 注意力机制一直是一个比较热的话题,其实在很早之前就提出了,我们在学习图像分类时在SENet就见到过(直通车:经典神经网络论文超详细解读(七)--SENet(注意力机制)学习笔记(翻译+精读+代码 ...

  6. 基于深度学习GPU+FPGA 双光谱视频处理模块

  7. 深度学习基础学习-注意力机制(计算机视觉中)

    在网上看到很多关于注意力机制的说明,下面自己总结一下.大佬绕道 下面放几个文章的链接 添深度学习中的注意力模型 计算机视觉中的注意力机制 图像处理注意力机制Attention汇总 注意力机制详述 注意 ...

  8. 深度学习与自然语言处理教程(6) - 神经机器翻译、seq2seq与注意力机制(NLP通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://www.showmeai.tech/article-d ...

  9. 【文献阅读笔记】之基于注意力机制的深度学习路面裂缝检测

    中文,计算机辅助设计与图形学学报,第 32 卷 第 8 期,2020 年 8 月. DOI: 10.3724/SP.J.1089.2020.18059 摘要: 为实现自动准确地检测路面裂缝, 提升路面 ...

最新文章

  1. JavaScript中的函数
  2. python练手小游戏_Python小游戏练手EMS员工项目自学者练习
  3. 【模型迭代】模型迭代
  4. 引领开源新风潮,阿里巴巴编程之夏第二期重磅来袭!
  5. java 文件删除异常 ut_【JAVA-UT】12、抛出了指定的异常吗?
  6. Sublime Text 的快捷方式的用法
  7. dynamodb java_使用Java更新DynamoDB项
  8. linux 去掉csv文件第一行,使用PowerShell删除文本文件的第一行
  9. Informix ODBC 设置
  10. C语言课程设计超级万年历
  11. 二层交换机、三层交换机、路由器的区别
  12. 应届毕业生零基础转行做程序员,怎么看?
  13. 微信小程序vue+nodejs+uniapp家装 装修装饰公司管理系统
  14. Eclipse最新安装教程
  15. 用户注册文件register.html的编写
  16. netfilter 子系统实现tcp断链
  17. AES算法逆向分析报告
  18. Headless Services无头服务
  19. 使用pip安装tensorflow-gpu | ubuntu系统
  20. 川核哆唯VR “元”教育|让教学活过来,让学习身临其境

热门文章

  1. 我是如何用最简单的前端技术揭示那些灰色产业背后的原理
  2. 关于工程导论的读书计划表
  3. win10计算机休眠设置在哪里,win10休眠选项在哪里设置?如何设置?
  4. Linux ln -s目录,Linux 中的 ln 命令
  5. 【tableau】presto驱动安装
  6. vue elementUI实现消息通知功能
  7. Cesium面积测量之思路解析加源码
  8. MathJax:微积分常用符号
  9. 全景图矫正 matlab,全景图的后期水平矫正的三种方法
  10. Multipathd Daemon was Unable to Set Options fast_io_fail_tmo or dev_loss_tmo Under UEK1 or RHCK