PyTorch-RNN笔记

本文深入探讨了时间序列处理中的RNN和LSTM模型,对比了两种模型的特性,详细解释了LSTM如何通过引入闸门机制解决梯度弥散问题,以及在PyTorch中的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 时间序列
    1. 采用两种数据表示方式:[word_num, batch, word_vec]和[batch, word_num, word_vec]
    2. PyTorch中Embedding有两种表示方式:word2vec和GloVe,而且已经提供了实现方式。
      3)PyTorch中使用nn.Embedding执行查表操作,使用PyTorch中面向自然语言处理的torchnlp包可以实现。使用GloVe是一种编码方式,会直接下载一个2.18GB大小的文件,可以直接使用。
    3. 也可以将输入图片看做时序信号,从上到下每个时间点对应一行像素点!
  2. 用RNN对时间信号序列进处理:
    1. 公式化表示:
      ht = fW(ht-1, xt)
      ||
      ht = tanh(Whhht-1+Wxhxt)
      yt = Whyht
      NOTE:这里Whh和Wxh是权值共享的!
  3. RNN训练
    1. 梯度经验值是在10左右比较合适,如果大于100就会出现梯度爆炸的情形了!对于梯度爆炸,可以使用torch.nn.utils.clip_grad_norm(grad, threshold)对梯度grad进行修改,使梯度的值控制在threshold的范围内,即缩小了梯度的值但并没有改变其方向!
  4. LSTM
    1. 用LSTM解决梯度弥散问题!
    2. RNN的memory是short-term-memory,只能记住相近的信息;LSTM(Long short term memory)将记忆的时间序列加长了!
    3. 对记忆信息ht-1,应用一个"闸门"有目的性的进行过滤,对当下的信息xt也应用一个“闸门”,然后对这两者进行一个“结合”,最后输出的使用也应用一个“闸门”控制信息的输出量!采用sigmoid函数控制输出量!
      在这里插入图片描述
      这里的memory还是Ct,而ht是在Ct基础上的逻辑输出,是直接拿来用的部分,而Ct会继续维护在LSTM里面!
      在这里插入图片描述
      形式化表示如上图,更加形式化的理解如下图(0表示打开,1表示关闭)
      在这里插入图片描述
    4. PyTorch中LSTM的使用
    5. Embedding层本质上是一张表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值