【发布时间】:2013-04-26 01:46:48
【问题描述】:
我正在使用 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 的了解,似乎没有任何从记忆单元到实际输出的转换函数。
【问题讨论】:
标签: neural-network pybrain lstm