5

В Keras Bidirectional Обертка для RNN также поддерживает stateful=true. Я действительно не понимаю, как это должно работать:Как работают сдержанные двунаправленные RNN в Keras

В модели с однонаправленным состоянием состояние партии переносится на следующую партию. Я думаю, он работает одинаково для прямого слоя в двунаправленной модели.

Но где же находится обратный слой, получающий его состояния? Если я все правильно понимаю, он должен технически получить его состояние из «следующей» партии. Но, очевидно, «следующая» партия еще не вычисляется, так как она работает?

ответ

1

Можно думать о Bidirectional слое в следующем образе:

forward = Recurrent(..)(input) 
backward = Recurrent(..., reverse_input=True)(input) 
output = merge([forward, backward], ...) 

Так что - как вы можете видеть - вы теряете временной ориентации. Вы анализируете ввод как от начала, так и до конца. В этом случае установка stateful=True просто берет свое исходное состояние из предыдущего образца в соответствии с направлением двунаправленной ветви (forward занимает от forward, backward занимает от backward).

Это заставляет вашу модель терять интерпретацию - образцы из параллельных партий могут интерпретироваться как компактная последовательность, разделенная на партии.