Как получить последний вывод и полную последовательность LSTM или GRU в Keras одновременно? - PullRequest
0 голосов
/ 11 декабря 2018

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

1 Ответ

0 голосов
/ 12 декабря 2018

Фактически, последний временной шаг, возвращаемый, когда 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
...