关于transformers的tensorflow教程中位置编码中i//2的解释

数据挖掘 张量流 nlp 编码 变压器 注意机制
2022-02-22 23:54:27

我在 tensorflow 中实现了变压器架构。

我正在关注教程:https ://www.tensorflow.org/tutorials/text/transformer#setup_input_pipeline

他们以这种方式实现位置编码:

angle_rates = 1 / np.power(10000, (2 * (i//2)) / np.float32(d_model))

但是在论文中 i 不除以 2 (i//2),这是一个错误吗?,或者为什么是做这个操作的原因?

在此处输入图像描述

谢谢

1个回答

这不是一个错误,尽管他们对这个技巧增加了一些混乱。他们最好把他们的论点称为j代替i, 因为他们实际上做的是他们接受所有的价值观0jdmodel1并计算PE(pos,j).j可以是偶数或奇数,但在等式的右侧它是偶数,这就是它们计算i//2并乘以 2 的原因。