白话transformer(三):Q K V矩阵代码演示

news2025/3/16 13:43:35

在前面文章讲解了QKV矩阵的原理,属于比较主观的解释,下面用简单的代码再过一遍加深下印象。

B站视频

白话transformer(三)

1、生成数据

我们呢就使用一个句子来做一个测试,

text1 = "我喜欢的水果是橙子和苹果"
text2 = "相比苹果我更加喜欢国产的华为"

比如我们有两个句子,里面都有苹果这个词。我们用text1来走下流程

1.1 创建词嵌入

我们使用spacy进行词嵌入生成,代码很简单

nlp = spacy.load('zh_core_web_sm')
doc = nlp(text1)

我们为了简单一点只取前10个维度,实际上spacy默认的词嵌入维度是很高的,我们只是用前十个来过一下流程。

emd_dim = 10

dics = {}
for token in doc:
    dics[token.text] = token.vector[:emd_dim]
X = pd.DataFrame(dics)

在这里插入图片描述
这样我们就得到了第一个句子中所有词的embedding表示

2、初始化 W q W_q Wq, W k W_k Wk, W v W_v Wv

具体的内容可以查看之前的文章Bert基础(一)–自注意力机制

为了创建查询矩阵、键矩阵和值矩阵,我们需要先创建另外三个权重矩阵,分别为 W Q 、 W K 、 W V W^Q 、W^K、W^V WQWKWV。用矩阵X分别乘以矩阵 W Q 、 W K 、 W V W^Q 、W^K、W^V WQWKWV,就可以依次创建出查询矩阵Q、键矩阵K和值矩阵V。

d_k = 6       # QKV向量的维度

A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V) = softmax(\frac{QK^{T}}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V
d_k是指公式中的d_k

Wq = np.random.randn(emd_dim, d_k)

在这里插入图片描述
Wq矩阵的格式,就是10*6

  • 10:是指词嵌入的维度
  • 6:d_k,Q的维度

Wk, Wv,同样

3、计算QKV

Q = X * Wq

np.dot(X.T, Wq)

在这里插入图片描述
这样就得到了查询矩阵Q,Q其实可以理解为每个词需要查询的内容。

同样可以计算K和V矩阵

4、相似矩阵

计算公式为:
X W Q ∗ ( W K X ) T XW^Q *(W^KX )^T XWQ(WKX)T

其实就是我们计算好的Q和K
Q K T Q K^T QKT
直接点乘就可以得到每个词和每个词的相似性:
在这里插入图片描述

5、点积缩放

Q@K.T/ np.sqrt(d_k)

在这里插入图片描述

6、Soft Max

我们自己遍历计算一下即可

# 计算Softmax
for i in range(len(df_QK)):
    exp_v = np.exp(df_QK.iloc[i])
    softmax = exp_v / np.sum(exp_v)
    df_QK.iloc[i] = softmax

在这里插入图片描述
现在就得到了最后的相似性矩阵

7、attention

A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V) = softmax(\frac{QK^{T}}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V

根据公示直接将前面计算的结构点乘V
在这里插入图片描述

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

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

相关文章

WPF布局、控件与样式

视频来源:https://www.bilibili.com/video/BV1HC4y1b76v/ 布局 常用布局属性 HorizontalAlignment:用于设置元素的水平位置VerticalAlignment:用于设置元素的垂直位置Margin:指定元素与容器的边距Height:指定元素的…

AMRT 3D 数字孪生引擎(轻量化图形引擎、GIS/BIM/3D融合引擎):智慧城市、智慧工厂、智慧建筑、智慧校园。。。

AMRT3D 一、概述 1、提供强大完整的工具链 AMRT3D包含开发引擎、资源管理、场景编辑、UI搭建、项目预览和发布等项目开发所需的全套功能,并整合了动画路径、精准测量、动态天气、视角切换和动画特效等工具。 2、轻量化技术应用与个性化定制 AMRT3D适用于快速开…

《雷德斯东家》 第一话——火把花的回忆

引子 温馨提示:本系列小说为福瑞向! ------------------------------------------------------------------------------------------------------------------------- 作者 RedstoneCuberoot 地图 RedstoneCuberoot、梓元sama 审核 Brenda_fyx、RedstoneCuberoot Minecraft大…

Linux_socket编程

套接字通信 socket 接口 守护进程 一.套接字通信 端口号: 端口号是一个2字节16位的整数;端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; 一台主机可以根据ip地址定位另一台主机,而两台主机之间的通信本质是进程在通信。…

stm32-编码器测速

一、编码器简介 编码电机 旋转编码器 A,B相分别接通道一和二的引脚,VCC,GND接单片机VCC,GND 二、正交编码器工作原理 以前的代码是通过触发外部中断,然后在中断函数里手动进行计次。使用编码器接口的好处就是节约软件资源。对于频…

QT下跨平台库实现及移植经验分享

最近在移植公司一个QT桌面软件到android上,有一些公司自定义的库,用了很多windows的api,移植过程很是曲折,在此有一些感悟分享一下~ 一.自编写跨平台库 1.有时候为了程序给第三方用需要编译一些qt封装库,并可能跨平台…

思科防火墙如何进行ACL操作

环境: 思科防火墙ASA5555 Cisco Adaptive Security Appliance Software Version 9.4(2)6 Device Manager Version 7.5(2)153 问题描述: 思科防火墙如何进行ACL操作 解决方案: 进入en模式 1.查看现有全部list show running-config | i…

stm32-定时器输出比较PWM

目录 一、输出比较简介 二、PWM简介 三、输出比较模式实现 1.输出比较框图(以通用定时器为例) 2.PWM基本结构 四、固件库实现 1.程序1:PWM呼吸灯 2.程序2:PWM驱动直流电机 3.程序3:控制舵机 一、输出比较简介 死区生成和互补输出一般…

Tomcat Session集群---会话绑定

实验配置: 7-1安装Nginx 7-2和7-3安装Tomcat 1.配置7-1 1.做负载均衡,反向代理 [rootlocalhost ~]# vim /etc/nginx/nginx.conf17 http {18 upstream tomcat {19 server 192.168.91.102:8080;20 server 192.168.91.103:8080;2…

ideaSSM校医院管理网页模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 校医院管理系统是一套完善的完整信息管理系统,结合SSM框架完成本系统SpringMVC spring mybatis ,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发), 系统具有完整的源代码和数据…

HarmonyOS应用开发者高级认证答案

** HarmonyOS应用开发者高级认证 ** 以下是高级认证答案,存在个别选项随机顺序答案,自行辨别 判断题 云函数打包完成后,需要到 AppGallery Connect 创建对应函数的触发器才可以在端侧中调用 错 在 column 和 Row 容器组件中,a…

UDF提权

目录 一、UDF概述 二、提权条件 三、漏洞复现 (一) 信息收集 1. Nmap信息收集 1.1、查看当前IP地址 1.2、扫描当前网段,找出目标机器 1.3、快速扫描目标机全端口 2. dirb目录扫描 3. 第一个flag 3.1、目录遍历漏洞 3.2、flag 4. 敏感信息利用 (二) 漏…

Hive-技术补充-初识ANTLR

一、背景 要清晰的理解一条Hql是如何编译成MapReduce任务的,就必须要学习ANTLR。下面是ANTLR的官方网址,下面让我们一起来跟着官网学习吧,在学习的过程中我参考了《antlr4权威指南》,你也可以读下这本书,一定会对你有…

labview技术交流-判断两个数组的元素是否完全相同

问题来源 分析并判断两个一维数组中包含的元素是否完全相同,不考虑索引顺序。比如说[1,5,7,3]和[3,5,7,1]是完全相同的两个一维数组,那[1,5,7,3]和[5,7,1,4]就不是相同的数组。结合我给出的示例,大家有没有什么思路呢? 思路分析 …

Java数据结构-优先级队列

文章目录 前言一、优先级队列1.1 概念 二、优先级队列的模拟实现2.1 堆的概念2.2 堆的存储方式2.3 堆的创建2.3.1 堆向下调整2.3.2 堆的创建2.3.3 建堆的时间复杂度 2.4 堆的插入与删除2.4.1 堆的插入2.4.2 堆的删除 2.5 用堆模拟实现优先级队列 三、常用接口介绍3.1 PriorityQ…

MediaBox音视频终端SDK已适配鸿蒙星河版(HarmonyOS NEXT)

2024年1月,HarmonyOS NEXT 鸿蒙星河版系统开发者预览版开放申请,该系统将只能安装为鸿蒙开发的原生应用,而不再兼容安卓应用。对此,阿里云MediaBox音视频终端SDK产品已实现功能的鸿蒙化迁移和重构,全面适配鸿蒙系统Har…

Html提高——HTML5 新增的语义化标签

引入&#xff1a; 以前布局&#xff0c;我们基本用 div 来做。div 对于搜索引擎来说&#xff0c;是没有语义的。 但是在html5里增加了语义化标签&#xff0c;如 <header>&#xff1a;头部标签 <nav>&#xff1a;导航标签 <article>&#xff1a;内容标签 &…

ASP.NET Mvc+FFmpeg+Video实现视频转码

目录 首先&#xff0c;做了视频上传的页面&#xff1a; FFmpeg&#xff1a;视频转码 FFmpegHelper工作类&#xff1a; 后台控制器代码&#xff1a; 前端视图代码&#xff1a; 参考文章&#xff1a; 首先&#xff0c;做了视频上传的页面&#xff1a; 借鉴了这篇文章 ASP.…

Qt学习--this指针的使用

在 C 中&#xff0c;this 指针是一个特殊的指针&#xff0c;它指向当前对象的实例。 在 C 中&#xff0c;每一个对象都能通过 this 指针来访问自己的地址。 this是一个隐藏的指针&#xff0c;可以在类的成员函数中使用&#xff0c;它可以用来指向调用对象。 当一个对象的成员…

【算法杂货铺】二分算法

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 朴素二分查找 &#x1f4c2; 朴素二分模板 &#x1f4c1; 查找区间端点处 细节&#xff08;重要&#xff09; &#x1f4c2; 区间左端点处模板 &#x1f4c2; 区间右端点处模板 &#x1f4c1; 习题 1. 35. 搜索插入位…