这是我正在查看的 API,https://pytorch.org/docs/stable/nn.html#gru
它输出:
output
形状(seq_len,batch,num_directions * hidden_size)h_n
形状(num_layers * num_directions,batch,hidden_size)对于超过一层的GRU,我想知道如何获取最后一层的隐藏状态,应该是
h_n[0]
或 h_n[-1]
?如果是双向的,如何进行切片以获得两个方向上GRU的最后一个隐藏层状态?
最佳答案
文档 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 的输出并计算最终结果。因此,以相同的顺序相应地返回结果(即隐藏状态)是自然而直观的。
关于deep-learning - PyTorch GRU 中隐藏状态的层顺序返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54242123/