• 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

  • 相关阅读:
    windows 10 查看电池损耗情况
    pycharm 远程显示 matplotlib
    关联矩阵与邻接矩阵 2018-11-27
    Determinats(行列式) 2018-11-23
    Ablation study 2018-11-10
    ODBC,实现图片循环写入Oracle数据库
    c#与java之比较(转自Jack.Wang's home)
    java中移位操作
    如何自学java迅速成为java高手
    一点点学习思考
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/15114478.html
Copyright © 2020-2023  润新知