RNN
1.将上一层的隐状态和这一层的X作为输入
2.输入*权重 + 偏差作为第一个输出
3.第一个输出经过激活函数后得到当前的隐状态
4.当前隐状态*权重+ 偏差最为最终的输出
5.将输出 和 当前隐状态输出 作为结果
输入层参数:
input.shape —> (batch_size, word_features)
weight_xh ----> (word_features, num_hiddens)
H.shape -----> (batch_size, num_hiddens)
weight_hh ----->(num_hiddens, num_hiddens)
bias -----> (num_hiddens)
实际上可以将 x 和 H 进行拼接后 计算
[x] * [w_xh] + [b_xh]
[H] * [w_hh] + [b_hh]
输出层参数:
W_hq = normal((num_hiddens, num_outputs))
b_q = torch.zeros(num_outputs)
前向传播计算过程:
state 用来传入初始隐状态H
params 传入每层计算所需参数