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

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

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


person user3480922    schedule 29.07.2016    source источник


Ответы (1)


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

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

person Lerner Zhang    schedule 24.04.2018