白话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 = 10dics = {}
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.hqwc.cn/news/540089.html

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

相关文章

计算机网络——物理层(数据通信基础知识)

计算机网络——物理层(1) 物理层的基本概念数据通信的基本知识一些专业术语消息和数据信号码元 传输速率的两种表示方法带宽串行传输和并行传输同步传输和异步传输 信道基带信号调制常用编码方式 我们今天进入物理层的学习,如果还没有了解OSI…

爱普生晶振发布RTC模块晶振(压电侠)

爱普生晶振一直以”省,小,精”技术作为资深核心,并且已经建立了一个原始的垂直整合制造模型,可以自己创建独特的核心技术和设备,使用这些作为基地的规划和设计提供独特价值的产品. 世界领先的石英晶体技术精工爱普生公…

Python实现贝叶斯优化器(Bayes_opt)优化极限学习机回归模型(ELMRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 贝叶斯优化器 (BayesianOptimization) 是一种黑盒子优化器,用来寻找最优参数。 贝叶斯优化…

展厅装修主要流程是什么

1、展厅主题 沟通是展厅装修服务的前提,沟通营者对企业的基本情况了解,影响着展厅装修的服务质量,所以说在为参展商提供展厅装修服务时,都要与参展商进行详细的洽谈。 2、现场勘探 展厅装修的首要步骤就是需要先进入展会的场馆&am…

本地项目上传至远程git仓库

如何将本地项目上传至远程git仓库 在某些时候,本地写的小项目需要上传指定的git仓库。 在本地文件中选择要上传的项目文件目录,右键选择 Git Bash Here 初始化git git init关联远程库 git remote add origin https://github.com/xxxx/xxxx.git将文件添…

04- 基于SpringAMQP封装RabbitMQ,消息队列的Work模型和发布订阅模型

SpringAMQP 概述 使用RabbitMQ原生API在代码中设置连接MQ的参数比较繁琐,我们更希望把连接参数写在yml文件中来简化开发 SpringAMQP是基于AMQP协议定义的一套API规范,将RabbitMQ封装成一套模板用来发送和接收消息 AMQP(Advanced Message Queuing Portocol)是用于在应用程序…

2024.3.14jsp(2)

一、实验目的 掌握eclipse开发工具的使用&#xff1b;jsp标记、如指令标记&#xff0c;动作标记&#xff1b;变量和方法的声明&#xff1b;Java程序片&#xff1b; 实验&#xff1a;看电影 源代码watchMovie.jsp <% page language"java" contentType"text…

OSI(Open Systems Interconnection)模型和TCP/IP模型

OSI模型 OSI模型是一个概念模型&#xff0c;由国际标准化组织&#xff08;ISO&#xff09;在1984年提出&#xff0c;用于促进不同系统间的通信互联。OSI模型将网络通信的过程分为七层&#xff0c;每一层都有其特定的功能&#xff0c;从下至上依次是&#xff1a; 物理层&#x…

最详细数据仓库项目实现:从0到1的电商数仓建设(采集部分)

1、数据库和数据仓库的区别&#xff1a; 数据仓库就是data warehouse&#xff0c;数据小卖店&#xff0c;相当于是对数据加工&#xff0c;计算然后对外提供服务&#xff0c;而不是单纯的存储 2、数据流转过程中数据仓库中的数据源部分 数据源部分的数据**不是只同步数据库当…

Vulhub 靶场搭建

文章目录 环境说明1 Vulhub 简介2 Vulhub 安装 环境说明 操作系统&#xff1a;Ubuntu 22.04.4Docker版本: 25.0.4pip版本&#xff1a;22.0.2docker-compose 版本 1.29.2 1 Vulhub 简介 Vulhub是一个基于Docker和Docker-Conpose的漏洞环境集合&#xff0c;进入对应目录并执行一…

hadoop报错:HADOOP_HOME and hadoop.home.dir are unset. 解决方法

参考&#xff1a;https://blog.csdn.net/weixin_45735242/article/details/120579387 解决方法 1.下载apache-hadoop-3.1.0-winutils-master 官网下载地址&#xff1a; https://github.com/s911415/apache-hadoop-3.1.0-winutils win配置系统环境&#xff1a; 然后重启idea…

NCP1075STBT3G电流模式控制器中文资料PDF数据手册引脚图参数功能价格图片

产品概述&#xff1a; NCP1072 / NCP1075 产品集成了固定频率电流模式控制器和 700 V MOSFET。NCP1072/5 采用 PDIP-7 或 SOT-223 封装&#xff0c;提供了高水平的集成&#xff0c;包括软启动、频率抖动、短路保护、跳过周期、最大峰值电流设定点、斜坡补偿以及动态自供电&…