SwinTransformer

news2024/11/17 9:40:18

patch embedding

        (b,3,224,224)->(b,N,96) N:patch数量

        为每个stage中的每个Swin Transformer block设置drop_rate,根据设置[2,2,6,2],每个Swin Transformer block的drop_path为0~0.1等间距采样的12个小数,参数0.1也可以更改。还有个drop参数设为了0.,注意二者的用处。drop是MLP层以及注意力层的drop概率,drop_path是用于一个drop层的;还有个attn_drop是用于注意力层的。

参数分解

        已知embed_dim是96,stage1维持embed_dim=96,从stage1到stage4的dim分别是[96,192,384,768],原图尺寸是224,经过patch embedding长宽各下降4倍,[56,56,96]这是二维表示法,还有[56*56,96]这种token表示法,很多时候,我们操作的张量都是同一个,只不过进行的处理不同,经过的网络层类型(比如卷积和全连接层对输入数据形式的要求就不同)不同,对数据的形式要求不同,但是数据还是同一份数据。贯穿stage1到stage4数据分别是(56,56,96)、(28,28,192)、(14,14,384)、(7,7,768),这些数据的变化由PatchMerging层引起,包括尺寸的*2下采样和通道数的*2增加;对于每一个stage中的所有Swin Transformer block中的MSA都用相同头数,4个stage分别是[3,6,12,24],window_size和mlp_ratio分别恒定设为7和4.,恒定的意思是不会随着stage而改变,总共有3个PatchMerging层嵌入在stage和stage之间,stage中的操作是不会改变数据的尺寸的。

Swin Transformer block

        对输入feature map的分辨率和window_size做了比较,如果分辨率<window_size,那么就设置shift_size=0并且window_size分辨率的最小值(比如window_size=7,如果分辨率是[5,6]那么window_size就会被强制为5);shift_size必须小于window_size,最小值为0;Swin Transformer block包含这些层:Layer Norm层、注意力层、droppath层、Layer Norm层、MLP层,共5层。

注意力层

        head_dim是根据每个stage设置的dim和头数决定的,比如stage1,dim=96,heads=3,那么head_dim=96//3=32,这里是整除;scale就是注意力计算公式的分母部分:根号d;

relative_position_bias_table相对位置偏置表

        初始化为符合截断分布的数据,形状为((2*window_sizeh-1)*(2*window_sizew-1),num_heads),比如我的window_size=7,那么相对位置偏置表的形状为(169,3),以stage1三头注意力为例;torch.meshgrid([coords_h, coords_w])是将第一个序列数据coords_h中的每个元素横向重复,比如coords_h=[1,2],则结果为[1 1

                          2 2],将coords_w每个元素纵向重复,结果为[1 2

                                                                                                   1 2];torch.stack默认dim=0,并且是增加维度的stack操作;torch.flattern(input,start_dim,end_dim),比如我有张量(1,2,3,4,5,6),执行torch.flatten(x,start_dim=2,end_dim=3),结果为[1, 2, 12, 5, 6],也就是start_dim和end_dim都包含,并且相乘的维度就是flatten的维度,其余保持不变,这个可以改变形状,也可以改变维度,但张量还是哪个张量;我们知道每个stage为了保持dim不变,q/k/v的dim都应该和该层的stage保持一致,所以用一个线性层将dim扩大3倍,得到3*dim长度的token,其中每个dim分别代表q/k/v;比如我的输入是(56,56,96)经过这个线性层后变为了(56,56,288),q=k=v=(56,56,96),由于是三头注意力,将dim按照头数再划分,再经过reshape、permute操作q=k=v=(b,3,56*56,32)(注意这个维度顺序的表示非常重要,因为矩阵乘法和维度的关系很大),q和k的转置相乘得到attn=(b , 3 , 56*56 , 56*56),attn做个放缩再和v相乘,得到(b , 3 , 56*56 , 32)。

单头注意力和多头注意力分析

假如是单头注意力,那么q=k=v=(b,56*56,96),其实四维还是三维不影响矩阵乘法啊,因为矩阵乘法只考虑了最后两维,前面的保持不变。attn=(b , 56*56 , 56*56),最终得到(b,56*56 , 96),注意两个attn的区分,多头的有多套权重,而单头的只有一套,这有什么影响呢?就是一套权重可能是不准确的,我用多套权重,同时为了保持最后的dim和原始的dim一致,每套权重只作用于部分dim,这里就是dim // num_heads了。总而言之,头数影响的只是权重表的个数。

我们来看看引入到注意力里面的相对位置偏置是怎么做的

1.初始化相对位置偏置表

形状为((2*window_sizeh-1)*(2*window_sizew-1),num_heads)

2.生成相对位置索引

形状为(window_sizeh*window_sizew,window_sizeh*window_sizew),值在0~13*13-1之间,纵向找不出规律,横向就是从第一个数开始以1递减 

3.生成相对位置偏置

形状为(num_heads,window_sizeh*window_sizew,window_sizeh*window_sizew)

反正最终的(49,49)个相对位置编码是从截断分布中取出的,会有重复

           

        

      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端页面的生命周期

性能问题呈现给用户的感受往往就是简单而直接的&#xff1a;加载资源缓慢、运行过程卡顿或响应交互延迟等。而在前端工程师的眼中&#xff0c;从域名解析、TCP建立连接到HTTP的请求与响应&#xff0c;以及从资源请求、文件解析到关键渲染路径等&#xff0c;每一个环节都有可能因…

C语言编译器(C语言编程软件)完全攻略(第十一部分:VS2022使用教程(使用VS2022编写C语言程序))

介绍常用C语言编译器的安装、配置和使用。 十一、VS2022使用教程&#xff08;使用VS2022编写C语言程序&#xff09; 继《十、VS2022下载和安装教程&#xff08;图解版&#xff09;》之后&#xff0c;本节教大家如何用 VS2022 运行 C 语言程序。 例如&#xff0c;在 VS2022 中…

精致旅游公司Treker网页设计 html模板

一、需求分析 旅游网站通常具有多种功能&#xff0c;以下是一些常见的旅游网站功能&#xff1a; 酒店预订&#xff1a;旅游网站可以提供酒店预订服务&#xff0c;让用户搜索并预订符合其需求和预算的酒店房间。 机票预订&#xff1a;用户可以通过旅游网站搜索、比较和预订机票…

用js封装实现余额函数

要求: 1. 运行程序后, 浏览器显示输入确认框(prompt) 2. 第一个输入确认框提示输入银行卡余额 3. 第二个输入确认框提示输入当月食宿消费金额 4. 第三个输入确认框提示输入当月生活消费金额 5. 输入完毕后,在页面中显示银行卡剩余金额 6. 提示: 所有功能代码封装在函数内部&…

【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第3节-云产品流转配置

&#x1f31f;博主领域&#xff1a;嵌入式领域&人工智能&软件开发 本节目标&#xff1a;本节目标是进行云产品流转配置为后面实际的手机APP的接入做铺垫。云产品流转配置的目的是为了后面能够让后面实际做出来的手机APP可以控制STM32/MCU&#xff0c;STM32/MCU可以将数…

计算机基础知识——数据的表示概述

目录 1 进制转换 1.1 二进制、十进制和十六进制等常用数制及其相互转换 1.2 十进制和二进制之间转换 1.3 二进制数与八进制数、十六进制数之间的转换 2 码值&#xff1a;原码、反码、补码 2.1 原码 2.2 反码 2.3 补码 3 浮点数表示 3.1 浮点数的运算 1 进制转换 1…

基于闪电搜索算法优化的Elman神经网络数据预测 - 附代码

基于闪电搜索算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于闪电搜索算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于闪电搜索优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

Android 相机库CameraView源码解析 (四) : 带滤镜预览

1. 前言 这段时间&#xff0c;在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位&#xff0c;在项目前期&#xff0c;的确为我们节省了不少时间。 但随着项目持续深入&#xff0c;对于CameraView的使用进入深水区&#xff0c;逐…

Javaweb之Mybatis的基础操作之新增和更新操作的详细解析

1.4 新增 功能&#xff1a;新增员工信息 1.4.1 基本新增 员工表结构&#xff1a; SQL语句&#xff1a; insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time) values (songyuanqiao,宋远桥,1,1.jpg,2,2012-10-09,2,2022-10-…

十年磨一剑

随着不停的优化和改进&#xff0c;JRT开发已经接近尾声&#xff0c;计划过年时候低调发布JRT1.0&#xff0c;框架目标&#xff1a;只做信创下的医疗龙头而不是信创下的苟活着。 十年前&#xff0c;我从南京踏上去沈阳的火车&#xff0c;去东北参加三方协议的启航计划&#xff…

电极箔,预计到2025年市场规模将达到35亿美元

电极箔是一种关键性材料&#xff0c;广泛应用于太阳能电池、电动汽车电池、储能电池、5G基站电池等领域。随着新能源产业的迅猛发展&#xff0c;电极箔市场也在逐步壮大。下面将从全球市场和中国市场进行分析其发展趋势。全球市场分析&#xff1a; 在全球范围内&#xff0c;随着…

HarmonyOS4.0系统性深入开发14AbilityStage组件容器

AbilityStage组件容器 AbilityStage是一个Module级别的组件容器&#xff0c;应用的HAP在首次加载时会创建一个AbilityStage实例&#xff0c;可以对该Module进行初始化等操作。 AbilityStage与Module一一对应&#xff0c;即一个Module拥有一个AbilityStage。 DevEco Studio默…

深入理解Python中的二分查找与bisect模块

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

PCIe 6.0生态业内进展分析总结-2

3.PCIe 6.0协议分析仪 (1)Keysight Keysight是德科技在2023年6月份对外宣布&#xff0c;第一款支持PCIe 6.0协议验证调试工具。 Keysight PCIe 6.0架构解决方案具备以下特点&#xff1a; 分析PCIe 6.0技术设计的数据链路/事务层 支持所有PCIe技术速率——从2.5 GT/s至64 GT/…

一篇文章认识微服务中Eureka的原理和服务注册与发现

目录 1、认识Eureka 2、Eureka原理 2.1 和Dubbo架构对比&#xff1a; 2.2 三大角色 3、微服务常见的注册中心 3.1 Zookeeper 3.2 Eureka 3.3 Consul 3.4 Nacos 3.5 区别 Netflix 在设计Eureka 时&#xff0c;遵循的就是AP原则。 CAP原则又称CAP定理&#xff0c;指的…

STM32使用中断方式进行USART数据收发以及printf函数的重写

时间记录&#xff1a;2024/1/5 一、USART/UART介绍 协议介绍 &#xff08;1&#xff09;起始位&#xff0c;一位逻辑电平0表示 &#xff08;2&#xff09;数据位&#xff0c;8-9位&#xff0c;逻辑高低电平&#xff0c;一般使用8位 &#xff08;3&#xff09;校验位&#xff…

5分钟搞懂AI的可解释性

大家好啊&#xff0c;我是董董灿。 想象一下&#xff0c;如果有一天&#xff0c;有人跑过来突然告诉你&#xff0c;他搞懂了人类大脑记忆的运行机制&#xff0c;你会是什么反应&#xff1f; 你可能会和我一样&#xff0c;把他当做疯子。 因为我觉得这个课题太深奥了&#xf…

kali-Linux安装ARL灯塔教程以及timeout of 20000ms exceeded 的解决方法

FLAG&#xff1a;别和妈妈诉苦&#xff0c;她帮不上&#xff0c;也睡不着。 专研方向: docker&#xff0c;ARL资产灯塔系统 每日emo&#xff1a;天冷了&#xff0c;你还在坚持吗&#xff1f; 欢迎各位与我这个菜鸟交流学习 kali安装ARL灯塔教程 1.安装docker环境&#xff0c;…

【智慧零售】东胜物联蓝牙网关硬件解决方案,促进零售门店数字化管理

依托物联网&#xff08;IoT&#xff09;、大数据、人工智能&#xff08;AI&#xff09;等快速发展&#xff0c;数字化和智能化已成为零售企业的核心竞争力。更多的企业通过引入人工智能、大数据等先进技术手段&#xff0c;提高门店运营效率和服务质量。 某连锁咖啡企业牢牢抓住…

位运算 (运算符)

文章目录 位运算位运算概述位运算概览& 按位与&#xff08;AND&#xff09;| 按位或&#xff08;bitwise OR&#xff09;^ 按位异或&#xff08;bitwise XOR&#xff09;~ 按位非&#xff08;bitwise NOT&#xff09;<< 左移&#xff08;bitwise shift left&#xff…