【问题标题】:is keras Bidirectional LSTM when return_sequences=false equivalent to [forward pass + single step backward]?当 return_sequences=false 等同于 [forward pass + single step backward] 时,keras Bidirectional LSTM 是什么?
【发布时间】:2023-01-03 12:24:52
【问题描述】:

我知道 Bidirectional()return_sequences=True 时是如何工作的:

model.add(Bidirectional(LSTM(20, return_sequences=True)

但我感到困惑的是:

return_sequences=falseLSTM 时,有每个时间步都没有输出结合起来,那么这条线是如何工作的?:

model.add(Bidirectional(LSTM(20, return_sequences=False)))

model.add(Bidirectional(LSTM(20)))

例如来自 keras 团队的this code(注意默认情况下 LSTM return_sequences=False

我的问题是:

return_sequences=False , Bidirectional() 这样说是正确的吗:

的输出向前传球来自 LSTM + "单个时间步“ 在向后方向

所以它实际上是LSTM(x1...xn)的前向传递+单步LSTM(xn)

我对吗?

================================================ =======

更新:

我认为它找到了答案,但我不确定。

return_sequences=False每个时间步都没有中间输出

所以一个“完全向前传球”+“完全向后传球”应该合并。

即前向的最后输出 + 向后的最后输出

LSTM(x1...xn)+LSTM(xn...x1)

【问题讨论】:

    标签: keras lstm bidirectional


    【解决方案1】:

    您更新中的答案是正确的。

    当 return_sequences=True 时,为每个时间步生成一个输出。因此,如果您的图层中有 5 个 LSTM 单元,则将有 5 个输出,每个单元一个。

    当 return_sequences=False 时,仅返回正向传递的最后一个输出(位于时间步 T-1)和反向传递的最后一个输出(位于时间步 0)。

    在这两种情况下,输出都以某种定义的方式合并,例如 concat、sum 等

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 2010-12-26
      相关资源
      最近更新 更多