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

位置编码-APE

Transformer 中的绝对位置编码
(以下由gpt 生成)
Transformer 的绝对位置编码(Absolute Position Encoding, APE)是用于对序列数据中的位置信息进行建模的一种方法。在 Transformer 的架构中,输入数据(如句子中的单词或字符)通过词嵌入层转化为连续的向量表示。这些向量本身并不包含任何位置信息,而 Transformer 是一种无序模型(对输入的顺序敏感性取决于位置信息的建模方式)。因此,需要加入位置信息使模型能够感知输入序列中每个元素的位置。

绝对位置编码通过为每个序列位置生成固定的编码向量,将这些向量添加到输入的词嵌入中,从而将位置信息显式地融入模型。

  1. 绝对位置编码的公式
    在这里插入图片描述

解释:
正弦和余弦函数的使用使得不同位置的编码之间具有周期性。
1/10000^(2i/d)控制了不同维度的频率,使得高维特征的变化比低维特征更快。

2. 绝对位置编码的性质
固定性:绝对位置编码是固定的,不需要通过训练学习。这减少了模型的参数量。
平滑性:相邻位置的编码向量之间具有平滑的变化,便于模型捕捉到序列中的局部连续性。
维度分布:不同维度的频率不同,能够捕捉到不同尺度的位置信息

3. 绝对位置编码的使用
在 Transformer 中,绝对位置编码通常与词嵌入相加后输入到模型中:

# 假设 word_embeddings 是嵌入向量 (seq_len, d_model)
word_embeddings = torch.randn(seq_len, d_model)
input_with_pos = word_embeddings + pos_encoding  # 加入位置编码

这种加法操作将词嵌入与位置编码结合在一起,使得模型既能够感知词语的语义信息,也能感知其在序列中的位置信息。

4. 实现代码

import torch
import mathdef generate_position_encoding(seq_len, d_model):"""生成绝对位置编码的函数。:param seq_len: 序列的长度:param d_model: 嵌入向量的维度:return: 位置编码矩阵 (seq_len, d_model)"""# 初始化位置编码矩阵position_encoding = torch.zeros(seq_len, d_model)# 生成位置索引和维度索引position = torch.arange(0, seq_len).unsqueeze(1)  # (seq_len, 1)div_term = torch.exp(torch.arange(0, d_model, 2) * (-math.log(10000.0) / d_model))  # (d_model // 2,)# 应用正弦和余弦函数position_encoding[:, 0::2] = torch.sin(position * div_term)  # 偶数维度position_encoding[:, 1::2] = torch.cos(position * div_term)  # 奇数维度return position_encoding# 示例
seq_len = 32 #10  # 序列长度
d_model = 128 #16  # 嵌入维度
pos_encoding = generate_position_encoding(seq_len, d_model)
print(pos_encoding)# 可视化位置编码
import matplotlib.pyplot as plt
import seaborn as snsplt.figure(figsize=(10, 6))
ax = sns.heatmap(pos_encoding.numpy(), cmap='coolwarm', annot=False, cbar=True)# 将横轴放置在顶部
ax.xaxis.set_ticks_position('top')  # 将x轴移至顶部
plt.title('Absolute Position Encoding')
plt.xlabel('Embedding Dimension')
plt.ylabel('Position in Sequence')# 调整布局以避免标签重叠
plt.subplots_adjust(top=0.85)
plt.show()print()

在这里插入图片描述
5. 绝对位置编码的优缺点
优点:
无参数化:绝对位置编码是固定的,不会增加模型的参数。
周期性和可扩展性:正弦和余弦函数的周期性使得编码具有平滑的性质,且理论上可以扩展到更长的序列。
简单易用:只需将固定的编码添加到词嵌入中即可。
缺点:
不灵活:固定的位置编码对任务或数据不具备适应性,可能限制模型的表现。
长序列表示问题:对于非常长的序列,编码的分辨率可能不足(由于正弦和余弦函数的周期性)。
相对位置信息不足:绝对位置编码只关注位置本身,无法直接捕捉相对位置关系

相关文章:

位置编码-APE

Transformer 中的绝对位置编码 (以下由gpt 生成) Transformer 的绝对位置编码(Absolute Position Encoding, APE)是用于对序列数据中的位置信息进行建模的一种方法。在 Transformer 的架构中,输入数据(如句…...

MySQL有哪些锁?

1.MySQL有哪些锁? 全局锁表级锁 表锁元数据锁意向锁 行级锁 记录锁间隙锁临键锁临时意向锁 我了解的是MySQL的锁可以分为全局锁、表级锁、行级锁。 我比较熟悉的是表级锁和行级锁,如果我们对表结构进行修改时,MySQL就会对这个表结构加一个…...

Everything实现,快速搜索文件

最近编写NTFS文件实时搜索工具, 类似 Everything 这样, 翻阅了很多博客, 结果大致如下: 1.分析比较肤浅, 采用USN日志枚举来获取文件记录 速度一言难尽, 因为日志枚举的是全盘所有文件的所有日志, 记录比文件记录还多, 速度当然很慢, 还有的甚至于是 使用 DeviceIoControl 函数…...

[硬件] DELL BIOS 相关注意事项

前言 前段时间重装系统. DELL BIOS属实资料少, 又难用. 这里给出相关的注意事项, 并且配上图片. BIOS相关注意事项 进入BIOS ESC/F2/ F12. 都可以进入BIOS, 当进U盘的入Win PE系统时, 使用F12 效果更佳. 关闭安全模式 切换到Boot Configuration选项,将Secure Boot选项off选…...

Rocky Linux 下安装Liboffice

Rocky Linux下安装Liboffice。 Step1: 在桌面,单击击键盘的Window键,点击出现的白色software按钮图标; Step2: 输入lib,即可自动跳出libre Office, 进行安装; Step3: Have fun with Rocky Linux....

【每日学点鸿蒙知识】长时任务、HarmonyAppProvision申请、preferences、Testing工具、应用保活

1、HarmonyOS 如何解决语音聊天、通信app退后台系统采集播放回调就会停止,回前台未恢复? 关于应用切到后台系统采集播放回调停止的问题原因如下:为了降低设备耗电速度、保障用户使用流畅度,系统会对退至后台的应用进行管控&#…...

步进电机驱动算法——S形加减速算法原理

1. 前言: 最近项目又用到了步进电机,为了在运动中加减速更加平稳决定研究一下S型加减速,原来用过野火的s型加减速程序,云里雾里的移植成功了,今天再翻来程序看一脸懵逼,重新学习了一下发现所有公式都能看懂…...

【图像去噪】论文复现:大道至简!ZS-N2N的Pytorch源码复现,跑通源码,获得指标计算结果,补充保存去噪结果图像代码,代码实现与论文理论对应!

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 完整代码和训练好的模型权重文件下载链接见本文底…...

2024年中国新能源汽车用车发展怎么样 PaperGPT(一)

概述 在国家政策的强力扶持下,2024年中国新能源汽车市场迎来了新的发展机遇。本文将基于《中国新能源汽车用车报告(2024年)》的数据,对新能源汽车的市场发展和用车趋势概述。 新能源汽车市场发展 政策推动:国家和地…...

数据结构-排序思想

直接插入排序 将后面的无序区中的元素挨个向前面的有序区中插入。 1.将顺序表中R[0]用作哨兵,按索引i2...n的次序,将R[i]向有序区R[1...i-1]中执行插入操作。 2.插入操作可采取在有序区中从后向前的查找比较和移动的方法。 3.此操作中比较的次数与原序列…...

python 快速排序(Quick Sort)

快速排序(Quick Sort) 快速排序是一种高效的排序算法,采用分治法(Divide and Conquer)策略。它的基本思想是:选择一个基准元素(pivot),将数组分为两部分,使得…...

MySQL数据库——常见慢查询优化方式

本文详细介绍MySQL的慢查询相关概念,分析步骤及其优化方案等。 文章目录 什么是慢查询日志?慢查询日志的相关参数如何启用慢查询日志?方式一:修改配置文件方式二:通过命令动态启用 分析慢查询日志方式一:直…...

【AIGC篇】AIGC 引擎:点燃创作自动化的未来之火

:羑悻的小杀马特.-CSDN博客 未来都是惊喜。你生来本应为高山。并非草芥。 引言: 在当今数字化的时代,人工智能生成内容(AIGC)正以一种前所未有的力量改变着我们的创作领域。它就像一个神秘而强大的魔法师,…...

C语言性能优化:从基础到高级的全面指南

引言 C 语言以其高效、灵活和功能强大而著称,被广泛应用于系统编程、嵌入式开发、游戏开发等领域。然而,要写出高性能的 C 语言代码,需要对 C 语言的特性和底层硬件有深入的了解。本文将详细介绍 C 语言性能优化的背后技术,并通过…...

常用的公共 NTP(网络时间协议)服务器

公共 NTP 服务列表 以下是一些常用的公共 NTP(网络时间协议)服务器,供您参考: 中国地区公共 NTP 服务器 国家授时中心 NTP 服务器:ntp.ntsc.ac.cn中国 NTP 快速授时服务:cn.ntp.org.cn阿里云公共 NTP 服务…...

Kafka中的Topic和Partition有什么关系?

大家好,我是锋哥。今天分享关于【Kafka中的Topic和Partition有什么关系?】面试题。希望对大家有帮助; Kafka中的Topic和Partition有什么关系? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Apache Kafka 中&#…...

Unity 使用UGUI制作卷轴开启关闭效果

视频效果 代码 using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options;public class JuanZhou : MonoBehaviour {[SerializeField]private …...

MarkDown怎么转pdf;Mark Text怎么使用;

MarkDown怎么转pdf 目录 MarkDown怎么转pdf先用CSDN进行编辑,能双向看版式;标题最后直接导出pdfMark Text怎么使用一、界面介绍二、基本操作三、视图模式四、其他功能先用CSDN进行编辑,能双向看版式; 标题最后直接导出pdf Mark Text怎么使用 Mark Text是一款简洁的开源Mar…...

整合版canal ha搭建--基于1.1.4版本

开启MySql Binlog(1)修改MySql配置文件(2)重启MySql服务,查看配置是否生效(3)配置起效果后,创建canal用户,并赋予权限安装canal-admin(1)解压 canal.admin-1…...

QGIS移动图元功能

有时需要在QGIS里面移动一些矢量图层,比如图层的地理配准,网上搜了一些资料没有查看,后来仔细找了下,在编辑-编辑几何图形-移动要素里面,可以移动图层。 注意:移动前先要选择上要移动的图层,之…...

手把手教你:在ARM架构服务器上源码编译PyTorch 1.8.1并适配华为昇腾NPU

在ARM架构服务器上源码编译PyTorch 1.8.1并适配华为昇腾NPU实战指南 当AI开发遇上国产化硬件浪潮,越来越多的团队开始尝试在ARM架构服务器上部署深度学习框架。本文将带你深入探索在华为鲲鹏等ARM服务器上从零开始编译PyTorch 1.8.1,并最终对接昇腾NPU加…...

如何用Python自动化脚本提升大麦网抢票成功率:完整配置指南

如何用Python自动化脚本提升大麦网抢票成功率:完整配置指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到周杰伦、五月天演唱会门票而烦恼吗?大麦网抢票脚本…...

RT-Thread启动流程与BSP移植实战:从内核启动到硬件适配

1. 项目概述:从启动到适配,深入RT-Thread内核如果你刚开始接触RT-Thread,或者正打算把它移植到一个新的硬件平台上,那么“启动流程”和“板级支持”这两个问题,几乎是你绕不开的坎。这不仅仅是两个孤立的技术点&#x…...

嵌入式LCD与RTC驱动实战:从时序模拟到系统整合

1. 项目概述:当LCD遇见RTC,一个经典嵌入式显示方案的深度剖析最近在整理一个老项目的资料,翻出来一个挺有意思的模块:用一块字符型LCD屏,搭配一颗实时时钟芯片,实现一个带时间显示的简易信息板。这个组合—…...

如何用NoFences告别桌面混乱:一个开源工具的实用指南

如何用NoFences告别桌面混乱:一个开源工具的实用指南 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否曾经面对过这样的场景:早上打开电脑&#…...

hot100 11盛最多水的容器

题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容…...

MATLAB文件选择对话框uigetfile()保姆级教程:从单文件到多选的完整配置流程

MATLAB文件选择对话框uigetfile()实战指南:从基础配置到高级技巧 在MATLAB日常开发中,文件选择对话框是用户交互的重要组成部分。uigetfile()函数作为MATLAB内置的文件选择工具,其灵活性和可定制性往往被初学者低估。本文将带您深入探索这个看…...

嵌入式开发工具演进:从传统IDE到多核AI系统协同平台

1. 嵌入式开发工具的演进:从“编译助手”到“系统协作者”干了十几年嵌入式,从51单片机玩到现在的多核异构AI SoC,我最大的感受就是:手里的家伙事儿,越来越跟不上趟了。早些年,一个IDE(集成开发…...

WSL2 Ubuntu22.04 部署Geant4:从零到可视化实战指南

1. 环境准备与WSL2配置 在Windows系统上通过WSL2运行Ubuntu22.04来部署Geant4,首先要确保基础环境配置正确。我去年帮实验室三个同学搭建这个环境时发现,90%的初期问题都源于WSL2配置不当。下面这些步骤都是我踩坑后总结的最佳实践: 第一步&a…...

终极指南:SSDD数据集在SAR舰船检测中的完整应用方案

终极指南:SSDD数据集在SAR舰船检测中的完整应用方案 【免费下载链接】Official-SSDD SAR Ship Detection Dataset (SSDD): Official Release and Comprehensive Data Analysis 项目地址: https://gitcode.com/gh_mirrors/of/Official-SSDD SSDD(S…...