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

它输出:

  • 形状(seq_len,批处理,num_directions * hidden_​​size)的output
  • 形状(num_layers * num_directions,batch,hidden_​​size)的h_n

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

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

    最佳答案

    文档nn.GRU对此很清楚。这是一个使它更加明确的示例:
    对于单向GRU/LSTM(具有多个隐藏层):output-将包含所有时间步的所有输出功能th_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/

    10-12 22:39