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

深圳罗湖住房和建设局网站wordpress时钟插件

深圳罗湖住房和建设局网站,wordpress时钟插件,福州科技网站建设怎么做,wordpress社交系统主题文章目录 1、知识回顾2、Self-attetion实现步骤3、准备输入4、初始化参数5、获取Q,K,V6、计算attention scores7、计算softmax8、给values乘上scores9、完整代码10、总结 🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主&#xff0c…

文章目录

  • 1、知识回顾
  • 2、Self-attetion实现步骤
  • 3、准备输入
  • 4、初始化参数
  • 5、获取Q,K,V
  • 6、计算attention scores
  • 7、计算softmax
  • 8、给values乘上scores
  • 9、完整代码
  • 10、总结

🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹

1、知识回顾

关于Self-Attention的一系列理论知识,请看我的另外一篇文章

深入剖析Self-Attention自注意力机制【图解】:https://xzl-tech.blog.csdn.net/article/details/141308634

这篇文章讲到了self-attention的计算过程,如果不想看那么细致的话,我们还是在这里简单复习一下:
image.png
image.png
image.png
那么,需要告诉大家的是,既然是要用代码实现,那肯定是需要以一个矩阵的角度去看待整个self-attention的计算过程,请看下文!

2、Self-attetion实现步骤

这里我们实现的注意力机制是现在比较流行的点积相乘的注意力机制
self-attention机制的实现步骤:

  1. 准备输入
  2. 初始化参数
  3. 获取key,query和value
  4. 给input1计算attention score
  5. 计算softmax
  6. 给value乘上score,获得output

整个过程都是以矩阵的视角在操作的:

image.png

3、准备输入

本文的关注点在于实现过程,所以数据方面我们采用自定义的方式获取:
image.png
这样就会得到如下张量:
image.png

4、初始化参数

在我上一篇剖析self-attention机制的文章中提到,整个self-attention的计算过程,需要学习的只有三个参数,那就是q,k,v对应的权重矩阵:
微信截图_20240819164437.png
这里同样不细讲如何学习,这里的重点在于带大家跑通整个self-attention计算的代码流程,
所以初始化参数如下:
image.png
来看一下输出:
image.png

5、获取Q,K,V

前面初始化了q,k,v对应的权重矩阵,下面获取Q,K,V:
image.png
如图所示,我们可以得到如下表达式:
Q = W q ( I n p u t ) Q=W^q(Input) Q=Wq(Input)
K = W k ( I n p u t ) K=W^k (Input) K=Wk(Input)
V = W v ( I n p u t ) V=W^v (Input) V=Wv(Input)


代码实现:
image.png
得到结果:
image.png

6、计算attention scores

我在上一篇讲解self-attention机制的文章中,关于计算attention scores的过程其实是分步计算的:
image.png
即分步计算 α i , j \alpha_{i,j} αi,j
但是在代码实现上,我们上面已经全部矩阵化了,我们得到的不是单独的 K 1 K^1 K1或者是 K 2 K^2 K2,而是关于 K a l l K^{all} Kall的矩阵( Q a l l Q^{all} Qall V a l l V^{all} Vall同理):
image.png
画成图解就是:
微信截图_20240819170437.png
所以这里计算的attention scores 用代码表示就是:
image.png
输出效果:
image.png

7、计算softmax

同样,这里一口气将所有的 α i , j \alpha_{i,j} αi,j经过 S o f t m a x Softmax Softmax处理:
微信截图_20240819170812.png
代码:
image.png
输出:
image.png

代码里面的dim=-1,指定在最后一个维度上应用 softmax 操作;
在二维张量的情况下,dim=-1 指的是在每一行(行向量)上计算 softmax

8、给values乘上scores

使用经过softmax后的attention score乘以它对应的value值:
image.png
代码:
image.png
输出:
image.png

9、完整代码

完整代码,代码即注释:

# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/8/19 17:24
import torch
from torch.nn.functional import softmax# 输入数据 x,包含3个输入向量,每个向量有4个维度
x = [[1, 0, 1, 0],  # 输入向量1[0, 2, 0, 2],  # 输入向量2[1, 1, 1, 1]   # 输入向量3
]
# 将输入数据转换为 PyTorch 张量,并设置数据类型为 float32
x = torch.tensor(x, dtype=torch.float32)# 定义键(Key)的权重矩阵,形状为 (4, 3)
w_key = [[0, 0, 1],[1, 1, 0],[0, 1, 0],[1, 1, 0]
]
# 定义查询(Query)的权重矩阵,形状为 (4, 3)
w_query = [[1, 0, 1],[1, 0, 0],[0, 0, 1],[0, 1, 1]
]
# 定义值(Value)的权重矩阵,形状为 (4, 3)
w_value = [[0, 2, 0],[0, 3, 0],[1, 0, 3],[1, 1, 0]
]# 将权重矩阵转换为 PyTorch 张量,并设置数据类型为 float32
w_key = torch.tensor(w_key, dtype=torch.float32)
w_query = torch.tensor(w_query, dtype=torch.float32)
w_value = torch.tensor(w_value, dtype=torch.float32)# 打印权重矩阵以供检查
print("w_key: ", w_key)
print("w_query: ", w_query)
print("w_value: ", w_value)# 计算 Keys: 将输入 x 与键的权重矩阵相乘,生成键向量
keys = w_key @ x
# 计算 Queries: 将输入 x 与查询的权重矩阵相乘,生成查询向量
querys = w_query @ x
# 计算 Values: 将输入 x 与值的权重矩阵相乘,生成值向量
values = w_value @ x# 打印键、查询和值向量以供检查
print("Keys: ", keys)
print("Querys: ", querys)
print("Values: ", values)# 计算注意力分数(Attention Scores):通过键和查询向量的点积计算
# 结果是一个 (4, 4) 的矩阵,其中每个元素表示查询和键之间的相似度
attn_scores = keys @ querys
print("Attention Scores: ", attn_scores)# 对注意力分数应用 Softmax 函数,将其转换为概率分布
# Softmax 处理后的矩阵形状仍为 (4, 4),表示每个查询对所有键的关注度
attn_scores_softmax = softmax(attn_scores, dim=-1)
print("Attention Scores Softmax: ", attn_scores_softmax)# 计算加权后的输出值:将值向量与注意力分数进行加权求和
# 结果是一个形状为 (4, 4) 的矩阵,表示经过注意力加权后的最终输出
output = values @ attn_scores_softmax
print("output: ", output)

10、总结

对全文的代码过程做一个总结:
这份代码实现了自注意力机制的核心部分,包括(Key)、查询(Query)和(Value)的计算,以及通过注意力分数进行加权求和的过程

  1. 输入与权重定义
    1. 输入数据 x 包含 3 个向量,每个向量有 4 个维度
    2. 定义了三个权重矩阵 w_keyw_queryw_value,分别用于生成键、查询和值向量。
  2. 计算键、查询和值向量
    1. 将输入 x 分别与 w_keyw_queryw_value 相乘,生成对应的键、查询和值向量
    2. 这个步骤是将输入映射到不同的特征空间,以便进行注意力计算
  3. 计算注意力分数
    1. 通过键向量和查询向量的点积计算注意力分数
    2. 这些分数表示查询向量与键向量之间的相似度,用于决定每个查询向量对不同键向量的关注程度
  4. 应用 Softmax 函数
    1. 对注意力分数进行 softmax 操作,将这些分数转换为概率分布,确保每个查询对所有键的注意力之和为 1
    2. 这一步将注意力分数变为实际的注意力权重
  5. 计算加权后的输出值
    1. 将值向量与注意力权重相乘并求和,得到最终的加权输出
    2. 这一步模拟了注意力机制如何根据注意力权重聚合输入信息,从而生成最终的上下文表示

这些代码完整地展示了自注意力机制的基本工作流程;
通过计算注意力分数并对值向量进行加权求和,自注意力机制能够在输入序列中捕捉到相关信息,从而在各种深度学习任务中生成更具上下文感知的输出。

http://www.dtcms.com/a/505850.html

相关文章:

  • 西安做网站哪家便宜建设西安网站
  • 手机参数查询网站手机网页版微信登录入口
  • 温州网站专业制作wordpress炫酷模板下载
  • 网站 数据库 sql 导入数据库文件有没有帮人做简历的网站
  • 服装网站建设规划建站之星 网站排名
  • 上海建筑网站设计网站建设与推广的策划方案
  • 做个网站多少钱如何搭建微信公众号平台
  • 网站建设公司做前端餐饮公司企业网站源码
  • 做网站所用的工具襄阳市做网站 优帮云
  • iapp网站做软件教程临沂seo网站管理
  • 网站推广软件信息百度快照推广效果怎样
  • 网页设计欣赏网站网站后期推广方案
  • 网站开发有哪些工作岗位招聘平台
  • 网站百度收录怎么做广州创建网站
  • 主要的网站开发技术网站负责人照片
  • 百度建立企业网站建设的目的企业为什么要建立自己的网站
  • 网站建设行业标准备案添加网站
  • 搜索敏感词后很多网站打不开了二维码网页制作免费网站制作
  • ip网站查询服务器企业建站 wordpress
  • 网站的运营模式女同性做的视频网站
  • 什么软件可以做动漫视频网站模板网字库
  • 黄骅做网站的电话免费网站推广网站在线
  • 购物网站模板站深圳网页制作与网站建设地址
  • 多个域名 一个网站电脑ps软件哪个好
  • 邢台做网站优化哪儿好三亚网络推广
  • 四平网站建设404页面对网站的好处及设置方法延安网站建设推广
  • 写作网站的文风网站权重降低
  • 上海建科建设监理网站温州百度搜索网站排名
  • 宠物网站建设策划书网站管理平台模板
  • 公司网站上传图库东莞优化网站建设