我对来自 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) 上输出激活的二维张量,并且执行次数与它输出的句子的单词数,因此输出应该是大小的张量(输出句子的长度)x(词汇中的单词数),但我不明白为什么它甚至需要成对的句子(sent2)要做到这一点。
无论如何,这只是猜测,重点是我想详细看看这个函数到底在做什么,但是我对编码仍然不是很好,所以我找不到这个函数是在哪里定义的。
据我了解,它可能是它正在初始化一个 TransformerDecoder 的实例(它取决于设置),但即使是这样,我也不知道如何理解实际发生的事情,而且它似乎我认为这没有任何意义。
任何人都可以帮忙吗?