当前位置: 首页 > news >正文

transformer和vit学习笔记

以下记录自己对transformer的学习笔记,可能自己看得懂【久了自己也忘了看不懂】,别人看起来有点乱。以后再优化文档~

小伙伴请直接去看学习资源:

Transformer的理解T-1_哔哩哔哩_bilibili

  • 首先,时序处理:一些模型的出现。

NLP方面继续:

GPT2 -> GPT3 -> GPT4,  chatGPT

图像方面:

分类:VIT  Swin Transformer,  TNT(TRM in TRM)

检测:DERT等基于trm的目标检测模型;

分割:VisTR等基于trm的图像分割模型(A Survey of Visual Transformers)

预训练模型进阶【大一统,CV大模型初步】:MAE -> SAM(segment anything)

  1. Transformer

Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30.   ( 谷歌 NIPS 2017)

Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,但是模型本身很简洁,提升模型准确率。

  1. Inputs:比如一句话,四个词语!
  2. Input Embedding: 四个词语,每个embedding成512维! X:4*512   [x1,x2,x3,x4] 分别:1*512
  3. Positional Encoding: 位置编码 【一句话中每个词之间有一种相对位置,同一个词不同位置,让每一个位置都有不同的编码,才更有意义 最终用:Final Embedding.】

pos:第几个位置,i:第几个编码维度,d-model:同embedding一致的总维度,如512

奇数维度sin,偶数维度cos 公式:第几个位置的第几维度,得到一个position值】

纵坐标:位置, 横坐标:维度

对于Multi-Head Attention:

Q(query),K(key),V(value): 每一个词语的每一个q k v都是1*512  来源:

q1 = x1*Wq = [1 512] * [512 512] = [1 512]     k1和v1同理!【第2-4个词同理】

QKT = [4 512]*[512 4] = [4 4]  根号dk为常熟,负责缩减值。

 *V = [4 4] * [4*512] = [4 512]  因此,最终self-attation值还是4*512 = X:4*512

值得一提的是当有多个句子,每个句子有不同的数量的词语,计算中矩阵需要进行补充掩码!

比如5个有的只有3个。不够的掩码到5个

有的是Q-padding, 有的是K-padding 【常用】 三个句子3个词4个词5个词最终都是5*512!

对于多头注意力的体现?

假如Q K V  4*512  分层成4*256与 4*256 【图中是三份,这里两份】

 每个4*256分别计算自己的四个样本词的自注意力,最后它们再concat合并起来!

对于:Masked Multi-head attention

不同于encoder中,对输入数据X的自注意力计算,decoder中是需要逐个预测output的输出的,因此第一次保留第一个词语开始符<sos>,掩盖住后面的,第二次保留前两个词语,掩盖住后边的,知道最后得到结束符<eos>,预测结束。

这里的mask方式是对V构造上三角掩盖:

补充句子长度一致q-padding或者k-padding,掩掉句子长度

这里decoder是每次预测结果掩盖后边句子,是把QKT掩盖构造的上三角矩阵,再乘V!

对于结构中剩余模块:多头注意力后的短接,归一化,前馈神经网络,最后线性层+softmax等等。最终输出Output Probability比如:4*C的矩阵,C是类别数量。

Visual Transformer

Dosovitskiy A , Beyer L , Kolesnikov A ,et al.An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale[C]//International Conference on Learning Representations.2021.   (谷歌)

问题:transformer 从NLP到 CV???

  复杂度高,且每个像素值作为一个token并不合理!!!

>>> 思路:

图片分块固定大小,线性嵌入特征+位置编码特征,喂给TRM的encoder~

增加可扩展的分类token

优点:有局部,合起来也有全局!

vit中TRM与TRM原论文有点结构上的变化:norm提前了,而且没有PAD掩码【猜测是样本图resize统一,分割出来的token是一样的】

具体的如下步骤:

一些VIT的细节解释:

首先,输出特征怎么利用:

一般可以两种⽅式,⼀种是使⽤【CLS】token,另⼀种就是对所有tokens的输出做⼀个平均

最后选择加一个分类用的token-0:因为计算中也会和每一个算自注意力【不用每个token的高阶encoder输出再合并特征接全连接层了,用token0的也行,隐藏着特征带有全图全局信息了的了】

一些计算过程:

P:图片块分辨率,H*W/P*P = N数量,图分成了N块 【要看论文,一开始博主讲的P2块】

C:每块图通道,比如3,

D:维度,比如 512  【代码中:一块图P*P*3->conv+fc->D维embedding】

E:输入特征【N*D】比如 N=9块,这里9*512  Epos:位置编码特征,维度保持一致D!【这里是10*512】

Z0:VIT里边的patch+position的综合embedding了【加Xclass的token-0】

MSA:多头注意力,LN:norm   加后边的Zl-1残差机制

MLP一行同理1  以上在图中也可以loop循环堆叠。

相关文章:

transformer和vit学习笔记

以下记录自己对transformer的学习笔记&#xff0c;可能自己看得懂【久了自己也忘了看不懂】&#xff0c;别人看起来有点乱。以后再优化文档~ 小伙伴请直接去看学习资源&#xff1a; Transformer的理解T-1_哔哩哔哩_bilibili 首先&#xff0c;时序处理&#xff1a;一些模型的出…...

人脸识别 FaceNet人脸识别(一种人脸识别与聚类的统一嵌入表示)

人脸识别 FaceNet人脸识别&#xff08;一种人脸识别与聚类的统一嵌入表示&#xff09; FaceNet的简介Facenet的实现思路训练部分 FaceNet的简介 Facenet的实现思路 import torch.nn as nndef conv_bn(inp, oup, stride 1):return nn.Sequential(nn.Conv2d(inp, oup, 3, stride…...

Python tkinter (6) Listbox

Python的标准Tk GUI工具包的接口 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 GUI 目录 Listbox 创建listbox 添加元素…...

优雅的python(二)

&#x1f308;个人主页&#xff1a;小田爱学编程 &#x1f525; 系列专栏&#xff1a;c语言从基础到进阶 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于c语言的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到小田代码世界~ &#x…...

Git安装详细步骤

目录 1、双击安装包&#xff0c;点击NEXT​编辑 2、更改安装路径&#xff0c;点击NEXT 3、选择安装组件 4、选择开始菜单页 5、选择Git文件默认的编辑器 6、调整PATH环境 7、选择HTTPS后端传输 8、配置行尾符号转换 9、配置终端模拟器与Git Bash一起使用 10、配置额外…...

首发:2024全球DAO组织发展研究

作者&#xff0c;张群&#xff08;专注DAO及区块链应用研究&#xff0c;赛联区块链教育首席讲师&#xff0c;工信部赛迪特邀资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09; DAO&#xff08;去中心化自治组织&am…...

【大数据】详解 Flink 中的 WaterMark

详解 Flink 中的 WaterMark 1.基础概念1.1 流处理1.2 乱序1.3 窗口及其生命周期1.4 Keyed vs Non-Keyed1.5 Flink 中的时间 2.Watermark2.1 案例一2.2 案例二2.3 如何设置最大乱序时间2.4 延迟数据重定向 3.在 DDL 中的定义3.1 事件时间3.2 处理时间 1.基础概念 1.1 流处理 流…...

【数据结构1-2】二叉树

树形结构不仅能表示数据间的指向关系&#xff0c;还能表示出数据的层次关系&#xff0c;而有很明显的递归性质。因此&#xff0c;我们可以利用树的性质解决更多种类的问题。 但是在平常的使用中&#xff0c;我们并不需要使用这么复杂的结构&#xff0c;只需要建立一个包含int r…...

ajax点击搜索返回所需数据

html 中body设置&#xff08;css设置跟进自身需求&#xff09; <p idsearch_head>学生信息查询表</p> <div id"div_1"> <div class"search_div"> <div class"search_div_item"> …...

Redis6基础知识梳理~

初识NOSQL&#xff1a; NOSQL是为了解决性能问题而产生的技术&#xff0c;在最初&#xff0c;我们都是使用单体服务器架构&#xff0c;如下所示&#xff1a; 随着用户访问量大幅度提升&#xff0c;同时产生了大量的用户数据&#xff0c;单体服务器架构面对着巨大的压力 NOSQL解…...

在Python中如何使用集合进行元素操作

目录 1. 创建集合 2. 添加或删除元素 3. 集合运算 4. 其他集合操作 总结 在Python中&#xff0c;集合&#xff08;set&#xff09;是一种基本的数据结构&#xff0c;用于存储无序且唯一的元素。这意味着集合中的每个元素都是独一无二的&#xff0c;且集合不保持任何元素的…...

2024年阿里云幻兽帕鲁Palworld游戏服务器优惠价格表

自建幻兽帕鲁服务器租用价格表&#xff0c;2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器&#xff0c;配置分为4核16G和4核32G服务器&#xff0c;4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月&#xff0c;4核32G配置3个月339.72元。ECS云服务…...

Atlassian Confluence Data Center and Server 权限提升漏洞复现(CVE-2023-22515)

0x01 产品简介 Atlassian Confluence是一款由Atlassian开发的企业团队协作和知识管理软件,提供了一个集中化的平台,用于创建、组织和共享团队的文档、知识库、项目计划和协作内容。是面向大型企业和组织的高可用性、可扩展性和高性能版本。 0x02 漏洞概述 Atlassian Confl…...

打开 IOS开发者模式

前言 需要 1、辅助设备&#xff1a;苹果电脑&#xff1b; 2、辅助应用&#xff1a;Xcode&#xff1b; 3、准备工作&#xff1a;苹果手机 使用数据线连接 苹果电脑&#xff1b; 当前系统版本 IOS 17.3 通过Xcode激活 两指同时点击 Xcode 显示选择&#xff0c;Open Develop…...

【C语言刷题系列】交换两个变量的三种方式

文章目录 1.使用临时变量&#xff08;推荐&#xff09; 2.相加和相减的方式&#xff08;值较大时可能丢失数据&#xff09; 3.按位异或运算 本文所属专栏C语言刷题_倔强的石头106的博客-CSDN博客 两个变量值的交换是编程中最常见的问题之一&#xff0c;以下将介绍三种变量的…...

架构师之路(十五)计算机网络(网络层协议)

前置知识&#xff08;了解&#xff09;&#xff1a;计算机基础。 作为架构师&#xff0c;我们所设计的系统很少为单机系统&#xff0c;因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 ARP协议 地址解…...

【JSON2WEB】03 go的模板包html/template的使用

Go text/template 是 Go 语言标准库中的一个模板引擎&#xff0c;用于生成文本输出。它使用类似于 HTML 的模板语言&#xff0c;可以将数据和模板结合起来&#xff0c;生成最终的文本输出。 Go html/template包实现了数据驱动的模板&#xff0c;用于生成可防止代码注入的安全的…...

3 JS类型 值和变量

计算机对value进行操作。 value有不同的类型。每种语言都有其自身的类型集合。编程语言的类型集是该编程语言的基本特性。 value需要保存一个变量中。 变量的工作机制是变成语言的另一个基本特性。 3.1概述和定义 JS类型分为&#xff1a; 原始类型和对象类型。 原始类型&am…...

【Android】实现简易购物车功能(附源码)

先上结果&#xff1a; 代码&#xff1a; 首先引入图片加载&#xff1a; implementation com.github.bumptech.glide:glide:4.15.1配置权限清单&#xff1a; <!-- 网络权限 --><uses-permission android:name"android.permission.INTERNET"/><uses…...

使用Excel计算--任务完成总工作日时间段

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 引言 计算任务完成时间周期&#xff0c;和计算金钱一样&#xff0c;是一个比较细致严谨的工作。 通常&#xff0c;我们可能以为&#xff0c;完成周期形如&#xff1a; 任务完成周期 任务结束时间 - 任务开始时间 但是…...

ViGEmBus终极指南:Windows游戏控制器模拟驱动完全解析

ViGEmBus终极指南&#xff1a;Windows游戏控制器模拟驱动完全解析 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款运行在Windows内核模式的驱…...

开源银行API模拟器Bankr Buddy:金融科技开发的本地化测试解决方案

1. 项目概述&#xff1a;一个为开发者准备的银行API模拟器如果你正在开发一个需要与银行账户数据打交道的应用&#xff0c;无论是个人财务管理工具、预算分析软件&#xff0c;还是企业级的财务聚合服务&#xff0c;你肯定遇到过同一个难题&#xff1a;如何在不触碰真实用户敏感…...

终极显卡调校指南:如何用NVIDIA Profile Inspector释放游戏性能

终极显卡调校指南&#xff1a;如何用NVIDIA Profile Inspector释放游戏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款专为NVIDIA显卡用户设计的免费优化工具&…...

告别标题栏!在RK3568 Buildroot固件上,让你的Qt应用开机全屏显示的保姆级教程

RK3568嵌入式全屏实战&#xff1a;从Weston配置到Qt应用独占显示的完整指南 在嵌入式Linux系统开发中&#xff0c;GUI应用的全屏显示往往成为工程师面临的第一个"拦路虎"。当你在RK3568平台上精心开发的Qt应用启动后&#xff0c;却发现屏幕顶部顽固地挂着Weston窗口管…...

基于Rust与Candle的AI推理引擎cria:简化大模型本地部署与优化

1. 项目概述&#xff1a;从“左移”到“创造”的AI推理引擎 最近在折腾AI模型本地部署和推理优化的朋友&#xff0c;可能都绕不开一个名字&#xff1a; cria 。这个由 leftmove 开源的项目&#xff0c;全称是“Cria: The AI Inference Engine”&#xff0c;直译过来就是“创…...

Arm Iris组件参数化建模与调试实践

1. Arm Iris组件概述与核心价值Arm Iris组件是Fast Models仿真平台中的关键模块&#xff0c;它为芯片设计验证和软件开发提供了高度参数化的虚拟原型环境。作为一名长期从事Arm架构开发的工程师&#xff0c;我发现Iris组件的设计理念完美体现了"配置即硬件"的思想——…...

大气层系统深度解析:构建Switch的六层数字防护体系

大气层系统深度解析&#xff1a;构建Switch的六层数字防护体系 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 在Nintendo Switch的定制固件生态中&#xff0c;Atmosphere&#xff08;大气…...

Claude-Code-Board:构建AI编程工作台,提升开发效率与协作

1. 项目概述与核心价值最近在GitHub上看到一个名为“Claude-Code-Board”的项目&#xff0c;作者是cablate。这个项目标题直译过来就是“Claude代码板”&#xff0c;听起来像是一个与AI编程助手Claude相关的工具。作为一名长期在开发一线摸爬滚打的程序员&#xff0c;我对这类能…...

AI攻防时间差:当漏洞发现速度碾压修复速度— 聚焦技术核心

AI攻防时间差&#xff1a;当漏洞发现速度碾压修复速度 — 聚焦技术核心 引言&#xff1a;当两个世界碰撞 2026年5月&#xff0c;对于网络安全领域而言&#xff0c;是一个具有分水岭意义的月份。 一边是360人工智能安全研究院在5月12日发布的重磅报告&#xff0c;首次提出**“AI…...

告别串口线!用STM32CubeMX给STM32F103C8T6做个USB DFU Bootloader(Keil工程+完整代码)

STM32F103C8T6 USB DFU Bootloader实战&#xff1a;从实验室到产品的完整方案 在嵌入式产品开发中&#xff0c;固件升级是一个绕不开的话题。想象一下&#xff0c;当你的设备已经部署在现场&#xff0c;却发现需要修复一个关键bug或增加新功能时&#xff0c;传统的JTAG/SWD调试…...