如何在 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中,当使用LSTM
或GRU
时,如果我设置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 的最后输出和完整序列?的主要内容,如果未能解决你的问题,请参考以下文章