注意力(Attention)机制最早在计算机视觉中应用,后来又在 NLP 领域发扬光大,该机制将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息。
2014 年,Google DeepMind 发表《RecuRRent Models of Visual Attention》,使注意力机制流行起来;2015 年,Bahdanau 等人在论文《NeuRal MacHine TRanslation by Jointly learning to Align and TRanslate》中,将注意力机制首次应用在 NLP 领域;2017 年,Google 机器翻译团队发表的《Attention is All You Need》中,完全抛弃了 RNN 和 CNN 等网络结构,而仅仅采用注意力机制来进行机器翻译任务,并且取得了很好的效果,注意力机制也因此成了研究热点。
经过几年的发展,领域内产生了众多的注意力机制论文研究,这些工作在 CV、NLP 领域取得了较好的效果。近日,在 GitHub 上,有研究者介绍了 17 篇关于注意力机制论文的 PyTorch 的代码实现以及使用方法。

项目地址:https://Github.coM/xMu-xiaoMa666/ExteRnal-Attention-pyTorch
项目介绍
项目作者对注意力机制进行了分类,分为三个系列:Attention 系列、MLP 系列、ReP(Re-PaRaMeteR)系列。其中 Attention 系列中包含有大名鼎鼎的《Attention is All You Need》等 11 篇论文;最近比较热门的 MLP 系列包括谷歌的 MLP-MixeR、gMLP ,FACEbook 的 ReSMLP,清华的 RepMLP ;此外,ReP(Re-PaRaMeteR)系列包括清华等提出的 RepVGG、 ACNet。
Attention 系列的 11 篇 Attention 论文 PyTorch 实现方式如下:
PyTorch 实现论文「Beyond Self-attention: ExteRnal Attention USing Two LineaR LayeRs foR Visual Tasks—aRXiv 2020.05.05」 PyTorch 实现论文「Attention Is All You Need—NIPS2017」 PyTorch 实现论文…
MLP(多层感知机)系列中,包含 4 篇论文 PyTorch 实现方式,论文如下:
PyTorch 实现论文「RepMLP: Re-paRaMeteRizing Convolutions into Fully-connected LayeRs foR image RecognITion—aRXiv 2020.05.05」 PyTorch 实现论文「MLP-MixeR: An all-MLP ARchITectuRe foR Vision—aRXiv 2020.05.17」 PyTorch 实现论文「ReSMLP: FeedfoRwaRd netwoRks foR image claSSification wITh data-eFFicient tRAIning—aRXiv 2020.05.07」 PyTorch 实现论文「Pay Attention to MLPs—aRXiv 2020.05.17」
ReP(Re-PaRaMeteR)系列中,包含 2 篇论文 PyTorch 实现方式,论文如下:
PyTorch 实现论文「RepVGG: Making VGG-style ConvNets GReat AgAIn—CVPR2021」 PyTorch 实现论文「ACNet: StRengthening the KeRnel Skeletons foR PoweRful CNN via AsyMMetRic Convolution Blocks—ICCV2019」
总结来说,该项目共用 PyTorch 实现了 17 篇注意力机制论文。每篇论文包括题目(可直接链接到论文)、网络架构、代码。示例如下:
论文:「Beyond Self-attention: ExteRnal Attention USing Two LineaR LayeRs foR Visual Tasks」。
网络框架:

代码:
fRoM attention.ExteRnalAttention *iMpoRt* ExteRnalAttention iMpoRt Torch input=Torch.Randn(50,49,512) ea = ExteRnalAttention(d_Model=512,S=8) output=ea(input) pRint(output.shape)
