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.hqwc.cn/news/97299.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC:域对象共享数据

Spring MVC 前言域对象共享数据使用 ModelAndView 向 request 域对象中共享数据使用 Map 、Model 或 ModelMap 向 request 域对象中共享数据使用 SesionAttributes 注解向 session 域对象中共享数据使用 Servlet API 向 application 域对象中共享数据 附 前言 在上一章中&…

开源django+mysql+vue3前后端分离商城baykeShop使用指南

baykeShop开源商城系统 项目简介 baykeShop(拜客商城系统)是一款全开源Python栈商城系统,管理后台完全前后端分离重写以适配项目,前后端100%开源,后台前端采用开源SCUI开源库对接开发,美观、易用、符合当…

项目介绍:《Online ChatRoom》网页聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合

在当今数字化社会,即时通讯已成为人们生活中不可或缺的一部分。为了满足这一需求,我开发了一个名为"WeTalk"的聊天室项目,该项目基于Spring Boot、MyBatis、MySQL和WebSocket技术,为用户提供了一个实时交流的平台。在本…

jmeter单接口和多接口测试

最近接触到了多接口串联,接口串联的技术会在其他帖子有说明,其核心技术点就是通过正则表达式和变量来实现接口的关联。目前为止呢笔者用到的地方还只有一个,就是关于session保持的时候。但是看到很多资料都说测试过程中经常遇到b接口需要用a接…

Nginx安装与部署

文章目录 一,说明二,下载三,Windows下安装1,安装2,启动3,验证 四,Linux下安装1,安装2,启动3,验证 五,Nginx配置 一,说明 Nginx是一款高性能Web和反向代理服务器,提供内存少,高并发,负载均衡和反向代理服务,支持windos和linux系统 二,下载 打开浏览器,输入地址: https://ngin…

机器学习基础17-基于波士顿房价(Boston House Price)数据集训练模型的整个过程讲解

机器学习是一项经验技能,实践是掌握机器学习、提高利用机器学习 解决问题的能力的有效方法之一。那么如何通过机器学习来解决问题呢? 本节将通过一个实例来一步一步地介绍一个回归问题。 本章主要介绍以下内容: 如何端到端地完成一个回归问题…

linux免密登录最简单--图文详解

最简单的免密登录 1.A电脑生成秘钥 ssh-keygen -t rsa 2.A电脑将秘钥传给B电脑 ssh-copy-id root192.168.1.129 #将秘钥直接传给B电脑 需要输入B电脑的密码,可以看到成功。 3.测试 同理:如果B->A也需要免密登录,统一的操作。 大功告…

uniapp 开发之仿抖音,上下滑动切换视频、点击小爱心效果

效果图: 功能描述: 上下滑动视频,双击暂停,然后第一个视频再往上滑显示”已经滑到顶了“ 开始代码: 首先视频接口使用的公开的视频测试接口 开放API-2.0 官网展示 Swagger UI 接口文档 一…

RHCA之路---EX280(4)

RHCA之路—EX280(4) 1. 题目 Use the S2I functionality of your OpenShift instance to build an application in the rome project Use the Git repository at http://services.lab.example.com/php-helloworld for the application source Use the Docker image labeled re…

Windows 安装 RabbitMq

Windows 上安装 RabbitMQ 的步骤 RabbitMQ 是一个强大的开源消息队列系统,广泛用于构建分布式、可扩展的应用程序。本教程将带您一步一步完成在 Windows 系统上安装 RabbitMQ 的过程。无需担心,即使您是初学者,也能够轻松跟随这些简单的步骤…

数字生意 经“九”长兴 | 秦丝9周年荣誉盘点

数字生意 经“九”长兴 转眼间,秦丝已经成立了9年 帮助200万商家实现数字化转型 在数字生意的道路上经“九”长兴 9年来,秦丝深入全国各地服装市场调研 9年来,秦丝结合百万商家建议不断更新 9年来,秦丝产品和服务市场好评率9…

ELK安装、部署、调试(六) logstash的安装和配置

1.介绍 Logstash是具有实时流水线能力的开源的数据收集引擎。Logstash可以动态统一不同来源的数据,并将数据标准化到您选择的目标输出。它提供了大量插件,可帮助我们解析,丰富,转换和缓冲任何类型的数据。 管道(Logs…