2018-01-08-pytorch-rnn

titlecategorylayouttagsdate
3.RNN模型
dl
post
Pytorch
dl
2018-01-08 17:10:24

本文的目标是实现Elman RNN模型。

Elman RNN模型

模型结构用数学公式表示很简单:

$$h_t=\tanh(w_{ih}*x_t+b_{ih}+w_{hh}*h_{(t-1)}+b_hh)$$

$h_{(t-1)}$表示$t-1$时刻隐层的输出,$x_t$表示$t$时刻的输入,i表示第i层。RNN使用tanh或ReLU作为激活函数。

模型的结构如下图所示:

Pytorch中的RNN模型

Pytorch中RNN模型的API为:

class torch.nn.RNN(*args, **kwargs)
1.构造函数参数说明:
参数说明
input_size输入层输入的特征个数
hidden_size隐层输入的特征个数
num_layers网络的层数
nonlinearity非线性激活函数:‘tanh’或’relu’. 默认: ‘tanh’
biasFalse,表示偏置值为0, 默认: True
batch_firstTrue, 表示输入、输出中batch放在参数第一个:(batch, seq, feature)
dropout非0表示引入Drop层,最后一层除外。
bidirectionalTrue, 表示双向RNN. 默认: False
2.输入参数说明:
  • input:输入的格式(seq_len, batch, input_size)
  • $h_0$:训练开始时隐层的初始状态:$h_0 (num_layers * num_directions, batch, hidden_size)$

batch表示有几个长度为seq_len的序列。

3.输出参数说明:
  • output:输出的格式:$output(seq_len, batch, hidden_size* num_directions)$
  • $h_n$:n时刻隐层的输出:$h_n (num_layers * num_directions, batch, hidden_size)$
4.中间变量
参数说明
weight_ih_l[k]模型学习到第k个输入层到隐层的参数,大小为:(input_size x hidden_size)
weight_hh_l[k]模型学习到第k个隐层到隐层的参数,大小为:(hidden_size x hidden_size)
bias_ih_l[k]模型学习到第k个输入层到隐层的偏置参数,大小为: (hidden_size)
bias_hh_l[k]模型学习到第k个隐层到隐层的偏置参数,大小为: (hidden_size)
5.实例
rnn = nn.RNN(10, 20, 2)
input = Variable(torch.randn(5, 3, 10))
h0 = Variable(torch.randn(2, 3, 20))
output, hn = rnn(input, h0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值