Как получить последний вывод и полную последовательность LSTM или GRU в Keras одновременно?

В керасе, при использовании LSTM или же GRUесли я установлю return_sequences=FalseЯ получу последний вывод; если я установлю return_sequences=TrueЯ получу полную последовательность; но как получить их обоих одновременно?

1 ответ

Решение

На самом деле, последний временной шаг вернулся, когда 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
Другие вопросы по тегам