#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 (зависит от того, является ли цель последовательностью или нет).