pytorch之循环神经网络(RNN)
时常遇到循环神经网络,偶尔也会使用循环神经网络模型,但是很容易将RNN中一些参数含义忘记,既然不能像循环神经网络能记忆历史信息,那我只好将RNN参数内容整理成文档,方便日后查阅使用。以下是RNN中参数含义:
input_size:输入x的特征维度
hidden_size: 隐藏层特征数量
num_layers:网络层数,默认为1层。若2层,两个RNN单元进行堆叠,第2个RNN单元将第1个RNN单元的h作为输入
nonlinearity:表示非线性函数的选择,,默认的是tanh,也可以选择Relu
bias:偏置项的使用,False代表不使用,默认情况是True
batch_first:决定输入数据的维度顺序。默认输入是(seq,batch,feature),分别是RNN序列长度,批量数,特征维度。True表示(batch,seq,feature).
dropout:接收一个0~1的数值,会在网络除最后一层之外的其他输出层加上dropout层,默认为0
bidirectional:如果是True,表示双向的RNN。
下面使用pytorch实现一个简单的RNN
import torch as t
import torch.nn as nn
print(t.__version__)
rnn = nn.RNN(input_size=5, hidden_size=8, num_layers=2)
input = t.randn(3, 2, 5)
#初始化隐藏层
h_t = t.randn(2, 2, 8)
output, hn = rnn(input, h_t)
print(input)
print(h_t)
print(output.size())
输出结果:
1.2.0
tensor([[[ 1.1311, -0.0911, 0.2468, -0.6441, 1.1080],
[-0.9891, -0.5532, -0.0259, 0.6039, -1.8732]],
[[-1.1822, 0.6525, -0.0145, 0.3297, 1.3425],
[ 0.0903, -0.2391, 1.8707, -0.3079, -0.2726]],
[[-0.0765, -2.5307, 1.2250, 1.2432, 0.3407],
[ 1.4116, -1.1553, 0.2593, -1.0739, -0.0395]]])
tensor([[[ 5.9434e-01, -2.7574e-01, -1.1781e-01, 2.8008e-01, 1.2022e+00,
-9.7032e-02, 1.0363e+00, 2.1665e+00],
[ 1.2549e-01, 9.1247e-01, 8.0141e-01, -3.8630e-01, 3.6998e-02,
-1.0043e+00, -8.0889e-01, -2.2091e+00]],
[[-5.4489e-01, 2.4675e+00, -9.9404e-01, 1.9480e-01, 1.9308e+00,
-3.8715e-01, -5.8669e-01, 8.6178e-01],
[ 5.2911e-01, -5.7136e-01, 6.4384e-04, -8.6905e-01, 5.3215e-02,
-1.1907e+00, 3.4911e-01, -1.0760e+00]]])
torch.Size([3, 2, 8])
“不积跬步无以至千里,不积小流无以成江河”,夯实编程基础,从一点一滴开始。