我想在Keras运行LSTM并获得输出和状态 . 在TF中有类似的事情
with tf.variable_scope("RNN"):
for time_step in range(num_steps):
if time_step > 0: tf.get_variable_scope().reuse_variables()
(cell_output, state) = cell(inputs[:, time_step, :], state)
outputs.append(cell_output)
有没有办法在Keras做到这一点,我可以获得最后一个状态,并在序列的长度很大时将其提供给新的输入 . 我知道有状态=真,但我想在我训练的同时进入状态 . 我知道它使用的是扫描而不是for循环,但基本上我想保存状态,然后在下次运行时,将它们作为LSTM的起始状态 . 简而言之,获得输出和状态 .
1 回答
由于LSTM是一个图层,一个图层在keras中只能有一个输出(如果我错了就纠正我),你 can not 同时得到两个输出而不修改源代码 .
最近我正在攻击keras来实现一些先进的结构,一些你可能不喜欢的想法确实有效 . 我正在做的是 override the keras layer ,以便我们可以访问代表隐藏状态的张量 .
首先,您可以检查keras/layers/recurrent.py中的
call()
函数,了解keras的工作原理:其次,我们应该覆盖我们的Layer,这是一个简单的脚本: