基于PyTorch的Seq2Seq翻译模型Attention机制的实现时应注意的问题

PyTorch是现在如日中天的Deep Learning Framework,而Seq2Seq在翻译方面的应用也可谓是很成熟了,但想不到看PyTorch官网的例子的时候,还是有很多想吐槽的。PyTorch的官网给出了使用Seq2Seq进行翻译的示例代码:

Translation with a Sequence to Sequence Network and Attention

但是我在看代码的时候,是在对其Attention mechanism的实现有很多疑问,感觉这个页面里的代码,基本没实现Attention啊!仔细搜了搜,发现并不是我一个人有这样的疑问:

The attention mechanism is not the original attention mechanism in the paper · Issue #84 · spro/practical-pytorch

这个真是太尴尬了,有人回复到:我们已经在更新的教程里更正了:

spro/practical-pytorch

这个更新的教程,我也想吐槽一下:

这个ipynb文件和repo里的python文件不对应啊(另外Python文件自己也运行不起来),那我们仔细看看这个教程,发现里面还是有错误:

Bahdanau Decoder Implementation · Issue #23 · spro/practical-pytorch

作者也承认之前的教程里有问题,应该把

self.attn = GeneralAttn(hidden_size)

修改为:

self.attn = Attn("concat", hidden_size)

可是好歹也在教程里也修改一下啊。毕竟Attention is all you need:

Attention Is All You Needarxiv.org

另外吐槽一点:上面更新以后的教程里,Implementing the Bahdanau et al. model和下面对应的代码也根本对不上。下一篇文章中我会介绍一下正确的实现方法。

PyTorch官网和GitHub上影响力比较大的教程都太不负责了。

    原文作者:蛐蛐xjtu
    原文地址: https://zhuanlan.zhihu.com/p/68637282
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞