API Tensorflow RNN static_rnn

В настоящее время я изучаю API-интерфейсы RNN и Tensorflow RNN.

Для tf.contrib.rnn.static_rnn у него есть один аргумент initial_state, который является необязательным аргументом. В чем разница между переходом в начальное состояние и без прохождения начального состояния? Если я не добавлю initial_state, означает ли это, что вывод внутреннего состояния RNN не будет перенесен?

Большое спасибо!


person Chenrui Su    schedule 13.07.2018    source источник


Ответы (1)


Основное уравнение RNN похоже на state_t = nonlinearity(matmul(state_t-1, state_weights) + matmul(input_t, input_weights)). То есть состояние на данном временном шаге зависит от состояния на предыдущем временном шаге. Это рекурсивное определение, и поэтому требуется «рекурсивная остановка», которая является начальным состоянием, то есть state_0 (или state_-1, я полагаю, если вы начинаете индексировать свои входы с 0...).

Если вы не передаете начальное состояние, Tensorflow по умолчанию использует тензор нулей. Одной из альтернатив было бы сделать его обучаемым (используя вместо этого tf.Variable). Другим примером обработки начального состояния могут быть архитектуры кодер-декодер, где одна сеть (кодировщик) вычисляет выходные данные, которые затем используются в качестве начального состояния для декодера.

person xdurch0    schedule 13.07.2018
comment
Большое спасибо за ваш ответ! - person Chenrui Su; 13.07.2018