Swin-Transformer中MSA和W-MSA模块计算复杂度推导(非常详细,最新)
在Swin-Transformer一文中,有这样两个公式,分别为:
1. Transformer中提出的Multi-head Self-Attention模块(MSA)
2. Swin-Transformer中提出的Window Multi-head Self-Attention模块(W-MSA)
两者计算量即计算复杂度分别为:
Ω ( M S A ) = 4 h w C 2 + 2 ( h w ) 2 C Ω(MSA) = 4hwC^2 + 2(hw)^2C Ω(MSA)=4hwC2+2(hw)2C
Ω ( W − M S A ) = 4 h w C 2 + 2 M 2 h w C Ω(W-MSA) = 4hwC^2 + 2M^2hwC Ω(W−MSA)=4hwC2+2M2hwC
一、MSA模块计算量
Transformer中提出的多头自注意力模块运算公式为
A t t e n t i o n ( Q , K , V ) = S o f t m a x ( Q K T d k ) V Attention(Q,K,V)=Softmax(\frac {QK^T} {\sqrt{d_k} \quad})V Attention(Q,K,V)=Softmax(dk QKT)V
运算过程以及计算量如下图:
(注:图中黑色字体为矩阵维度,橙色字体为计算量)
1. 首先,一张维度为H * W * C的图片,分别通过乘上一个CC的变换矩阵,分别变成QKV矩阵,维度仍为H * W * C。这样三个变换用到的计算量都为:HW * C^2,加起来为: 3 H W ∗ C 2 3HW*C^2 3HW∗C2
2. 然后做QK的转置,(HW * C) * (C * HW),得到的矩阵维度为HW * HW,计算量为: ( H W ) 2 ∗ C (HW)^2*C (HW)2∗C
3. 忽略根号dk和softmax的计算量,2中得到的 A矩阵 × V矩阵 ,结果的维度为HW * C,计算量为: ( H W ) 2 ∗ C (HW)^2*C (HW)2∗C
4. 因为是多头自注意力,所以在做完矩阵乘法后,需要矩阵拼接融合,做一个Proj映射,得到输出矩阵,维度和输入一样为HW * C,计算量为: H W ∗ C 2 HW*C^2 HW∗C2
5. 最后计算量加起来,为: Ω ( M S A ) = 4 h w C 2 + 2 ( h w ) 2 C Ω(MSA) = 4hwC^2 + 2(hw)^2C Ω(MSA)=4hwC2+2(hw)2C
二、W-MSA模块计算量
W-MSA与MSA总体的计算过程是一致的,区别在于:W-MSA的长宽不再是H和W,而是 窗 口 : M ∗ M 窗口: M*M 窗口:M∗M并且有 H M ∗ W M 个 窗 口 需 要 计 算 \frac{H}{M}*\frac{W}{M}个窗口需要计算 MH∗MW个窗口需要计算
所以它的计算量为:
( h M ∗ w M ) ∗ ( 4 M 2 C 2 + 2 M 4 C ) = 4 h w C 2 + 2 M 2 h w C (\frac{h}{M}*\frac{w}{M})*(4M^2C^2+2M^4C)=4hwC^2+2M^2hwC (Mh∗Mw)∗(4M2C2+2M4C)=4hwC2+2M2hwC
分析
从他们公式可以看出区别主要在于两个公式的后半部分
带一点数进去就可以看出W-MSA在计算量上比MSA少很多,比如以原文中的一些参数设定为例:HW都为56,C为96,M为7
前者MSA为: 2 ∗ ( 56 ∗ 56 ) 2 ∗ 96 = 1888223232 2*(56*56)^2*96=1888223232 2∗(56∗56)2∗96=1888223232
后者为W-MSA为: 2 ∗ 7 2 ∗ 56 ∗ 56 ∗ 96 = 29503488 2*7^2*56*56*96=29503488 2∗72∗56∗56∗96=29503488
二者相差了64倍。
论文名称:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
原论文地址: https://arxiv.org/abs/2103.14030
Swin-Transformer中MSA和W-MSA模块计算复杂度推导(非常详细,最新)相关推荐
- 【Swin Transformer】Win10使用Swin Transformer做目标检测 (使用自己的数据集 + 图解超详细)
文章目录 Swin Transformer 环境搭建 VS2019配置 conda虚拟环境 Pytorch安装 mmcv安装 查看匹配版本 安装mmcv mmdet安装 apex安装 下载权重 dem ...
- Idea中Maven控制的多模块项目运行不到最新的代码,写的代码不生效问题解决方法记录。
文章目录 写在前边 我的情况 解决办法 原因分析 写在前边 这个方法不一定适合所有情况,兄弟遇到这种情况首先需要保持冷静.可以先参考我们的情况是否一致,再决定是否看下去. 我的情况 idea版本:20 ...
- 【读点论文】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows通过窗口化进行局部MSA,sw-MSA融合信息
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows abstract 本文提出了一种新的视觉transfor ...
- 论文阅读 - Video Swin Transformer
文章目录 1 概述 2 模型介绍 2.1 整体架构 2.1.1 backbone 2.1.2 head 2.2 模块详述 2.2.1 Patch Partition 2.2.2 3D Patch Me ...
- 【CV】Swin Transformer:使用 Shifted Windows 的分层视觉 Transformer
论文名称:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 论文下载:https://arxiv.org/ ...
- OUC暑期培训(深度学习)——第六周学习记录:Vision Transformer amp; Swin Transformer
第六周学习:Vision Transformer & Swin Transformer Part 1 视频学习及论文阅读 1.Vision Transformer 原文链接:https://a ...
- 【CV】SwinIR:使用 Swin Transformer 进行图像恢复
论文名称:SwinIR: Image Restoration Using Swin Transformer 论文下载:https://arxiv.org/abs/2108.10257 论文年份:ICC ...
- [Transformer]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
Swin Transformer:基于移动窗口的层级视觉Transformer Abstract Section I Introduction Section II Related Work Sec ...
- Swin Transformer详解: Hierarchical Vision Transformer using Shifted Windows
这篇文章结合了CNN的归纳偏置,基于局部窗口做注意力,并且逐步融合到深层transformer层中构建表征,来达到扩大感受野,并且极大降低了计算量.是一个特征提取的主干网络,backbone.构建了一 ...
最新文章
- 向阿里学数字化转型,驱动业绩新增长
- python 免费课程-2019年10种免费的Python学习课程
- ALV中动态内表+行转化为列
- python display update用不了能用filp_疯狂的Pygame——使用python写游戏(yuyu版)——基础讲解部分——第一章...
- Python 可变数据类型和不可变数据类型 - Python零基础入门教程
- JAVA环境配置 ECLIPSE配置(转)
- webstorm apache设置 很方便啦
- 设计灵感素材网站:美工设计者必备
- 栈在表达式求值中的应用
- resiprocate 之repro使用
- RIA 应用程序模式
- svn开发环境代码合并到生产
- 【礼仪大赛常识】 女人宴会搭配必学的礼服文化
- 如何测试蓝牙设备的延时
- 为省手续费 上淘宝拍“生活费”
- 益智拼图APP隐私政策
- iPhone设置中的“开发者”选项
- SCRM营销: 关于微信个人号批量运营的干货分享!
- 蓝牙的配对和连接的建立过程
- c语言程序学生籍贯信息记录,C语言程序设计学生籍贯信息记录簿