Порядок слоев в скрытых состояниях в PyTorch GRU return - PullRequest
0 голосов
/ 17 января 2019

Это API, на который я смотрю, https://pytorch.org/docs/stable/nn.html#gru

Это выводит:

  1. output формы (seq_len, партия, num_directions * hidden_size)
  2. h_n формы (num_layers * num_directions, партия, скрытый_размер)

Для GRU с более чем одним слоем мне интересно, как получить скрытое состояние последнего слоя, должно ли оно быть h_n[0] или h_n[-1]?

Что, если он двунаправленный, как выполнить нарезку, чтобы получить последние скрытые слои GRU в обоих направлениях?

1 Ответ

0 голосов
/ 18 января 2019

В документации 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 и вычислять окончательные результаты.

Таким образом, естественно и интуитивно понятно возвращать результаты (то есть скрытые состояния) соответственно в том же порядке.

...