Как обрабатываются скрытые состояния [h, c] в многоуровневом (многослойном) LSTM?

#python #tensorflow #keras #lstm

#python #тензорный поток #keras #lstm

Вопрос:

Простите меня за недостаток знаний,

Я работаю над проблемой seq2seq (проблемой регрессии) с использованием LSTM, и я попытался найти исчерпывающий ответ на этот вопрос, но вместо этого я нашел противоречивые ответы.

Я решил сложить слои lstm, чтобы повысить точность прогнозирования, но позже я узнал о назначении начальных скрытых состояний. Я считаю, что могу инициализировать скрытые состояния, однако я хочу для каждого слоя отдельно, как показано ниже:

Layer1_hidden_states = rand()

Layer2_hidden_states = rand()

Я знаю, что выходные данные 1-го уровня lstm передаются на 2-й уровень lstm в качестве входных данных.

Однако, если я напишу return_sequences = True:

Принимает ли 2-й уровень lstm каждое скрытое состояние [h, c] предыдущего (1-го) уровня lstm на каждом временном шаге и передает его на 2-й уровень lstm в дополнение к выводам?

Если это так, то как начальные скрытые состояния 2-го уровня lstm объединяются с входящими [h, c] с 1-го уровня lstm?

Спасибо.

Комментарии:

1. Хорошо, я только что понял, что hidden_units каждого слоя lstm могут быть разными, поэтому изменение размеров скрытых состояний для каждого слоя так, для меня не имеет смысла, что hidden_states предыдущего слоя lstm передаются на следующий слой lstm. Однако я был бы признателен, если кто-нибудь сможет подтвердить это для меня на случай, если я что-то упустил (если скрытые состояния на самом деле передаются на следующий уровень lstm и каким-то образом объединяются со скрытыми состояниями следующего уровня lstm). Спасибо.

2. Я думаю, что нашел ответ: вывод действительно равен h из [h, c] и подается в качестве входных данных на следующий уровень lstm, поэтому return_sequences=true необходим между слоями lstm, за исключением последнего слоя lstm (зависит от того, является ли цель последовательностью или нет).