我正在 Pytorch 中编写一个序列来序列神经网络。在官方 Pytorch seq2seq 教程中,有一个我无法理解/认为可能包含错误的注意力解码器代码。
它通过连接此时的输出和隐藏状态来计算每个时间步的注意力权重,然后乘以一个矩阵,得到一个大小等于输出序列长度的向量。请注意,这些注意力权重不依赖于编码器序列(在代码中命名为 encoder_outputs),我认为它应该如此。
此外,本教程中引用的论文列出了三种不同的得分函数,可用于计算注意力权重(论文第 3.1 节)。这些函数都不是仅仅连接矩阵并乘以矩阵。
所以在我看来,教程中的代码在它应用的函数和传递给这个函数的参数中都是错误的。我错过了什么吗?