27:RNN循环神经网络-RNN layer

1:RNN layer的计算

 

【注】这里W的shape为[hidden len,feature len],hidden len意思是每句话的当前单词需要用多少个不同的W向量进行提取特征(结果将feature len压缩成hidden len实现降维)。feature len的意思是由于每个单词由feture len个特征表示,故每个不同的W的维度也必须是feature len。

[注]x:[seq len,batch, feature len]。seq len为时间序列也即是每句话的单词数量。

x_t=[batch,feature len]x_t表示t时刻输入的每句话的每个单词用多少个(feature len)特征表示。

h:[seq len,batch,hidden len].hidden len表示每句话的记忆单元(每个单词降维后的叠加)需要用多少个不同的W向量进行特征提取(结果将feature len压缩成hidden len实现降维)。

h_t=[batch ,hidden len]h_t表示t时刻数的每句话的记忆单元(每个单词降维后的叠加)用多少个(hidden len)不同的W向量进行特征提取(结果将feature len压缩成hidden len实现降维)。

Whh=[hidden len,hidden len]

 

 【注】nn.RNN(pa1,pa2)pa1表示每个单词的维度,pa2表示每个记忆单元的维度。

 2:初始化

3:单层RNN

 

 

 [注]前四行完成了初始化并且rnn(x,torch.zeros(1,3,20))实现了forward(x,h0)。h_0为第0时刻的记忆单元。h为最后时刻的记忆单元。

4:多层RNN

 

 [注]h:[num layers,batch,h dim],out:[seq len,batch,h dim].h为每一层最后时刻每一个句子的记忆单元的维度。out输出的是最后一层所有记忆单元状态=【h0,h1............】。

 

 5:单层RNNCell

 

 【注】RNNCell表示只完成一个时间戳上的计算(也即是每句话只完成一个单词,不进行循环)

 

 [注]for循环是实现对x:[seq len,batch,feature len]的第一维度seq len 进行循环。

6:多层RNNCell

 

posted @ 2021-08-08 11:51  收购阿里巴巴  阅读(89)  评论(0编辑  收藏  举报