pytorch笔记:RNN 系列

来自B站视频API查阅TORCH.NN

  • RNN可以处理变长序列,是因为其每个时刻的参数是共享的
  • RNN每算出一个时刻都可以输出,适合流式输出,但串行计算比较慢,无法获取太长的历史信息
  • RNN 初始隐状态不提供默认是0,输出包括两部分:所有时刻的输出 (batch_size,seq_len,out_hidden_size*num_direction) 和 最后一个时刻的隐状态 (num_layers*num_direction,batch_size,out_hidden_size)。竖向的是第一个元素,横向的是最后一个元素。即实际上第一个输出的最后一个元素就是第二个元素(冗余的)

这里的RNN没有提供 O t = H t W h q + b q O_t=H_tW_{hq}+b_q Ot=HtWhq+bq,输出只是 H t H_t Ht

  • LSTM 中 指定 proj_size 后是 LSTM 的一个变体,hidden_size 会经过 W h r W_{hr} Whr 压缩成 proj_size,减少了模型参数添加链接描述
  • LSTM 的输入比 RNN 多了 C,如果不提供默认C 和 H 都是全0,输入的时候如果是多层或者双向,h的第一个维度不是1,需要1的话可以h.unsqueeze(0)

请添加图片描述

  • F t , I t , O t F_t,I_t,O_t Ft,It,Ot都是直接通过 X t , H t − 1 X_t,H_{t-1} Xt,Ht1得到,激活函数是 σ \sigma σ C ~ t \tilde C_t C~t 也是 X t , H t − 1 X_t,H_{t-1} Xt,Ht1得到,激活函数是 t a n h tanh tanh,计算的时候可以四个 W concat 起来做矩阵乘法然后需要的时候用切片截取,计算并行性好
  • C t = F t ⊙ C t − 1 + I ⊙ C ~ t C_t=F_t\odot C_{t-1}+I\odot \tilde C_t Ct=FtCt1+IC~t H t = O t ⊙ t a n h ( C t ) H_t=O_t\odot tanh(C_t) Ht=Ottanh(Ct)
  • GRU 的参数和计算量只是 LSTM 的 3/4
    请添加图片描述
  • R t , Z t R_t,Z_t Rt,Zt都是直接通过 X t , H t − 1 X_t,H_{t-1} Xt,Ht1得到
  • H ~ t = t a n h ( X t W x h + ( R t ⊙ H t − 1 ) W h h + b h ) \tilde H_t=tanh(X_tW_{xh}+(R_t\odot H_{t-1})W_{hh}+b_h) H~t=tanh(XtWxh+(RtHt1)Whh+bh)
  • H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H ~ t H_t=Z_t\odot H_{t-1}+(1-Z_t)\odot \tilde H_t Ht=ZtHt1+(1Zt)H~t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_森罗万象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值