Transformer位置编码详解

news2025/1/17 1:47:57

在处理自然语言时候,因Transformer是基于注意力机制,不像RNN有词位置顺序信息,故需要加入词的位置信息来显示的表明词的上下文关系。具体是将词经过位置编码(positional encoding),然后与emb词向量求和,作为编码块(Encoder block)的输入信息。在《Attention Is All You Need》论文中,位置编码信息如下:

其中PE的维度为:[序列长度,编码维度](即[seq_len,emb_dim])

pos表示词语在句子中的位置

d_{model}  表示编码(emb)的维度

i表示词向量的位置,偶数位置用sin,奇数位置用cos

据此,即可根据不同的pos信息和i信息得到不同的位置嵌入信息。具体计算时候,由于sin和cos后半部分相同,采用log将次方拿下,方便计算。

具体Pytorch代码实现如下

# coding=utf8

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import torch
import math

def get_position_encoding(seq_len, emb_dim):
    pe = torch.zeros(seq_len, emb_dim)
    pos = torch.arange(0, seq_len, dtype=torch.float)
    pos = pos.unsqueeze(1)
    locpos = torch.arange(0, emb_dim, 2).float()
    div_term = torch.exp(locpos * (-math.log(10000.0) / emb_dim))    #对应上面公式最后一行
    # 第一维度序列长度,第二维度编码
    pe[:, 0::2] = torch.sin(pos * div_term)
    pe[:, 1::2] = torch.cos(pos * div_term)
    return pe
pe = get_position_encoding(100, 32)
sns.heatmap(pe)
plt.xlabel('emb_dim')
plt.ylabel('seq_len')
plt.show()

生成图如下:

补充知识点:

切片,位置编码赋值:

def clip_pos(x):
    xdata = torch.arange(1, x, 1)
    print("###xdata:###", xdata)
    """
    切片的语法使用冒号(:)来表示,形式为`[start:end:step]`,其中start表示起始索引(包含),end表示结束索引(不包含),step表示步长(默认为1)。
    如果省略start,则默认从序列的第一个元素开始
    如果省略end,则默认截取到序列的最后一个元素 
    如果省略step,则默认以步长为1进行截取
    """
    # print(xdata[0::2])
    print(xdata[0:4:2])
    print(xdata[1::2])

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

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

相关文章

程序·人生

诡异之极 2024.03.12 清新环境(股票代码002573)委托卖出 20000股,委托价4.58,当日最高价4.57 2024.03.11 清新环境(股票代码002573)委托卖出 20000股,委托价4.55,当日最高价4.54 …

谷歌(Google)历年编程真题——数组和字符串(螺旋矩阵)

Google 希望了解你的编码技能和专业技术知识,包括工具、编程语言,以及关于数据结构和算法等主题的一般知识。讨论过程中通常会反复提到相关的话题,就像在工作中的讨论那样,从而推动彼此思考并学习不同的方法。无论你的工作经验如何…

Whisper报错:ffmpeg返回异常值1

本地使用cmd命令显示ffmpeg可以用,但是使用python代码调用whisper包就报错。 查看了whisper源码,发现其也是调用的cmd来使用ffmpeg,于是修改其audio.py中的audio方法中ffmpeg的具体位置完美运行。

基于单片机电阻炉模糊算法控制性系统设计

**单片机设计介绍,基于单片机电阻炉模糊算法控制性系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机电阻炉模糊算法控制性系统的设计概要主要包括硬件设计、软件设计以及模糊控制算法的应用。以下是…

【Spring进阶系列丨第七篇】Spring框架新注解分类及详解

文章目录 一、Spring新注解1.1、Configuration注解1.1.1、定义一个类1.1.2、使用Configuration注解修饰类1.1.3、作用 1.2、Bean注解1.2.1、定义bean1.2.2、在主配置类中注册bean1.2.3、测试容器中是否有该bean1.2.4、注册bean的同时可以指定bean名称1.2.5、补充内容1.2.5.1、案…

计算机接口(部分实验)

;实验三: ;*******************************; ;* 8255方式0的C口输入,A口输出 *; ;*******************************; io8255a equ 288h io8255c equ 28ah io8255 equ 28bhcode segmentassume cs:code start: mov dx, 28bH ;设8255为…

Vue3 项目实例(二)vite.config.ts的配置与axios安装

一、vite.config.ts的配置 1、对相对路径的处理() import { defineConfig } from vite import vue from vitejs/plugin-vue // vite 提供node核心对象path import path from path // https://vitejs.dev/config/ export default defineConfig({plugins…

FPGA高端项目:解码索尼IMX327 MIPI相机+2路视频融合叠加,提供开发板+工程源码+技术支持

目录 1、前言2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理HLS多路视频融合叠加图像缓存HDMI输出工程…

数字化赋能乡村:开启乡村发展新纪元

随着信息技术的迅猛发展和数字化浪潮的席卷,乡村发展正迎来前所未有的机遇与挑战。数字化赋能乡村,不仅是推动农业现代化、提升农村治理水平的必由之路,更是开启乡村发展新纪元的关键所在。本文将围绕数字化赋能乡村这一主题,探讨…

【React】React知识要点记录

描述UI 万物皆组件 为什么多个 JSX 标签需要被一个父元素包裹? 切勿将数字放在 && 左侧 React 中为什么需要 key? React 为何侧重于纯函数? 渲染树 模块依赖树 添加交互 React如何传递事件处理函数? React 如何知道返回哪个 sta…

带你了解自动驾驶中的功能安全

谈一谈自动驾驶中的功能安全 附赠自动驾驶学习资料和量产经验:链接 一 概述 汽车涉及到人的生命财产安全,谈汽车首先要谈的就是安全。目前自动驾驶的安全主要分为三大块:功能安全,网络(信息)安全&#xf…

阿里云8核32G云服务器租用优惠价格表,包括腾讯云和京东云

8核32G云服务器租用优惠价格表,云服务器吧yunfuwuqiba.com整理阿里云8核32G服务器、腾讯云8核32G和京东云8C32G云主机配置报价,腾讯云和京东云是轻量应用服务器,阿里云是云服务器ECS: 阿里云8核32G服务器 阿里云8核32G服务器价格…

自动驾驶_交通标志识别:各目标检测算法评测

自动驾驶|交通标志识别:各目标检测算法评测 论文题目:Evaluation of Deep Neural Networks for traffic sign detection systems 开源代码:https://github.com/aarcosg/traffic-sign-detection 附赠自动驾驶学习资料和量产经验:…

【好书推荐-第十四期】《 互联网大厂晋升指南:从P5到P9的升级攻略》

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公众号:洲与AI。 🎈 本文专栏:本文收录…

【Linux】Ubuntu 压缩与解压缩

首先在Windows下安装7Zip压缩软件,以便于可以生成 .tar 和 .bz2 的压缩格式的文件。例如新建一个test文件夹,操作后如下。 gzip 压缩工具:负责 .gz 格式的文件的压缩和解压缩,gzip --help 查看使用帮助; 压缩文件&…

【Android】图解View的工作流程原理

文章目录 入口DecorView如何加载到Window中MeasureSpec MeasureView的测量ViewGroup的测量 LayoutView的layout() Draw1、绘制背景3、绘制View内容4、绘制子View6、绘制装饰 入口 DecorView如何加载到Window中 MeasureSpec 该类是View的内部类,封装View的规格尺寸…

下一个电商风口会是什么呢?揭秘电商新蓝海,我来告诉你答案!

大家好,我是电商花花。 直播电商还能持续多久呢? 这个电商项目你肯定没听过,叫视频号小店,只有电商老炮才知道,这是2024年乃至今后3年的风口。 我做电商这么多年,在视频号小店刚出台就开始研究视频号&am…

IDEA删除块注释(文档注释)/**

1. 问题缘由 在使用java写LeetCode的时候,有些题会有一些封装好的类,在本地编写代码的时候,如果没有定义好这些类,就会爆红,看着很难受,此时可以把官方定义好的类拿过来,但是这些类是有块注释的…

电商-广告投放效果分析(KMeans聚类、数据分析-pyhton数据分析

电商-广告投放效果分析(KMeans聚类、数据分析) 文章目录 电商-广告投放效果分析(KMeans聚类、数据分析)项目介绍数据数据维度概况数据13个维度介绍 导入库,加载数据数据审查相关性分析数据处理建立模型聚类结果特征分析…

基于单片机电容介电常数测量显示系统设计

**单片机设计介绍,基于单片机电容介电常数测量显示系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机电容介电常数测量显示系统的设计,是一个集成了电子技术、单片机编程、电容测量以及显…