【问题标题】:How do stateful bidirectional RNNs work in Keras有状态的双向 RNN 如何在 Keras 中工作
【发布时间】:2017-07-04 09:29:53
【问题描述】:

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

在有状态的单向模型中,一个批次的状态会转移到下一个批次。我猜它对双向模型中的前向层的工作方式相同。

但是后向层是从哪里获取状态的呢?如果我正确理解所有内容,它应该在技术上从“下一个”批次中接收它的状态。但显然“下一个”批次还没有计算出来,那么它是如何工作的呢?

【问题讨论】:

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


    【解决方案1】:

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

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

    所以 - 如您所见 - 您正在失去 时间 方向。您正在从头到尾分析输入。在这种情况下 - 设置 stateful=True 只是根据双向分支的方向从前一个样本中获取其起始状态(forward 取自 forwardbackward 取自 backward)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 2018-07-09
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多