ECANet(Efficient Channel Attention Network)是一种新颖的注意力机制,用于深度神经网络中的特征提取,它可以有效地减少模型参数量和计算量,提高模型的性能。

ECANet注意力机制是针对通道维度的注意力加权机制。它的基本思想是,通过学习通道之间的相关性,自适应地调整通道的权重,以提高网络的性能。ECANet通过两个步骤实现通道注意力加权:      1.提取通道特征             2.计算通道权重

用pytorch实现ECANet注意力机制:

import torch
import torch.nn as nn
import torch.nn.functional as Fclass ECANet(nn.Module):def __init__(self, in_channels, r=8):super(ECANet, self).__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.fc1 = nn.Linear(in_channels, in_channels // r, bias=False)self.relu = nn.ReLU(inplace=True)self.fc2 = nn.Linear(in_channels // r, in_channels, bias=False)self.sigmoid = nn.Sigmoid()def forward(self, x):b, c, _, _ = x.size()y = self.avg_pool(x).view(b, c)y = self.fc1(y)y = self.relu(y)y = self.fc2(y)y = self.sigmoid(y).view(b, c, 1, 1)return x * y
  • nn.AdaptiveAvgPool2d(1)用于将输入的特征图转换为1x1大小的特征图,以进行全局平均池化。
  • nn.Linear(in_channels, in_channels // r, bias=False)是线性层,将输入通道数降低到输入通道数的r分之一,其中r是一个超参数。
  • nn.ReLU(inplace=True)是激活函数,将线性层的输出通过非线性变换。
  • nn.Linear(in_channels // r, in_channels, bias=False)是另一个线性层,将通道数恢复到原始数量。
  • nn.Sigmoid()是一个非线性函数,将输出值限制在0到1之间。

将ECANet注意力机制添加到神经网络中:

import torch
import torch.nn as nn
import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 = nn.Conv2d(3, 64, kernel_size=3, padding=1)self.ecanet1 = ECANet(64)self.conv2 = nn.Conv2d(64, 128, kernel_size=3, padding=1)self.ecanet2 = ECANet(128)self.conv3 = nn.Conv2d(128, 256, kernel_size=3, padding=1)self.ecanet3 = ECANet(256)self.fc1 = nn.Linear(256 * 8 * 8, 512)self.fc2 = nn.Linear(512, 10)def forward(self, x):x = F.relu(self.conv1(x))x = self.ecanet1(x)x = F.max_pool2d(x, 2)x = F.relu(self.conv2(x))x = self.ecanet2(x)x = F.max_pool2d(x, 2)x = F.relu(self.conv3(x))x = self.ecanet3(x)x = F.max_pool2d(x, 2)x = x.view(-1, 256 * 8 * 8)x = F.relu(self.fc1(x))x = self.fc2(x)return x

注意力机制——ECANet(Efficient Channel Attention Network)相关推荐

  1. 论文阅读——ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

    ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 改进版通道注意力 from CVPR2020 期 ...

  2. 【注意力机制集锦】Channel Attention通道注意力网络结构、源码解读系列一

    Channel Attention网络结构.源码解读系列一 SE-Net.SK-Net与CBAM 1 SENet 原文链接:SENet原文 源码链接:SENet源码 Squeeze-and-Excit ...

  3. Attention注意力机制——ECANet以及加入到1DCNN网络方法

    原文:https://arxiv.org/abs/1910.03151 代码:https://github.com/BangguWu/ECANet 论文题目:ECA-Net: Efficient Ch ...

  4. 即插即用的轻量注意力机制ECA--Net

    论文名:ECA-Net: Effificient Channel Attention for Deep Convolutional Neural Networks 论文:https://arxiv.o ...

  5. Efficient Long-Range Attention Network for Image Super-resolution

    Efficient Long-Range Attention Network for Image Super-resolution Date: 2022/04/09 File Type: paper ...

  6. 第三周 序列模型和注意力机制(Sequence models Attention mechanism)

    第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 文章目录 **第三周 序列模型和注意力机制(**Sequence models &a ...

  7. 【注意力机制】BAM: Bottleneck Attention Module论文理解

    摘要   深度神经网络的最新进展是通过架构搜索来获得更强的表征能力.   瓶颈注意模块(BAM):   本研究关注深度神经网络中注意力机制的影响,提出了一个简单而有效的注意力模块,即瓶颈注意模块(BA ...

  8. 【CBAM 解读】混合注意力机制:Convolutional Block Attention Module

    摘要 本文提出了卷积块注意模块(CBAM),这是一种简单而有效的前馈卷积神经网络注意模块.在给定中间特征图的情况下,我们的模块沿着通道和空间两个不同的维度顺序地推断关注图,然后将关注图与输入特征图相乘 ...

  9. 异构图注意力网络(Heterogeneous Graph Attention Network)

    Heterogeneous Graph Attention Network 这篇论文将会发表在WWW 2019会议上. ABSTRACT GNN在深度学习领域表现出了强大的性能.但是,在包含不同节点和 ...

最新文章

  1. C#关于精确年龄的算法(精确到天)
  2. 接口性能测试实战小结
  3. windows消息机制和Linux,Windows消息机制初谈 (转)
  4. java_codereview随笔
  5. Jenkins cannot restart itself as currently configured
  6. LeetCode 112. Path Sum
  7. 【Hadoop Summit Tokyo 2016】基于Apache Spark的数据科学
  8. drools 将添加switch支持
  9. 谈Dreamweaver和Webstorm
  10. android 播放3gp音频,Android的Media(录音,播放音乐,播放视频等)
  11. 频谱仪的更改ip_频谱仪器如何使用?操作界面如何正确使用
  12. PPT实现单页点名的方式
  13. 第三次科技革命(一)
  14. 方程自己解(1)——物理信息神经网络(PINN)
  15. 不能打开淘宝单个商品页面
  16. matlab画图时特殊符号的输入
  17. 南京市六合区原副区长焦晓英一行莅临云创
  18. java的碳刀_骑行圈的十万个为什么—碳刀简述1
  19. docker项目切换(nginx)、重启shell 脚本
  20. java quartz 重启不了_java – 重新启动quartz调度程序而不会出现错误

热门文章

  1. SenticNet情感词典介绍
  2. Python练习题:1 用Python判断闰年
  3. SQLTracker跟踪工具用法
  4. 基于CarMaker的C-NCAP主动安全系统试验仿真(三)
  5. 打开anaconda-navigator一直卡在loading applications界面的解决方法总结
  6. c语言中1 3.0,1.4.1 先看Turbo C/C++ 3.0(3)
  7. C++RPG打怪小游戏
  8. ubuntu20.04 安装 WPS 2019
  9. 程序员如何给孩子取名字?
  10. OSChina 周四乱弹 ——心有鱼,而力不足