2013-05-02 5 views
2

Я использую слой 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, не кажется, что есть какая-либо функция перехода из ячеек памяти в фактический вывод.

ответ

1

Глупый вопрос, конечно: выход зажимается сигмоидом.

Смежные вопросы