8

这是我正在查看的 API,https://pytorch.org/docs/stable/nn.html#gru

它输出:

  1. output形状(seq_len、batch、num_directions * hidden_​​size)
  2. h_n形状(num_layers * num_directions,batch,hidden_​​size)

对于具有多个层的 GRU,我想知道如何获取最后一层的隐藏状态,应该是h_n[0]还是h_n[-1]

如果是双向的,如何进行切片以获取 GRU 在两个方向上的最后一个隐藏层状态?

4

1 回答 1

2

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 的输出并计算最终结果。

因此,以相同的顺序相应地返回结果(即隐藏状态)是自然而直观的。

于 2019-01-18T04:23:55.033 回答