Как реализовать двунаправленный энкодер в тензорном потоке?

В Tensorflow все функции кодера-декодера ( https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/seq2seq.py) используют однонаправленную реализацию модуля RNN.

Как мы можем реализовать двунаправленный кодировщик ( http://arxiv.org/abs/1409.0473 или аналогичные системы) в Tensorflow, чтобы можно было одновременно изучать как прямую, так и обратную последовательность в настройке кодер-декодер?

1 ответ

Это на самом деле очень просто. Вы можете просто закодировать последовательность обычно от первого до последнего и получить состояния и последний вывод в качестве вывода; затем измените последовательность и примените тот же процесс, и вы получите одинаковое количество состояний и выходных данных. Вы объединяете каждую пару состояний из одного и того же элемента, а затем получаете комбинированные состояния и два выхода.

Вы можете просто использовать API в TensorFlow: bidirectional_dynamic_rnn. Плюс, это реализация в Theano.

Другие вопросы по тегам