Definition
由于 Transformer 并行处理所有令牌,而不是像循环神经网络(RNN)那样按顺序处理,因此它缺乏对令牌顺序的固有认知。位置编码通过向输入嵌入添加特定的向量来保留这种顺序信息。
Summary
一种将序列中令牌的相对或绝对位置信息注入 Transformer 模型的技术。
Key Concepts
Use Cases
Code Example
1
2
3
4
5
6
7
8
9
| import torch
import math
def get_positional_encoding(seq_len, d_model):
pe = torch.zeros(seq_len, d_model)
position = torch.arange(0, seq_len, dtype=torch.float).unsqueeze(1)
div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
pe[:, 0::2] = torch.sin(position * div_term)
pe[:, 1::2] = torch.cos(position * div_term)
return pe.unsqueeze(0)
|