У меня есть вопрос об этой модели из исследования в 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 (это зависит от настроек), но даже если это так, у меня естьпонятия не имею, как понять, что на самом деле происходит, более того, мне кажется, что это не имеет смысла.
Кто-нибудь может помочь?