我正在使用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的了解,似乎没有任何从存储单元到实际输出的转换功能。
答案 0 :(得分:1)
愚蠢的问题,当然:输出被一个sigmoid钳制。