pytorch_RNN理解

RNN循环神经网络

如图所示为RNN的简单网络示意图,

在这里插入图片描述在这里插入图片描述

图中展示了RNN中基础的链接结构,针对t时刻的隐状态,可以有下面公司进行计算:

其中, 是t时刻的隐藏状态,是t时刻的输入,表示激活函数

pytorch实现方式

nn.RNN(input_size, hidden_size, num_layers=1, nonlinearity=tanh, bias=True, batch_first=False, dropout=0, bidirectional=False)

参数解释如下:

  • input_size:即输入特征的维度, 一般rnn中输入的是词向量,那么 input_size 就等于一个词向量的维度。
  • hidden_size:即隐藏层神经元个数,或者也叫输出的维度(因为rnn输出为各个时间步上的隐藏状态)。
  • num_layers:即网络的层数。
  • nonlinearity:即激活函数。 Can be either 'tanh' or 'relu'. Default: 'tanh'
  • bias:即是否使用偏置,If False, then the layer does not use bias weights b_ih and b_hh. Default: True
  • batch_first:If True, then the input and output tensors are provided as (batch, seq, feature). Default: False,即输入数据的形式,默认是 False,如果设置成True,则格式为(seq(num_step), batch, input_dim),也就是将序列长度放在第一位,batch 放在第二位。
  • dropout:If non-zero, introduces a Dropout layer on the outputs of each RNN layer except the last layer, with dropout probability equal to :attr:dropout. Default: 0,即是否应用dropout, 默认不使用,如若使用将其设置成一个0-1的数字即可。
  • birdirectional:If True, becomes a bidirectional RNN. Default: False,是否使用双向的 rnn,默认是 False。

实例解析:

构建一层的RNN网络

# 表示feature_len=100, hidden_len=20, 层数=1
rnn = nn.RNN(input_size=100,hidden_size=20,num_layers=1)
params=rnn._parameters
print(params.keys())

输出结果

odict_keys(['weight_ih_l0', 'weight_hh_l0', 'bias_ih_l0', 'bias_hh_l0'])

'weight_ih_l0'的形状 ——[20, 100]  'bias_ih_l0'的形状——[20]
'weight_hh_l0'的形状 ——[20, 20]   'bias_hh_l0'的形状——[20]

矩阵相乘将大小为100的输入向量变为大小为20的向量

构建多层的RNN网络

rnn = nn.RNN(input_size=100,hidden_size=20,num_layers=2)
params=rnn._parameters
print(params.keys())

输出结果

odict_keys(['weight_ih_l0', 'weight_hh_l0', 'bias_ih_l0', 'bias_hh_l0', 'weight_ih_l1', 'weight_hh_l1', 'bias_ih_l1', 'bias_hh_l1'])
'weight_ih_l0'的形状 ——[20, 100]  'bias_ih_l0'的形状——[20]
'weight_hh_l0'的形状 ——[20, 20]   'bias_hh_l0'的形状——[20]
'weight_ih_l1'的形状 ——[20, 20]  'bias_ih_l1'的形状——[20]
'weight_hh_l1'的形状 ——[20, 20]   'bias_hh_l1'的形状——[20]

第二层RNN单元以第一层输出为输入,大小均为[20,20],可以看出向量形状的变化是在第一层就完成的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值