17篇注意力機制PyTorch實現,包含MLP、Re-Parameter系列熱門論文
注意力(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 實現論文「Simplified Self Attention Usage」
- Pytorch 實現論文 「Squeeze-and-Excitation Networks---CVPR2018」
- Pytorch 實現論文「Selective Kernel Networks---CVPR2019」
- Pytorch 實現論文「CBAM: Convolutional Block Attention Module---ECCV2018」
- Pytorch 實現論文「BAM: Bottleneck Attention Module---BMCV2018」
- Pytorch 實現論文「ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks---CVPR2020」
- Pytorch 實現論文「Dual Attention Network for Scene Segmentation---CVPR2019」
- Pytorch 實現論文「EPSANet: An Efficient Pyramid Split Attention Block on Convolutional Neural Network---arXiv 2020.05.30」
- Pytorch 實現論文 「ResT: An Efficient Transformer for Visual Recognition---arXiv 2020.05.28」
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)