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

b-up:Enzo_mi:Transformer DETR系列

1.视频1:self-Attention|自注意力机制 |位置编码 | 理论 + 代码

注意:

q-查询; k-商品标签; v-值(具体商品)

* 不是指乘法,类似概念

a1:相似度; b1:总分

 

若想了解 I   这个词  与其他词的相似度,则用q1分别乘以 k2,k3,k4

若想了解 dog   这个词  与其他词的相似度,则用q4分别乘以 k1,k2,k3

注意:

(1,4,2)  1 表示一个batch size, 4表示一个token, 2表示每个token的长度

位置编码

因为self-attention的输出没有位置信息, 将a4放在最后一个输出的b4,  与  将a4 放在第一个输出的b4,   两个b4完全相同,没有包含位置对其的影响(没有包含位置信息)

 

一共有j个token, 每个token都有i个维度,

对于奇数维度的位置编码,使用cos 生成

对于偶数维度的位置编码,使用sin 生成

2. 视频2:Multi-Head Attention | 算法 + 代码

 

上一节课讲的是 single head

这节课将multi-head,   其中 h表示head的个数

讲了 几种q,k,v的计算方法

方法1:见上个图片,w1 2x6  分成三份(每份 2x2),分别与ai相乘,分别生成三份q,每个q 1x2

方法2:先使用统一的权重, 生成q,k,v, 然后再将q,k,v, 分别切分多个 ,如q切分为q1,q2,q3,q4,q5。

形成多个head

对于每个head,向上一节课那样,分别生成b1,b2...bm

 将得到的b先按列concat,  再按行concat,  得到一个mxd 的矩阵

m表示token的个数;d表示每一个token的维度

代码实现

首先定义一个x,   (1,4,2)

1表示batch size

4表示token个数

2表示token 

 

 

实例化一个类,传入三个参数

第一个参数:dim_in表示输入中每个token的维度(即输入x的最后一个维度)

第二个参数:d_model表示如果使用single self-attention  时,qkv总的向量长度

第三个参数:num_heads表示指定head的个数

指定qkv的总向量长度为6;指定一共有3个head;

所以每个head的维度等于 6/3=2,

定义三个全连接层,分别从输入x中提取qkv

表示每个head的维度 dk

从三个全连接层分别提取q,k,v

提取的qkv的维度等于d_model   即6,  (1,4,6)

将其reshape, 将6拆分为3x2

(1,4,3,2)

3表示3个head

将3进行移动,得到

(1,3,4,2)

4,2表示每个head的qkv的维度,

此时即可以对每个head进行并行处理

第一行表示:

q乘以k的转置,再除以根号下dk,  得到相似度分数

(个人:这里感觉自已听得有问题,没有完全理解)

对dist的最后一个维度做softmax,  然后乘以v  得到b

将b的维度调整为(1,4,3,2)

4表示4个token

3表示3个head

2表示每个b的维度

再将(1,4,3,2)reshape成 (1,4,6)

b最后维度为6

再将b经过全连接层,得到最终结果  ,最终结果的维度也是(1,4,6)

个人:

听得比较迷糊

本来是想听听这个,看看能否理解YOLO11里面的PSA, 还是没有搞懂

 

参考资料:

1.self-Attention|自注意力机制 |位置编码 | 理论 + 代码_哔哩哔哩_bilibili

2.Multi-Head Attention | 算法 + 代码_哔哩哔哩_bilibili

http://www.lryc.cn/news/597990.html

相关文章:

  • 商场导航软件的核心技术实现:3D+AI 如何解决用户搜索意图识别难题
  • 《云计算蓝皮书 2025 》发布:云计算加速成为智能时代核心引擎
  • Flutter之Widget体系与布局原理
  • TimeXer - 重新审视时序预测内的外生变量
  • 【对线面试官】B 树与 B + 树:原理、区别及优劣势分析
  • Java集合去重
  • 借助AI学习开源代码git0.7之九diff-files
  • VUE的学习
  • Linux驱动19 --- FFMPEG
  • kettle插件-kettle数据挖掘ARFF插件
  • Django 科普介绍:从入门到了解其核心魅力
  • 关闭 Chrome 浏览器后,自动删除浏览历史记录
  • 开源项目XBuilder前端框架
  • 从字符串替换到神经网络:AI发展历程中的关键跨越
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-评论用户名词云图实现
  • 高版本Android跨应用广播通信实例
  • tensorflow搭建神经网络
  • 遨游三防平板|国产芯片鸿蒙系统单北斗三防平板,安全高效
  • Node.js特训专栏-实战进阶:18.密码加密与安全传输
  • AI赋能软件工程让测试左移更加可实施
  • 【机器学习之推荐算法】基于K最近邻的协同过滤推荐与基于回归模型的协同过滤推荐
  • LeetCode|Day24|383. 赎金信|Python刷题笔记
  • 微服务-springcloud-springboot-Skywalking详解(下载安装)
  • 用 Function Call 让 AI 主动调用函数(超入门级示例)|保姆级大模型应用开发实战
  • Linux 进程间通信:共享内存详解
  • Spring Boot 3整合Spring AI实战:9轮面试对话解析AI应用开发
  • 【OD机试】矩阵匹配
  • 【分布式锁】什么是分布式锁?分布式锁的作用?
  • redis前期工作:环境搭建-在ubuntu安装redis
  • 实验-OSPF