丽水品牌网站设计,江苏安宜建设工程有限公司网站,网站301重定向代码,wordpress轴值在 GRU#xff08;Gated Recurrent Unit#xff09;中#xff0c;output 和 state 都是由 GRU 层的循环计算产生的#xff0c;它们之间有直接的关系。state 实际上是 output 中最后一个时间步的隐藏状态。 GRU 的基本公式
GRU 的核心计算包括更新门#xff08;update gat… 在 GRUGated Recurrent Unit中output 和 state 都是由 GRU 层的循环计算产生的它们之间有直接的关系。state 实际上是 output 中最后一个时间步的隐藏状态。 GRU 的基本公式
GRU 的核心计算包括更新门update gate和重置门reset gate以及候选隐藏状态candidate hidden state。数学表达式如下 更新门 \( z_t \) \[ z_t \sigma(W_z \cdot h_{t-1} U_z \cdot x_t) \] 其中\( \sigma \) 是sigmoid 函数\( W_z \) 和 \( U_z \) 分别是对应于隐藏状态和输入的权重矩阵\( h_{t-1} \) 是上一个时间步的隐藏状态\( x_t \) 是当前时间步的输入。 重置门 \( r_t \) \[ r_t \sigma(W_r \cdot h_{t-1} U_r \cdot x_t) \] \( W_r \) 和 \( U_r \) 是更新门中定义的相似权重矩阵。 候选隐藏状态 \( \tilde{h}_t \) \[ \tilde{h}_t \tanh(W \cdot r_t \odot h_{t-1} U \cdot x_t) \] 这里\( \tanh \) 是激活函数\( \odot \) 表示元素乘法Hadamard product\( W \) 和 \( U \) 是隐藏状态的权重矩阵。 最终隐藏状态 \( h_t \) \[ h_t (1 - z_t) \odot h_{t-1} z_t \odot \tilde{h}_t \]
output 和 state 的关系 output在 GRU 中output 包含了序列中每个时间步的隐藏状态。具体来说对于每个时间步 \( t \)output 的第 \( t \) 个元素就是该时间步的隐藏状态 \( h_t \)。 statestate 是 GRU 层最后一层的隐藏状态也就是 output 中最后一个时间步的隐藏状态 \( h_{T-1} \)其中 \( T \) 是序列的长度。
数学表达式
如果我们用 \( O \) 表示 output\( S \) 表示 state\( T \) 表示时间步的总数那么
\[ O [h_0, h_1, ..., h_{T-1}] \] \[ S h_{T-1} \]
因此state 实际上是 output 中最后一个元素即 \( S O[T-1] \)。
在 PyTorch 中output 和 state 都是由 GRU 层的 forward 方法计算得到的。output 是一个三维张量包含了序列中每个时间步的隐藏状态而 state 是一个二维张量仅包含最后一个时间步的隐藏状态。 代码示例
class Seq2SeqEncoder(d2l.Encoder):
⽤于序列到序列学习的循环神经⽹络编码器def __init__(self, vocab_size, embed_size, num_hiddens, num_layers,
dropout0, **kwargs):super(Seq2SeqEncoder, self).__init__(**kwargs)# 嵌⼊层self.embedding nn.Embedding(vocab_size, embed_size)self.rnn nn.GRU(embed_size, num_hiddens, num_layers,dropoutdropout)def forward(self, X, *args):# 输出X的形状(batch_size,num_steps,embed_size)X self.embedding(X)# 在循环神经⽹络模型中第⼀个轴对应于时间步X X.permute(1, 0, 2)# 如果未提及状态则默认为0output, state self.rnn(X)# output的形状:(num_steps,batch_size,num_hiddens)# state的形状:(num_layers,batch_size,num_hiddens)return output, state
output在完成所有时间步后最后⼀层的隐状态的输出output是⼀个张量output由编码器的循环层返回其形状为时间步数批量⼤⼩隐藏单元数。
state最后⼀个时间步的多层隐状态是state的形状是隐藏层的数量批量⼤⼩ 隐藏单元的数量。