transformer_正余弦位置编码代码笔记

news2024/11/13 12:42:47

transformer_正余弦位置编码代码笔记

transformer输入的序列中,不同位置的相同词汇可能会表达不同的含义,通过考虑位置信息的不同来区分序列中不同位置的相同词汇。

位置编码有多种方式,此处仅记录正余弦位置编码

正余弦位置编码公式如下:
在这里插入图片描述
代码如下:

import numpy as np
import torch

def positional_encoding(seq_len, d_model):
    # 创建一个形状为(seq_len, 1)的数组,其中的值为[0, 1, 2, ... seq_len-1]
    position = np.arange(seq_len)[:, np.newaxis]  # 使用np.newaxis增加列上的维度,position矩阵为seq_len×1

    # 计算除数,这里的除数将用于计算正弦和余弦的频率,div_term矩阵为1×d_model
    div_term = np.exp(np.arange(0, d_model, 2) * -(np.log(10000.0) / d_model))

    # 初始化位置编码矩阵为零,后续计算所有位置的位置编码并更新相对位置的初始化位置编码矩阵
    pe = np.zeros((seq_len, d_model))
    
    # 以下是针对偶数列使用正弦函数,奇数列使用余弦函数,最终输出的结果矩阵为seq_len×d_model
    # 对矩阵的偶数列机型正弦函数编码
    pe[:, 0::2] = np.sin(position * div_term)
    # 对矩阵的奇数列机型余弦函数编码
    pe[:, 1::2] = np.cos(position * div_term)

    # 返回位置编码矩阵,转换为PyTorch张量
    return torch.tensor(pe, dtype=torch.float32)

if __name__ == '__main__':
    # 使用示例
    seq_len = 50  # 定义序列长度
    d_model = 512  # 定义模型的embedding维度
    pe = positional_encoding(seq_len, d_model)  # 获得位置编码
    print(pe)

实际使用时代码如下:

# forward the GPT model itself
# token的embedding
tok_emb = self.transformer.wte(idx) # token embeddings of shape (b, t, n_embd)
# 位置的embedding
pos_emb = self.transformer.wpe(pos) # position embeddings of shape (1, t, n_embd)
# 将token的embedding与位置得到embedding相加
x = self.transformer.drop(tok_emb + pos_emb)

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

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

相关文章

Android 9.0 SystemServer进程读写sdcard权限的修改

1.前言 在9.0的系统rom定制化开发中,在一些系统进程中,也就是在SystemServer的进程中,其中系统服务中会要求读写Sdcard的一些功能,然后 默认是没有读取sdcard权限的,而在app中可以申请sdcard读写权限在系统服务中就不能申请权限,接下来看怎么授权实现sdcard授权 如图: 2…

【笔记】CSDN文本编辑操作(持续更新中......)

文章目录 1、修改字体颜色和字号2、首行悬进两个字符3、图片居中4、字体、文字颜色、居中5、高亮6、重点标注7、加粗 1、修改字体颜色和字号 <html><head><meta http-equiv"Content" content"text/html;charsetutf-8" /><title>修…

Qt QScrollArea 不显示滚动条 不滚动

使用QScrollArea时&#xff0c;发现添加的控件超出QScrollArea 并没有显示&#xff0c;且没有滚动条效果 原因是 scrollArea指的是scrollArea控件本身的大小&#xff0c;肉眼能看到的外形尺寸。 scrollAreaWidgetContents指的是scrollArea控件内部的显示区域&#xff0c;里面可…

Spring Boot第一天

SpringBoot概述 Spring Boot是Spring提供的一个子项目&#xff0c;用于快速构建Spring应用程序 传统方式构建Spring应用程序 导入依赖繁琐 项目配置繁琐 为了简化如此繁琐的配置流程&#xff0c;SpringBoot这一子项目提供了如下特性 SpringBoot特性 起步依赖 本质上就是一个…

【Java程序设计】【C00203】基于(JavaWeb+SSM)的超市进出货管理系统(论文+PPT)

基于&#xff08;JavaWebSSM&#xff09;的超市进出货管理系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的超市进货管理系统 本系统分为管理员和员工2个功能模块。 管理员&#xff1a;管理员进入主页面&#xff0c…

会计试算平衡

目录 一. 试算平衡的意义二. 试算平衡的原理和内容三. 试算平衡表 \quad 一. 试算平衡的意义 \quad ①验证错误 ②便于编制会计报表 试算表根据各分类账借贷余额汇总编制而成&#xff0c;依据试算表编制会计报表将比直接依据分类账来编制更为方便,拥有大量分类账的企业尤为便捷…

springboot集成rocketmq-spring-boot-starter的坑(避坑指南)

1.说明版本&#xff08;解决方法&#xff09; springboot版本&#xff1a;2.2.2.RELEASE RocketMQ版本&#xff1a;rocketmq-spring-boot-starter 2.2.2 2.坑 rocketmq-spring-boot-starter的版本一开始&#xff0c;使用的是2.2.0版本&#xff0c;一直出现一个问题&#x…

SIT10505V 供电,±40V 接口耐压,1Mbps 高速 CAN 总线收发器

SIT1050 是一款应用于 CAN 协议控制器和物理总线之间的接口芯片&#xff0c;可应用于卡车、公交、 小汽车、工业控制等领域&#xff0c;速率可达到 1Mbps &#xff0c;具有在总线与 CAN 协议控制器之间进行差分信 号传输的能力。 特点 ➢ 完全兼容 “ ISO 11898 ” 标…

Python+Selenium+Unittest 之selenium15--等待时间

在正常的自动化过程中&#xff0c;如果整篇代码中没有加等待时间的话&#xff0c;有时候可能页面跳转或者还没开始点击就执行到下一个流程了&#xff0c;这时候因为页面没有加载完毕&#xff0c;所以有可能会导致找不到对应的元素而报错&#xff0c;因此我们需要在整个代码流程…

做好测试用例的分析 ? 是做好软件测试的必要步骤。

目录 1.测试用例的分析指标 2.可能原因的论证 3.确定原因的解决方案 测试用例作为测试人员最重要的输出物之一 &#xff0c;它的作用不仅仅是能保证需求覆盖 &#xff0c;提高测试覆盖率等 。通过对执行后的测试用例分析 &#xff0c;你也可以发现更多在编写上&#xff0c;执…

案例四:误Ghost分区恢复

1、案例 小王电脑最近有点问题&#xff0c;于是打算将电脑系统重装系统&#xff0c;原本5个分区&#xff0c;第一个区是操作系统区&#xff0c;后4个用户数据区&#xff0c;在一次GHOST时失误&#xff0c;做完发现硬盘只有一个系统区&#xff0c;两个数据区消失了&#xff0c;…

[力扣 Hot100]Day20 旋转图像

题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 出处 思路 旋转时每四个位置为一组进行swap操作&#xff0c;找好对…

phpstudy安装并运行redis

对于一个菜鸟来说&#xff0c;任何一个小步骤都可能研究半天&#xff0c;比如“phpstudy安装并运行redis”这一问题&#xff0c;解决好后第一时间记录下来&#xff0c;方便日后查看&#xff0c;也为遇到同样困难的小伙伴提供个参考&#xff01; 一、phpstudy安装redis 1.打开…

2024年光学通信和物联网、自动化控制和大数据国际会议(OCITACB2024)

会议简介 2024年国际光通信与物联网、自动控制和大数据会议&#xff08;OCITACB2024&#xff09;的主要目标是促进光通信与物联网、自动管理和大数据领域的研发活动。另一个目标是促进研究人员、开发人员、工程师、学生和从业者之间的科学信息交流。会议将每年举行一次&#x…

浅谈棉纺织厂电气防火措施及电气防火限流式保护器的应用

摘要&#xff1a;棉纺织厂属于火灾危险场所&#xff0c;在进行电气设计时要考虑并采取一定的防火措施。本文从接线、熔断器的选用、中性点接地方式的选择和接地等问题&#xff0c;介绍了电气防火的一些措施。并就引发火灾较严重的线路短路故障问题&#xff0c;介绍了电气防火限…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第9章 项目范围管理(三)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

周报(20240128)

日期&#xff1a;2024.1.22 - 2024.1.28 本周工作&#xff1a; 1. 阅读论文 本周阅读了以下论文&#xff1a; 《BRAU-Net&#xff1a;用于医学图像分割的U形混合CNN-Transformer网络》 背景 精确的医学图像分割对于临床量化、疾病诊断、治疗计划和许多其他应用至关重要。基…

力扣hot100 划分字母区间 贪心 思维 满注释版

Problem: 763. 划分字母区间 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 代码随想录 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public List<Integer> partitionLabels(String s){// 创建哈希…

ArkTs布局组件(一)

通用属性 名称参数描述widthLengthheightLengthsize{width?:Length,height?:Length}设置宽高尺寸paddingPadding|Length内边距marginMargin|Length外边距constraintSize{minWidth?:Length|minHeight?:Length|maxWidth?:Length|maxHeight?:Length}设置约束尺寸&#xff0…

VMware vCenter告警:vSphere UI运行状况警报

vSphere UI运行状况警报 不会详细显示告警的具体内容&#xff0c;需要我们自己进一步确认告警原因。 vSphere UI运行状况警报是一种监控工具&#xff0c;用于检测vSphere环境中的潜在问题。当警报触发时&#xff0c;通常表示系统遇到了影响性能或可用性的问题。解决vSphere UI…