PositionalEncoding类代码及论文原理理解

news2024/11/25 6:35:05

Transformer中PositionalEncoding类的pytorch代码实现如下:

class PositionalEncoding(nn.Module):
    "Implement the PE function."
    def __init__(self, d_model, dropout, max_len=5000):
        super(PositionalEncoding, self).__init__()
        self.dropout = nn.Dropout(p=dropout)
        
        # Compute the positional encodings once in log space.
        pe = torch.zeros(max_len, d_model)
        position = torch.arange(0, max_len).unsqueeze(1)
        div_term = torch.exp(torch.arange(0, d_model, 2) *
                             -(math.log(10000.0) / d_model))
        pe[:, 0::2] = torch.sin(position * div_term)
        pe[:, 1::2] = torch.cos(position * div_term)
        pe = pe.unsqueeze(0)
        self.register_buffer('pe', pe)
        
    def forward(self, x):
        x = x + Variable(self.pe[:, :x.size(1)],requires_grad=False)
        return self.dropout(x)

这里实现了一个正余弦的序列位置编码。序列位置编码可以使用线性函数表示,也可以通过训练学习得到,论文中提出使用正余弦的位置编码可以使模型预测出在训练阶段没有见过的更长的序列长度。

论文原文公式如下:
在这里插入图片描述
此处我的疑问是代码中使用了exp和log与公式对应不上,可能是数学功底太差我推到不出来,希望之后能弄明白。

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

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

相关文章

中兴服务器等新一代算力基础设施亮相2023中国算力大会

日前2023中国算力(基础设施)大会在银川顺利举行,本次大会由工业和信息化部、宁夏回族自治区人民政府共同举办,中兴通讯亮相大会,并带来了新一代算力基础设施——中兴服务器及存储产品,其中包括通用服务器、…

python捕获异常和scapy模块的利用

Python捕获异常 ​ 当程序运行时,因为遇到未知的错误而导致中止运行,便会出现Traceback 消息,打印异常。异常即是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行。一般情况下,在Python 无法正…

“排队领奖,购物狂欢!开启全新商业模式

欢迎来到这个充满惊喜的商业模式——工会排队奖励模式!在这个时代,你是否感到购物和消费的乐趣被平淡无奇的模式所限制?那么,这个全新的商业模式将带你进入一个充满刺激和惊喜的世界! 想象一下,当你购物时&…

分享者 - 携程旅游创作者搬砖项目图文教程

大家好!携程这个出行旅游平台相信大家都不陌生吧。 每天都有大量的旅客在里面浏览攻略,寻找灵感和旅游建议。 那么,我们的项目就是把一些优质的小红书平台上的旅游攻略或作品,经过处理后搬运到携程平台上发布。 这个项目如何操作呢…

【音视频 | Ogg】Ogg封装格式详解——包含Ogg封装过程、数据包(packet)、页(page)、段(segment)等

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

自定义在input生成tag标签样式,标签可删除。组件封装

生成效果如图&#xff1a; <template><div class"tag-input"><!-- 父盒子 --><div class"father_box" click"fatherOnclick" :class"verify?:notVerify"><!-- 生成的标签 --><div v-for"(item…

部署DB-GPT

踩坑 参考文献安装环境与模型运行安装conda环境下载git-lfs克隆源码配置.env文件加载SQLite的数据运行DB-GPT配置sqlite数据库数据库示例 pydantic版本问题bash报错 参考文献 https://zhuanlan.zhihu.com/p/629467580 https://blog.csdn.net/qq_40231723/article/details/1339…

Python异步网络编程利器——详解aiohttp的使用教程

一、引言 在现代Web应用程序开发中&#xff0c;网络请求是非常常见的操作。然而&#xff0c;传统的同步网络请求方式在处理大量请求时会导致性能瓶颈。为了解决这个问题&#xff0c;Python提供了aiohttp库&#xff0c;它是一个基于异步IO的网络请求库&#xff0c;可以实现高效…

CCF ChinaSoft 2023 论坛巡礼 | 测试预期问题与蜕变测试研究进展论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

win10-mmgen安装/cyclegan运行问题记录

mmconda环境&#xff1a; conda&#xff1a; CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorch pip install mmcv-full1.5.0 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html 成功运行 c…

golang 发起 http 请求,获取访问域名的 ip 地址(net, httptrace)

前言 今天碰到了个需求&#xff0c;我要知道程序对外访问的 http 请求域名的 ip 地址。 直接查看 golang 的 net/http 包&#xff0c;发现 Response 中并没有我想要的 ip 信息。 考虑到在 OSI 七层模型中&#xff0c;ip 是网络层协议&#xff0c;而 http 是应用层协议。去翻…

面试算法50:向下的路径节点值之和

题目 给定一棵二叉树和一个值sum&#xff0c;求二叉树中节点值之和等于sum的路径的数目。路径的定义为二叉树中顺着指向子节点的指针向下移动所经过的节点&#xff0c;但不一定从根节点开始&#xff0c;也不一定到叶节点结束。例如&#xff0c;在如图8.5所示中的二叉树中有两条…

喜讯!INFINI Easysearch 在墨天轮数据库排名中挺进前30!

近日&#xff0c;2023 年 10 月的 墨天轮中国数据库流行度排行 火热出炉&#xff0c;本月共有 283 个数据库参与排名&#xff0c;中国数据库行业竞争日益激烈。其中&#xff0c;极限科技旗下软件产品 INFINI Easysearch 稳步推进&#xff0c;在国内整个数据库排行中进入了前 30…

海康威视iVMS综合安防系统文件上传漏洞复现

简介 海康威视iVMS集中监控应用管理平台&#xff0c;是以安全防范业务应用为导向&#xff0c;以视频图像应用为基础手段&#xff0c;综合视频监控、联网报警、智能分析、运维管理等多种安全防范应用系统&#xff0c;构建的多业务应用综合管理平台。 漏洞描述 海康威视iVMS系统…

Qt 插件开发详解

1.简介 Qt插件是一种扩展机制&#xff0c;用于将应用程序的功能模块化&#xff0c;并且可以在运行时动态加载和卸载。Qt框架为插件提供了一套标准的接口和管理机制&#xff0c;使得插件的使用和集成变得简单和灵活&#xff0c;通过插件机制&#xff0c;可以将应用程序的功能划…

QT5.15.2搭建Android编译环境及使用模拟器调试(全)

一、安装QT5.15.2 地址&#xff1a;下载 我电脑的windows的&#xff0c;所以选windows 由于官方安装过程非常非常慢&#xff0c;一定要跟着步骤来安装&#xff0c;不然慢到怀疑人生 1&#xff09;打开"命令提示符"&#xff08;开始 -> Windows 系统 -> 命令…

安防监控系统EasyCVR视频汇聚平台,如何实现视频汇聚?

关注我们的朋友都知道&#xff0c;EasyCVR平台最初就是以汇聚为核心而进行打造的&#xff0c;那到底什么是汇聚平台呢&#xff1f;又如何进行视频资源汇聚&#xff1f;简单来说&#xff0c;视频汇聚平台是指能够从不同的视频源&#xff08;例如直播、点播等&#xff09;收集、整…

如何使用Ruby 多线程爬取数据

现在比较主流的爬虫应该是用python&#xff0c;之前也写了很多关于python的文章。今天在这里我们主要说说ruby。我觉得ruby也是ok的&#xff0c;我试试看写了一个爬虫的小程序&#xff0c;并作出相应的解析。 Ruby中实现网页抓取&#xff0c;一般用的是mechanize&#xff0c;使…

【JMeter】插件管理工具

1. 官方下载地址 Documentation :: JMeter-Plugins.org 2.安装 将该插件的jar包移动到lib/ext下 3.重启JMeter就可以看到插件管理器 4. 安装&#xff0c;更新&#xff0c;删除插件 安装插件 删除插件 更新插件

Windows10电脑上的此电脑图标在哪里找到?

Windows10电脑上的此电脑图标在哪里找到&#xff1f; 1、在Windows10电脑桌面上鼠标右键&#xff0c;找到个性化点击打开&#xff1b; 2、打开个性化桌面设置后&#xff0c;找到主题并点击进入&#xff1b; 3、在主题相关的设置中找到桌面图标设置&#xff0c;并点击打开&…