deformable_detr代码阅读一位置编码position encoding

关于公式中的i进行了说明
正文:采用正余弦函数,是根据归纳偏置和经验做出的选择
重点:
位置编码的需求:1. 需要体现同一个单词在不同位置的区别;
2. 需要体现一定的先后次序关,并且一定范围内的编码差异不应该依赖于文本长度,具有一定不变性。
1.对长为T的文本,可以编码为
p o s = 0 , 1 , . . . , T − 1 pos=0,1,...,T-1 pos=0,1,...,T12.对1方法进行归一化
P E = p o s T − 1 PE = \frac{pos}{T-1} PE=T1pos3.有界的周期性函数。上两种过于强调单调函数,转为周期性的sin/cos更好的利用了归纳偏置,一定范围内的相对次序。
P E ( p o s ) = s i n ( p o s α ) PE(pos) = sin(\frac{pos}{\alpha }) PE(pos)=sin(αpos)4.方法3太过单调,只在[-1,1]之间变换。因此,放到 d m o d e l d_{model} dmodel维度上更好。
P E ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i / d m o d e l ) PE(pos,2i) = \sin(\frac{pos}{10000^{2i/d_{model}}}) PE(pos,2i)=sin(100002i/dmodelpos) P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i / d m o d e l ) PE(pos,2i+1) = \cos(\frac{pos}{10000^{2i/d_{model}}}) PE(pos,2i+1)=cos(100002i/dmodelpos)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
k从0到d/2。每个k对应两个i,比如k=0的话,i=0,1.k=1的话,i=1,2.由(2)得知,频率为 w t w_{t} wt,则波长从2 π \pi π到10000*2 π \pi π
下面举一个简单的例子。给定一个长度为 L L L的输入序列 w = ( w 0 , ⋯   , w L − 1 ) w = (w_{0},\cdots,w_{L-1}) w=(w0,,wL1),词 w t w_{t} wt及其对应的词向量 e w t e_{w_{t} } ewt,其中, t ∈ [ 0 , L − 1 ] t\in [0,L-1] t[0,L1]。假设 d W E = 4 d_{WE}=4 dWE=4,那么 d P E = 4 d_{PE}=4 dPE=4 k ∈ [ 0 , 1 ] k\in [0,1] k[0,1]。根据公式(1)计算 w t w_{t} wt对应的位置向量:
在这里插入图片描述
这里 d P E = 4 d_{PE}=4 dPE=4就是 d m o d e l = 4 d_{model}=4 dmodel=4,所以有四个值。
参考:
【1】https://www.zhihu.com/question/347678607/answer/864217252
【2】https://zhuanlan.zhihu.com/p/106644634

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值