如何理解循环神经网络

如何理解循环神经网络

一、RNN

1.1 RNN公式

h t = tanh ⁡ ( W i h x t + b i h + W h h h ( t − 1 ) + b h h ) h_t = \tanh(W_{ih} x_t + b_{ih} + W_{hh} h_{(t-1)} + b_{hh}) ht=tanh(Wihxt+bih+Whhh(t1)+bhh)

1.2 最基本的RNN(level 1)

在这里插入图片描述

初始化参数

(input_size, hidden_size, num_layers) = (输入数据的维度,输出的维度,RNN层数)

rnn = nn.RNN(input_size=7,hidden_size=11,num_layers=1)
#w1 = (11x7)   b1(11)
#w2 = (11x11)  b2(11)

内部运算

假设:input = [a(3x7), b(3x7), c(3x7), d(3x7), e(3x7)] seq_len x batch x dim(5,3,7)

batch,seq_len,input_size = 3,5,7
#(5,3,7)|(s,b,d)
input = torch.randn(seq_len,batch,input_size)

h 1 = tanh ⁡ ( W 1 a + b 1 + W 2 h ( 0 ) + b 2 ) h_1 = \tanh(W_{1} a + b_{1} + W_{2} h_{(0)} + b_{2}) h1=tanh(W1a+b1+W2h(0)+b2)

h 2 = tanh ⁡ ( W 1 b + b 1 + W 2 h ( 1 ) + b 2 ) h_2 = \tanh(W_{1} b + b_{1} + W_{2} h_{(1)} + b_{2}) h2=tanh(W1b+b1+W2h(1)+b2)

输出结果

output,hn = rnn(input)
#output (5,3,11)
#hn (1,3,11)

1.3 什么是num_layer (level 2)

在这里插入图片描述

初始化参数

(input_size, hidden_size, num_layers) = (输入数据的维度,输出的维度,RNN层数)

rnn = nn.RNN(input_size=7,hidden_size=11,num_layers=2)
#第一层
#w1_1 (11x7)   b1_1(11)用于和input计算
#w1_2 (11x11)  b1_2(11)用于和ht-1计算

#第二层
#w2_1 (11x7)   b2_1(11)用于和第一层相同位置output计算
#w2_2 (11x11)  b2_2(11)用于和第二层前一位置的output计算

输出结果

output,hn = rnn(input)
#output (5,3,11)
#hn (num_layer,3,11)

1.4 什么是双向 (level 3)

在这里插入图片描述

(input_size, hidden_size, num_layers) = (输入数据的维度,输出的维度,RNN层数)

rnn = nn.RNN(input_size=7,hidden_size=11,num_layers=2)
#第一层
#w1_1 (11x7)   
#w1_2 (11x22)  变成2x11,分别用于前向计算和后向计算


输出结果

output,hn = rnn(input)
#output (5,3,11xbid)
#hn (num_layer*bid,3,11)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值