transformer源码

news/2024/7/19 11:09:15 标签: transformer, 深度学习, 人工智能

1.传统RNN网络

每一层都需要上一层执行完才能执行
在这里插入图片描述

1.1 自注意力

在一句话中找到it_指代的是什么,它的上下文语境是什么?这里是引用
self-attetion计算
这里是引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 multi-header机制

在这里插入图片描述
这里是引用
在这里插入图片描述

1.3 堆叠多层self-attention,相当于再一次卷积

在这里插入图片描述

1.4 位置信息编码

这里是引用

1.5 残差连接与归一化

归一化(让训练速度更快更稳定),u=0是均值为0,=1是指标准层为1=1

1.6 decoder

这里是引用
在这里插入图片描述
其他的和encoder一样在这里插入图片描述
在这里插入图片描述

1.7 整体架构

encoder:输入文本序列,进行多次(N次)的encoder(self-attention),然后进行多头的self-attention(multi-head attention),可能越学越差,因此加入残差连接和归一化。
dcoder:加入掩码,输入为encoder的k1…kn和v1…vn序列,及decoder的q1…qn。其他和encoder一样在这里插入图片描述

2 处理图像架构VIT

图像经过卷积提取出特质,然后将其转换为300的向量。然后将向量经过全连接层,如把300维的向量映射为256的(特征重新整合)。在这里插入图片描述

2.1 VIT图像分割后位置编码

vit中方式1:不加位置编码;方式2:二维形式比位置编码;方式3:分割顺序位置编码。
位置编码中0不是所有任务都用到,一般用于分类,在分割检测时候就没有了。
经过encoder将图像转换为一种计算机可以识别的特征形式。
在处理分类任务时会将1-9的结果整合到0
,然后用0性*特征向量驱处理分类。
0-9分别是10个token在这里插入图片描述
代码步骤二做完的事情,图1
在这里插入图片描述
图二
在这里插入图片描述
图三
在这里插入图片描述

2.2 VIT图像计算公式

E代表编码,ppc代表输入一个patch(图像分割块),D是映射(全连接层),即将256映射为512,映射后变为ppd
Epos位置编码最后一个维度D必须和E一样,N+1代表多了一个0*(N代表图像分割的patch块数),表示一个分类token。
第一个E表示对D做一个映射。
z0表示将位置编码信息加到每一个数据上。
MSA-多头注意力机制,LN-归一化,加上Zt-1代表加上残差连接。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 TNT

在这里插入图片描述
在这里插入图片描述↑内部的transformer将每个分割过的图像patch再次分割为多个patch。外部的transformer和一般情况下做的事情一样。
在这里插入图片描述
↑TNT内部序列重组构建
在这里插入图片描述

VIT总结:

图像进行position_enbeddings,只需要进行一次卷积即可。
在这里插入图片描述

4.swin Transformer

传统transformer将图像作为一个个的patch,每个patch作为序列的一小部分,传统的尽可能将patch分的细一点,但此时需要构建更长的序列,则token就越多。而transformer需要将其中的一个token和其他token做计算,此时计算量就大。如第一层输入400个token,则下一层还是400个。传统的transformer输入的向量维度和输出的一样。
而swin transformer第一层400个,第二层进行合并变为200个,后续依次类推。
在这里插入图片描述
步骤:
在这里插入图片描述
在这里插入图片描述

4.1 图像的初始输入在这里插入图片描述
4.2 将图像的特征图中的序列转换为多个窗口,即基于window的自注意力机制
reshape操作(5656->6477),64个窗口,每个窗口为77大小在这里插入图片描述4.3 计算自己窗口内的自注意力得分,得到权重矩阵
每个窗口由77=49个token组成,每个token是由3头注意力机制搞定,每一头搞定一个32维向量。
attention结果代表意思:64为64个窗口,3代表3种不同的权重项,49,49表示每个7
7(4949即49个token,其他48+自己的权[1]=49得分)的窗口中自己的自注意力得分。在这里插入图片描述在这里插入图片描述
4.4窗口重构,将窗口还原为输入时的特征
新的特征(64,49,96)分别代表64个窗口,每个窗口有7
7=49个点,每个点输入为96维向量,此时的96维向量还表示了与窗口内其他token点的关系。
每个窗口的点对应96个向量。此时96个向量是做了attention后表达的特征含义。在这里插入图片描述
4.5 计算窗口内部特征后,进行窗口滑动再次计算注意力特征 在这里插入图片描述 4.6 窗口偏移的问题及解决在这里插入图片描述
原本是4大块ABC和空格部分,划分后为0-8九个位置。但是计算还按照四个窗口计算,即4还当做其中一个,然后5和3当做一块,1和7当做一块,0、2、6、8四个当做一块,等于还是四块。
然后四块内计算块内的自注意力,没有意义的地方进行mask补0,不影响计算。在这里插入图片描述在这里插入图片描述
W-MSA和SW-MSA输入是一样的,都是4.3中(3,64,3,49,32),含义也是一样的。只是SW-MSA对窗口做了偏移,引入了masked,然后其他和W-MSA一样。在这里插入图片描述> 在这里插入图片描述 4.7 下采样
间隔取图像块。在这里插入图片描述在这里插入图片描述
第一次是64个窗口,第二次就变为16个窗口,第三次变为4个窗口,第四次变为1个窗口,选择7是因为7算的开。最终得到特征图在这里插入图片描述
4.8 代码总结
图五
3136相当于3136个特征点,每一个点都是由96维向量组成的在这里插入图片描述
图6
在这里插入图片描述
图七
在这里插入图片描述


http://www.niftyadmin.cn/n/4999428.html

相关文章

【人月神话】重新探索人月神话:软件工程的现实与挑战

人月神话是一篇由美国软件工程师弗雷德里克布鲁克斯所写的软件工程经典之作,最早发表于1975年。这篇文章的全名是《人月神话:软件工程的神话与现实》(The Mythical Man-Month: Essays on Software Engineering),它涵盖…

机器学习笔记 - 【机器学习案例】在表格数据上应用高斯混合模型GMM和网格搜索GridSearchCV提高分类精度

1、需求及数据集说明 这是一项二分类任务,评估的是分类准确性(正确预测的标签百分比)。训练集有1000个样本,测试集有9000个样本。你的预测应该是一个9000 x 1的向量。您还需要一个Id列(1到9000),并且应该包括一个标题。格式如下所示: Id,Solution 1,0 2,1 3,1 ... 900…

103.36.167.X在服务器删除、复制文件的时候会出现卡的情况,是什么原因?

服务器硬盘在删除文件或复制文件时出现卡顿情况可能有多种原因。以下是一些常见的问题和解决方法: 硬盘性能低下:如果服务器硬盘的读写速度较慢,可能会导致卡顿现象。解决方法可以是升级到更高性能的硬盘或者使用RAID技术提升硬盘读写速度。 …

【Android Framework系列】第14章 Fragment核心原理(AndroidX版本)

1 简介 Fragment是一个历史悠久的组件,从API 11引入至今,已经成为Android开发中最常用的组件之一。 Fragment表示应用界面中可重复使用的一部分。Fragment定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。…

软件设计师学习笔记8-操作系统+进程

目录 1.操作系统 1.1操作系统层次图 1.2操作系统的作用 1.3操作系统的任务 2.特殊的操作系统 3.进程 3.1进程的概念 3.2进程与程序 3.3进程与线程 3.4进程的状态 3.4.1三态模型 3.4.2基于三态模型的五态模型 1.操作系统 1.1操作系统层次图 该图片来自希赛软考 1.…

软件测试/测试开发丨Selenium Web自动化多浏览器处理

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27185 一、多浏览器测试介绍 1.1、多浏览器测试背景 用户使用的浏览器(firefox,chrome,IE 等)web 应用应该能在任何浏览器上正常的工作,这样…

经管博士科研基础【19】齐次线性方程组

1. 线性方程组 2. 非线性方程组 非线性方程,就是因变量与自变量之间的关系不是线性的关系,这类方程很多,例如平方关系、对数关系、指数关系、三角函数关系等等。求解此类方程往往很难得到精确解,经常需要求近似解问题。相应的求近似解的方法也逐渐得到大家的重视。 3. 线…

mysql中的加密函数以及在高版本中被移除的加密函数

一、加密函数 加密函数是MySQL用来对数据进行加密的函数。 1、PASSWORD(str) MySQL 8.0版本取消了,只能在MySQL 5.7中使用 返回字符串str的加密版本,41位长的字符串,加密结果不可逆 该函数可以对字符串str进行加密,一般情况下&am…