我知道Bidirectional()
在return_sequences=True
:时是如何工作的
model.add(Bidirectional(LSTM(20, return_sequences=True)
但我感到困惑的是:
当return_sequences=false
在LSTM
中时,在要组合的每个时间步长都没有输出,那么这一行是如何工作的?:
model.add(Bidirectional(LSTM(20, return_sequences=False)))
model.add(Bidirectional(LSTM(20)))
例如,在keras团队的这段代码中(注意,默认情况下LSTMreturn_sequences=False
(
我的问题是:
当return_sequences=False
、Bidirectional()
的行为是这样的:时,这样说正确吗
CCD_ 11+"的正向通过的输出单个时间步长";在反向
因此它实际上是CCD_ 12+单步CCD_
我说得对吗?
=============================================
更新:
我想它找到了答案,但我不确定。
当return_sequences=False
时,在每个时间步长没有中间输出
所以一个";完全向前传球">+";完全向后通过">应该合并。
即正向的最后输出+反向的最终输出
LSTM(x1...xn)
+LSTM(xn...x1)
更新中的答案是正确的。
当return_sequences=True时,将为每个时间步长生成一个输出。因此,如果你的层中有5个LSTM单元,那么就会有5个输出,每个单元一个。
当return_sequences=False时,仅返回前向通路的最后输出(位于时间步长T-1(和后向通路的最终输出(位于时刻步长0(。
在这两种情况下,输出都以某种定义的方式合并,例如concat、sum等