自注意力(self_attention)和位置编码

目录

1.自注意力(self_attention)公式

2.代码实现

 2.1位置编码的代码实现

3.知识点个人理解 


 

1.自注意力(self_attention)公式

2.代码实现

import math
import torch
from torch import nn
import dltoolsnum_hiddens, num_heads = 100, 5
dropout = 0.2
#使用多头注意力机制时, 让key_size,  query_size,  value_size都=num_hiddens
attention = dltools.MultiHeadAttention(num_hiddens, num_hiddens, num_hiddens, num_hiddens, num_heads, dropout)
#dropout与.eval()搭配使用
attention.eval()
MultiHeadAttention((attention): DotProductAttention((dropout): Dropout(p=0.2, inplace=False))(W_q): Linear(in_features=100, out_features=100, bias=False)(W_k): Linear(in_features=100, out_features=100, bias=False)(W_v): Linear(in_features=100, out_features=100, bias=False)(W_o): Linear(in_features=100, out_features=100, bias=False)
)
batch_size, num_queries, valid_lens = 2, 4, torch.tensor([3, 2])
X = torch.ones((batch_size, num_queries, num_hiddens))
#创建不带位置信息的自注意力,就是让queries/keys/values都传X
attention(X, X, X, valid_lens).shape

 torch.Size([2, 4, 100])

 2.1位置编码的代码实现

 

#位置编码
class PositionalEncoding(nn.Module):def __init__(self, num_hiddens, dropout, max_len=10000, **kwargs):super().__init__(**kwargs)self.dropout = nn.Dropout(dropout)#创建一个存放位置编码的tensorself.P = torch.zeros((1, max_len, num_hiddens))  #第0维度的1,便于后面与其他数据计算时进行广播机制#除号左边的shape=(10000, 1),1在进行除法运算会进行广播机制,变成50X = torch.arange(max_len, dtype=torch.float32).reshape(-1, 1) / torch.pow(10000, torch.arange(0, num_hiddens, 2, dtype=torch.float32)/num_hiddens)#取出所有的偶数列, 进行赋值self.P[:, :, 0::2] = torch.sin(X)#取出所有的奇数列, 进行赋值self.P[:, :, 1::2] = torch.cos(X)#定义前向传播def forward(self, X):#: X.shape[1]表示只会索引到X的最大值X = X + self.P[:, : X.shape[1], :].to(X.device)return self.dropout(X)
encoding_dim, num_steps = 32, 60
#创建位置编码对象
pos_encoding = PositionalEncoding(encoding_dim, dropout=0)
pos_encoding.eval() #
X = pos_encoding(torch.zeros(1, num_steps, encoding_dim))
#调用pos_encoding中的self.P属性
P = pos_encoding.P[:, :X.shape[1], :]
X.shape, P.shape

 (torch.Size([1, 60, 32]), torch.Size([1, 60, 32]))

#dltools绘图
dltools.plot(torch.arange(num_steps), P[0, :, 6:10].T, xlabel='Row (position)', figsize=(6, 2.5), legend=['Col %d' % d for d in torch.arange(6,10)])

 

3.知识点个人理解 

 

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

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

相关文章

assign是赋值,不是连接

如下图是一个top文件的背压 如果把原本应该是外界输入的变量m_ip_hdr_ready通过phv_parser_hdr_ready来“赋值!!!”,那么模块内部本该有的ready信号,就会是Z高阻态,因为没有给到值。 正确的赋值 将整个模…

GEE教程:利用sentinel-2数据进行ndwi和ndci指数的计算和下载

目录 简介 函数 normalizedDifference(bandNames) Arguments: Returns: Image Export.image.toDrive(image, description, folder, fileNamePrefix, dimensions, region, scale, crs, crsTransform, maxPixels, shardSize, fileDimensions, skipEmptyTiles, fileFormat, …

2024年双十一不容错过的好物分享,最值得买的几款超值单品

2024的“双11”购物狂欢节即将要拉开帷幕,大家有没有物色到心仪的好物呢?平时看中的某一件商品,总想着在最低价时入手,毫无疑问双十一就是最佳时机,毕竟各大电商平台都会推出优惠活动。为此我也特意整理了一份数码好物…

【YOLO目标检测学生课堂行为数据集】共4266张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式:YOLO格式 图片数量:4266 标注数量(txt文件个数):4266 标注类别数:3 标注类别名称:hand、read、write 数据集下载:学生课堂行为数据集 图片示例 数据集图片&#…

耳夹式耳机值得买吗?揭秘耳夹式耳机六大避坑指南!

耳夹式耳机值得买吗?这是很多人的疑问,但是夹耳式耳机火起来跟当下人们对健康运动的需求密不可分,入耳式耳机照顾了听音需求就很难兼顾环境音,还有耳部健康和佩戴舒适度等等,而运动时半入耳式耳机又容易掉,…

2024年华为杯研赛(D题)数学建模竞赛解题思路|完整代码论文集合

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

详解c++:new和delete

文章目录 前言一、new和mallocnew的用法(爽点)自动构造 delete和freedelete的用法(爽点) 提醒 前言 提示:这里可以添加本文要记录的大概内容: 在C中,new 和 delete 是两个非常重要的操作符&am…

0921VGG网络实现

深度学习之VGG网络搭建 1.VGG动机2.VGG架构3.代码4.结论1.VGG动机 随着卷积网络在计算机视觉领域的快速发展,越来越多的研究人员开始通过改变模型的网络结构在提高在图像识别任务中的精度,例如使用更小的卷积核和步长[2]。基于类似的想法,论文作者提出可以尝试通过改变卷积…

FLUX.1+ComfyUI部署与使用:图像合成技术的新高度

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! FLUX.1的版本 FLUX.1是由黑森林实验室([Black Forest Labs](https://bla…

进程分析工具Process Explorer使用

进程分析工具Process Explorer使用 Process Explorer让使用者能了解看不到的在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在被哪些程序使用着,还可显示这些程序所调用的DLL进程,以及他们所打开的句柄。Process Expl…

ORCDA仿真功能_PS_PISC,显示窗口小,模板工程,光标,查看值

1 开启PS_PICE仿真功能 1 新建 2 可以选择已有模板工程 3 创建模板工程 2 进行仿真 1 设置仿真时间 2 可以用光标测量不同曲线位置的信息(如电压) 1 光标,可以测量不同点的电压 2 Trace(测量功率),加…

探索《越南语翻译通》App:高效语言学习的利器

在当今这个全球化的世界里,语言学习变得越来越重要。随着科技的发展,我们有了更多便捷的工具来帮助我们学习新的语言。今天,我们来探索一款名为《越南语翻译通》的App,它正逐渐成为语言学习者的新宠。 《越南语翻译通》App的特点…

VMware虚拟机密码忘记了怎么办

1.首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面 2.进入编辑界面,使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后面输入(最好把前面的语言改…

Fabric:布匹纺织缺陷检测数据集(猫脸码客 第195期)

布匹数据集在纺织工业中的应用与探索:从布匹检索到纹理检测 引言 在快速发展的纺织工业中,信息技术的深度融合正逐步推动产业向智能化、精细化转型。其中,布匹数据集作为连接传统制造与数字技术的桥梁,其在布匹检索、纹理检测等…

CVE-2024-46101

前言 自己挖的第一个CVE~ 喜提critical 这里简单说一下。 漏洞简介 GDidees CMS < 3.9.1 的版本&#xff0c;存在一个任意文件上传漏洞。允许登录后的攻击者上传webshell获得网站的权限。 影响版本&#xff1a; GDidees CMS < 3.9.1 &#xff08;其它的我没测。。&am…

Python入门:数据类型、控制流与函数详解

如果你正在学习Python&#xff0c;那么你需要的话可以&#xff0c;点击这里&#x1f449;Python重磅福利&#xff1a;入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享&#xff01; Python作为一种广泛使用的高级编程语言&#xff0c;以其简洁的语法、丰富的库…

进程间的通信3-信号量

信号量 1.资源竞争 资源竞争 : 当多个进程同时访问共享资源时&#xff0c;会产生资源竞争&#xff0c;最终最导致数据混乱临界资源 : 不允许同时有多个进程访问的资源&#xff0c;包括硬件资源(CPU、内存、存储器以及其他外围设备)与软件资源(共享代码段、共享数据结构)临界区…

【项目管理进阶】风险问题

前言 各位盆友&#xff0c;你们期待的项目管理进阶系列有新的消息&#xff0c;请注意查收&#xff0c;并反馈哦~ 在参加项目的过程中&#xff0c;你是否面临或参加过类似如下的场面&#xff1a; 为了立项&#xff0c;先调研市场、技术、社会、组织内部的现状为了科学的管理项目…

2024年中国研究生数学建模竞赛C题数据驱动下磁性元件的磁芯损耗建模 思路讲解

第一题是非常经典的机器学习分类过程, 首先第一步,我们需要做可视化分析。通过一些统计学方法来分析磁通密度的分布特征以及不同波形的一个形态特征,那这里可以通过绘制一些例如核密度估计图,双变量影响关系图,描述性统计等等, 其次,第二步,我们需要去构建特征筛选。…

安科瑞产品在银行智慧用电监测平台的设计与应用

01前言 随着科技发展&#xff0c;电力供应日益充分&#xff0c;电气设备日益增多&#xff0c;电力在带来光明和效率同时&#xff0c;也带来火灾危害。据应急管理部消防救援局统计[1]&#xff0c;2020年全国共接报火灾25.2万起&#xff0c;电气类原因继续强力影响火灾走势&…