我对来自Facebook研究https://github.com/facebookresearch/UnsupervisedMT的这种模型有疑问
我想修改培训程序,但是要做到这一点,我需要更好地理解代码。
特别是在文件UnsupervisedMT/NMT/src/trainer.py
中
在def enc_dec_step
内,在第472行
scores = self.decoder(encoded, sent2[:-1], lang2_id)
我无法理解解码器函数到底在做什么,以及为什么它需要sent2
作为参数。我的意思是,我假设self.decoder()是一个函数,该函数从语言1获取句子1的编码状态,以在语言2(lang2_id)的整个词汇表上输出激活的2D张量,并且执行的次数与它输出的句子的单词数,因此输出应为张量大小(输出句子的长度)x(词汇中的单词数)的张量,但我不明白为什么它甚至需要成对的句子(sent2)为此。
无论如何,这只是猜测,重点是我想详细了解此函数的确切功能,但是我对编码仍然不太满意,所以我找不到该函数的位置定义。
据我了解,它可能正在初始化一个TransformerDecoder实例(取决于设置),但是即使是这样,我也不知道如何理解实际发生的事情在我看来,这没有任何意义。
有人可以帮忙吗?