PyBrain中出现意外的LSTM层输出

时间:2013-05-02 00:49:15

标签: neural-network pybrain lstm

我正在使用LSTM层在多个存储器单元之间进行多路复用。也就是说,有几个输入选项,我想只将其中一个输入到隐藏层。我以这种方式将输入安排到LSTM,因此除了cell_input之外,它还会根据input_gate,forget_gate和output_gate选择一个合适的单元格。

然而,似乎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 个答案:

答案 0 :(得分:1)

愚蠢的问题,当然:输出被一个sigmoid钳制。