• 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

  • 相关阅读:
    Java代码生成器多表配置优化,增加自定义实体功能
    Java代码生成器加入postgresql数据库、HikariCP连接池、swagger2支持!
    SSM/SpringBoot代码生成器全面升级—增加全新前后端分离响应式主题,修复若干Bug
    记一次真实的线上事故:一个update引发的惨案!
    昨日学习安排
    C++个人学习笔记
    C++位运算符
    随手写事two
    随手写事
    Tomcat一对多遇到得问题
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/15114478.html
Copyright © 2020-2023  润新知