Фактически, последний временной шаг, возвращаемый, когда return_sequences=True
эквивалентен выходу слоя LSTM, когда return_sequences=False
:
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