Я построил архитектуру кодера-декодера для машинного перевода. Во время вывода я обнаружил, что декодер генерирует повторяющиеся слова, что-то вроде:
tensor([[ 2, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 9, 11, 4, 6, 13,
5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4,
6, 13, 5, 4, 6, 13, 5, 12, 5, 4, 6, 13, 5, 4, 9, 11, 4, 6,
13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5,
4, 6, 13, 5, 4, 6, 13, 5],
[ 2, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 9, 11, 4, 6, 13,
5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4,
6, 13, 5, 4, 6, 13, 5, 12, 5, 4, 6, 13, 5, 4, 9, 11, 4, 6,
13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5,
4, 6, 13, 5, 4, 9, 10, 4],
[ 2, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 9, 11, 4, 6, 13,
5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4,
6, 13, 5, 4, 6, 13, 5, 12, 5, 4, 6, 13, 5, 4, 9, 11, 4, 6,
13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5, 4, 6, 13, 5,
4, 6, 13, 5, 4, 6, 13, 7]], device='cuda:0')
В этом случае я установил размер луча равным 3. Для отладки я тренирую модель только 2 эпохи. Модель принимает последовательность символов в качестве входных данных, и декодер предсказывает на каждом временном шаге символ. Я не знаю, почему это происходит. Поскольку он продолжает предсказывать таким образом, он никогда не предскажет токен для завершения вывода. Любая помощь будет отличной!