1层RNN长这样,这个图比较抽象:
Pytorch的RNN的调用:
rnn_layer = nn.RNN(input_size=2, hidden_size=3, num_layers=2)
input_size
输入特征的维度,即下图中每一时刻Xt的输入长度,Xt=[x1,x2] ,长度为2
hidden_size
隐藏层神经元个数,下图中hidden_size=3
num_layers
网络的层数,下图为2层(上下之间,不是左右之间,左右之间是同一层)
输入:
X = torch.rand(2, 1, 2)
Y, h_new = rnn_layer(X, h)
X第一个参数为时间步数,有几段Xt序列
第二个为batchsize
第三个为特征长度,Xt的长度,对应input_size,Xt=[x1,x2] ,长度为2
输入还有一个h,对应下图h(t-1),一般为None
输出为y和h
对应详细结构:
抽象结构:
上图中,第一层的模型参数:
w1:input-hidden权重 [input_size,hidden_size]
w2:hidden-hidden权重 [hidden_size,hidden_size]
b1:input-hidden偏置 [hidden_size]
b2:hidden-hidden偏置 [hidden_size]
查看权重
weights=list(rnn_layer.parameters())
同一层的(左右)各单元是共享权重的
输入x的含义: