有状态双向RNN如何在Keras中运行

时间:2017-02-15 15:56:18

标签: deep-learning keras recurrent-neural-network bidirectional

在Keras中,RNN的Bidirectional包装器也支持stateful=true。我真的不明白这应该如何运作:

在有状态单向模型中,批次的状态将转移到下一批次。我想双向模型中的前向层的工作原理相同。

但是后向层从哪里获得它的状态?如果我理解正确的一切,它应该从技术上接受它的状态从下一个"批量。但显然" next"批处理还不是计算机,所以它是如何工作的?

1 个答案:

答案 0 :(得分:1)

可以通过以下方式考虑Bidirectional图层:

forward = Recurrent(..)(input)
backward = Recurrent(..., reverse_input=True)(input)
output = merge([forward, backward], ...)

所以 - 正如你所看到的 - 你正在失去时间方向。您正在分析从开头到结尾的输入。在这种情况下 - 设置stateful=True只需将其上一个样本的起始状态相应地转换为双向分支的方向(forward取自forwardbackward取自{{1} }})。

这使您的模型失去了解释 - 来自并发批次的样本可能被解释为分为批次的紧凑序列。