Я использую слой LSTM для мультиплексирования нескольких ячеек памяти. Тем не менее, имея несколько вариантов ввода, я хочу передать только один из них на скрытый слой. Я организовал вход в LSTM таким образом, чтобы он выбрал подходящую ячейку на основе input_gate, forget_gate и output_gate, которые я передал ей в дополнение к cell_input.Неожиданный выход слоя LSTM в PyBrain
Однако кажется, что слой LSTM преобразует значения ячеек памяти, в то время как я ожидаю, что он передаст их на выход как есть.
Например, я прохожу следующий вход, который я напечатал в группах, соответствующих input_gate, forget_gate, cell_input и output_gate для удобства:
ig: [ 0. 1. 0. 0. 0. 0.]
fg: [ 0. 0. 0. 0. 0. 0.]
ci: [ 0.5 0.5 0.5 0.5 0.5 0. ]
og: [ 1. 1. 0. 0. 0. 1.]
Я хочу LSTM слой только пройти ci[0]
, ci[1]
, и ci[5]
на выход, как указывает группа og
. Однако то, что я вижу в выходном буфере отличается:
LSTM out: [ 0.16597414 0.23799096 0.1135163 0.1135163 0.1135163 0.]
Пока не совсем бессмысленно для меня (в 0-й и 1-й записи немного больше, чем остальные) этот вывод не [.5 .5 0. 0. 0.]
что Я ожидал.
Из того, что я узнал о LSTM, не кажется, что есть какая-либо функция перехода из ячеек памяти в фактический вывод.