pytorch rnn

pytorch RNN

rnn流程图

在这里插入图片描述
在说rnn时有2个点需要注意,其中上图rnn从左到右表示时间序列,理解为一个句子一个个词的输入。还有一个是从下到上表示多层的rnn,图中只有一层。

多层rnn

在这里插入图片描述

rnn参数

在这里插入图片描述

import torch
import torch.nn as nn

rnn = nn.RNN(100, 20)  
print(rnn._parameters.keys())
print(rnn.weight_ih_l0.shape) # w_{xh} [20, 100]
print(rnn.weight_hh_l0.shape) # w_{hh} [20, 20]
print(rnn.bias_ih_l0.shape) # b_{xh} [20]
print(rnn.bias_hh_l0.shape) # b_{hh} [20]

rnn的构建有3个参数
必选参数 input_size,指定输入序列中单个样本的尺寸大小,例如上图可能用一个 100 长度的向量表示一个单词,则 input_size=100
必选参数 hidden_size,指的是隐藏层中输出特征的大小
必选参数 num_layers,指的是纵向的隐藏层个数,一般设置为 1~10,default=1

rnn forward函数和输出参数

在这里插入图片描述
rnn的输入有2个参数,x是必选的,h0默认为一个全零的向量

rnn输出参数
out:所有时间戳上的最后一层 memory 状态。也就是说每一个单词的最后一层rnn的输出的向量我们都会保存到out。这也是为什么out向量的维度只有最后一个h dim与x不一样,其他都一样的原因。

ht=最后一个时间戳上面所有的 memory 状态。就是说对于最后一个时间,我们会把每一层输出的向量进行拼接。
也就是说out的最后一个向量和ht最后一个向量其实指的是同一个

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值