在Keras中,RNN的Bidirectional
包装器也支持stateful=true
。我真的不明白这应该如何运作:
在有状态单向模型中,批次的状态将转移到下一批次。我想双向模型中的前向层的工作原理相同。
但是后向层从哪里获得它的状态?如果我理解正确的一切,它应该从技术上接受它的状态从下一个"批量。但显然" next"批处理还不是计算机,所以它是如何工作的?
答案 0 :(得分:1)
可以通过以下方式考虑Bidirectional
图层:
forward = Recurrent(..)(input)
backward = Recurrent(..., reverse_input=True)(input)
output = merge([forward, backward], ...)
所以 - 正如你所看到的 - 你正在失去时间方向。您正在分析从开头到结尾的输入。在这种情况下 - 设置stateful=True
只需将其上一个样本的起始状态相应地转换为双向分支的方向(forward
取自forward
,backward
取自{{1} }})。
这使您的模型失去了解释 - 来自并发批次的样本可能被解释为分为批次的紧凑序列。