В документации nn.GRU об этом ясно. Вот пример, чтобы сделать это более явным:
Для однонаправленной GRU / LSTM (с несколькими скрытыми слоями):
output
- будет содержать все выходные функции всех временных шагов t
h_n
- вернет скрытое состояние (на последнем шаге) всех слоев.
Чтобы получить скрытое состояние последнего скрытого слоя и последнего временного шага, используйте:
first_hidden_layer_last_timestep = h_n[0]
last_hidden_layer_last_timestep = h_n[-1]
, где n
- длина последовательности.
Это потому, что в описании сказано:
num_layers - Количество повторяющихся слоев. Например, установка num_layers=2
будет означать объединение двух GRU вместе, чтобы сформировать GRU с накоплением, при этом второй GRU будет получать выходные данные первого GRU и вычислять окончательные результаты.
Таким образом, естественно и интуитивно понятно возвращать результаты (то есть скрытые состояния) соответственно в том же порядке.