如何在 Keras 中同时获取 LSTM 或 GRU 的最后输出和完整序列?

Posted

技术标签:

【中文标题】如何在 Keras 中同时获取 LSTM 或 GRU 的最后输出和完整序列?【英文标题】:How to get the last output and full sequence of LSTM or GRU in Keras at same time? 【发布时间】:2019-05-12 18:25:57 【问题描述】:

在Keras中,当使用LSTMGRU时,如果我设置return_sequences=False,我会得到最后的输出;如果我设置return_sequences=True,我会得到完整的序列;但是如何同时获得它们呢?

【问题讨论】:

【参考方案1】:

其实return_sequences=True时返回的最后一个timestep就相当于return_sequences=False时LSTM层的输出:

lstm_out_rs = LSTM(..., return_sequences=True)(x)
lstm_out_rs[:,-1]  # this is the last timestep of returned sequence 

lstm_out = LSTM(..., return_sequences=False)(x)

lstm_out_rs[:,-1]lstm_out 是等价的。因此,要同时拥有它们,您可以使用Lambda 层:

lstm_out_rs = LSTM(..., return_sequences=True)(x)
out = Lambda(lambda t: [t, t[:,-1]])(lstm_out_rs)

# out[0] is all the outputs, out[1] is the last output

【讨论】:

以上是关于如何在 Keras 中同时获取 LSTM 或 GRU 的最后输出和完整序列?的主要内容,如果未能解决你的问题,请参考以下文章

Keras 中具有批量标准化的双向 LSTM

Keras - 如何获取 GRU 单元状态?

如何让 Keras LSTM 在多变量设置中对多个时间序列进行预测?

Keras LSTM:如何预测超越验证与预测?

如何在keras中堆叠多个lstm?

如何在 keras 中拟合两个连接 LSTM 的模型?