举例子演示:
假设我们有一个数据tensor,它的形状是(batch_size, seq_len, input_size),其中batch_size表示批量大小,seq_len表示序列长度,input_size表示输入特征维度。
- 首先,我们需要初始化隐藏状态tensor,用于存储GRU层的初始隐藏状态。我们可以随机生成这个tensor,或者使用零tensor。
- 然后,我们需要将输入tensor沿着seq_len维度进行拆分,得到seq_len个(batch_size, input_size)的子tensor,每个子tensor对应一个时间步的输入。
- 接着,我们需要对每个时间步进行循环处理,依次将每个子tensor输入到GRU层中。具体来说,对于第t个时间步,我们做如下操作:
- 将第t个子tensor和上一个隐藏状态输入到GRU层中,得到当前输出和当前隐藏状态。
- 将当前输出保存到一个列表中,作为最终输出的一部分。
- 更新隐藏状态为当前隐藏状态,准备下一个时间步的计算。
- 最后,我们需要将最终输出列表中的所有tensor沿着seq_len维度进行拼接,得到一个(batch_size, seq_len, hidden_size)的tensor,作为整个网络的输出。