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

在前面文章讲解了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
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS NEXT星河版——还是Android上套个壳吗?

这真的是我2024年听过最搞笑的话,就在前几天,居然还有人说鸿蒙OS就是安卓套个壳,简直无语! 你敢相信?就在前几天,我还听到有人说:鸿蒙os就是安卓上套一个壳。唉,我真是无语了。 哎&#xff0c…

上证指数000001行情数据API接口

# 测试:返回不超过10条数据(2年历史) https://tsanghi.com/api/fin/index/CHN/daily?tokendemo&ticker000001&order2Python示例 import requestsurl f"https://tsanghi.com/api/fin/index/CHN/daily?tokendemo&ticker000…

突破编程_前端_ACE编辑器(概述)

1 ACE 框架简介 ACE 框架是一个强大且灵活的前端文本编辑器框架,它提供了一套全面的 API 和丰富的功能,使得开发者能够轻松地在 Web 应用中集成功能强大的代码编辑器。ACE 编辑器不仅适用于在线代码编辑,还广泛应用于文档编辑、实时协作、富…

点餐平台网站|基于springboot框架+ Mysql+Java+Tomcat的点餐平台网站设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 用户功能实现 系统功能设计 数据库E-R图设计 lunwen参…

禁止ie自动跳转edge

因为微软对ie已经彻底停止维护了,对于没有升级系统的用户来说,会自动更新edge然后将ie给禁止使用。下面方法有效的解决windows10下,禁止ie自动跳转edge。 方法一:对于2023年10月份前的更新可用 打开控制面板,点击网络…

C#--进阶

CSharp进阶知识点学习 知识点汇总 简单数据结构类: Lesson1:ArrayList 练习: using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespac…

新手如何选择货币对进行交易。昂首资本给一个参考

通过上篇文章,各位投资者都知道货币对总共分为三组:主要货币对、交叉货币对和新兴市场货币对和异国货币对。但是哪种货币对对我们新手友好?这个很多投资者不清楚,今天昂首资本给各位投资者一个参考。 各位投资者应该知道每种货币…

SoloX - Android/iOS性能数据实时采集工具

文章目录 一、简介二、环境要求三、安装部署四、使用方法4.1 通过浏览器直接使用4.2 使用Python收集4.3 使用API收集 一、简介 SoloX是一个可以实时收集Android/iOS性能数据的web工具。 快速定位分析性能问题,提升应用的性能和品质。 无需ROOT/越狱,即插…

媒体播放器及媒体服务器软件Plex

什么是 Plex ? Plex 是一套媒体播放器及媒体服务器软件,让用户整理在设备上的有声书、音乐、播客、图片和视频文件,并通过流式传输至移动设备、智能电视和电子媒体播放器上。Plex 可用于 Windows、Android、Linux、OS X和 FreeBSD。 在接触 N…

目标检测——FPN与DSSD算法解读

由于FPN和DSSD网络结构比较相似,且发布时间非常相近,所以放一起解读 按时间来算FPN是先于DSSD在arxiv上发布的,FPN第一版是2016年12月9日,DSSD第一版是2017年1月23日,前后相差一个月。 YOLO系列其他文章: …

单片机设计-超声波视力保护仪的设计与实现

项目介绍 技术:C语言、单片机等 本设计利用超声波技术检测眼睛与书本的距离,调整看书位置,通过光敏检测判断环境光线强度是否适合阅读,并通过定时器设定阅读时长,以此解决人们由于看书姿势的错误,阅读环境…

C/C++ Socket 获取或设置 TCP MSS 大小

通过 Socket 系统接口,链接到一个TCP服务器,那么在链接成功之后会被配置一个从本地端到目的端最佳的TCP_MSS大小。 我们通过这个特点,即可轻松的实现,链路MTU大小发现功能,在不依赖ROOT管理员权限的情况下,…

【数据结构取经之路】建堆堆排序

目录 引言 建堆的两种方法 一、向上调整建堆 二、向下调整建堆 两种建堆方式的性能比较 堆排序 堆排序的思想 堆排序的时间复杂度 堆排序的空间复杂度 堆排序代码 引言 首先,介绍一下本次的主人公——堆。堆是一种数据结构,在逻辑上是一棵二叉…

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…

php 对接IronSource海外广告平台收益接口Reporting API

今天对接的是IronSource广告reporting api接口,拉取广告收益回来自己做统计。记录分享给大家 首先是文档地址,进入到Inmobi后台就能看到文档地址以及参数: 文档地址:https://developers.is.com/ironsource-mobile/air/reporting/ 在这里插入图…

5 个适用于 Windows 10 和 11 的最佳 PDF 转 Word 转换器

PDF 文件是共享文档的首选格式,但是此类文件存在一些限制,导致难以修改或编辑。因此,您可能会发现自己正在寻找一种将 PDF 文件转换为 Word 或其他可编辑格式的方法。 有许多不同的 PDF 转换器,每种转换器提供的功能略有不同。本…

代码+视频,R语言使用BOOT重抽样获取cox回归方程C-index(C指数)可信区间

bootstrap自采样目前广泛应用与统计学中,其原理很简单就是通过自身原始数据抽取一定量的样本(也就是取子集),通过对抽取的样本进行统计学分析,然后继续重新抽取样本进行分析,不断的重复这一过程N&#xff0…

还原wps纯粹的编辑功能

1.关闭稻壳模板: 1.1. 启动wps(注意不要乱击稻壳模板,点了就找不到右键菜单了) 1.2. 在稻壳模板选项卡右击:选不再默认展示 2.关闭托盘中wps云盘图标:右击云盘图标/同步与设置: 2.1.关闭云文档同步 2.2.窗口选桌面应用…

BFS 最短路径

目录 原理剖析: 1、 1926. 迷宫中离入口最近的出口 2、 433. 最小基因变化 3、 127. 单词接龙 4、 675. 为高尔夫比赛砍树 原理剖析: 为什么BFS能够解决最短路径问题? 对于无权图(边权为1)或所有边权重相等的情况,BFS是一种有…

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

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