2

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

但是,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 的了解,似乎没有任何从记忆单元到实际输出的转换函数。

4

1 回答 1

1

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

于 2013-05-03T03:53:50.163 回答