本文重点
前面我们学习了使用pytorch搭建RNN,本文我们学习如何使用pytorch搭建LSTM和GRU模型,我们来看一下,它们两个和LSTM和GRU有什么不同。
搭建LSTM
我们可以看到模型的搭建和RNN没什么区别,关键在于它的前向传播的返回值,out和hn和RNN表示的含义一样,多了一个cn,cn和hn的维度一样的都是[层数*方向,batch,hidden-size]
除此之外,LSTM和RNN的区别还体现在参数维度上,LSTM的参数维度是RNN的四倍,可以理解为wxh的维度为(hidden_len*4,feature_len)
out表示最上层每个时刻的输出,如果要是获取最后一个时刻可以[-1,::]
Cn表示最后一个时刻的长期状态(所有层),有两层的话,那么中间层也会获取到
hn表示最后一个时刻的隐藏状态(所有层)
搭建GRU
hidden的维度是[层数*方向,batch,hidden-size]
除此之外,GRU和RNN的区别还体现在参数维度上,GRU的参数维度是RNN的四倍,可以理解为wxh的维度为(hidden_len*4,feature_len)