Что такое проекционный слой в контексте нейронного машинного перевода с использованием RNN? - PullRequest
1 голос
/ 07 февраля 2020

Я прочитал статью о машинном переводе, и она использует проекционный слой. Уровень проекции объясняется следующим образом: «Дополнительная проекция направлена ​​на уменьшение размерности выходных представлений кодера для соответствия размеру стека декодера».

Кто-нибудь знает эту архитектуру или как реализовать этот уровень в Pytorch?

Ссылка на документ: https://www.aclweb.org/anthology/P18-1008.pdf

Архитектура модели:

enter image description here

1 Ответ

1 голос
/ 07 февраля 2020

Это стандартная линейная проекция. Вы можете просто добавить nn.Linear(2 * model_dim, model_dim), где model_dim - размерность RNN.

Кодер является двунаправленным, с одним RNN в обоих направлениях, имеющим выходной размер model_dim. Декодер работает только в прямом направлении, поэтому он имеет состояния только model_dim размеров. На самом деле он сохраняет много параметров в центре внимания, потому что проецирует для ключей и значений только половину размера, потому что они проецируются с model_dim вместо 2 * model_dim.

...