1.PyTorch的循环网络模块
1 标准RNN
在PyTorch中的调用也非常简单,使用 nn.RNN()即可调用,下 面依次介绍其中的参数。
input_size 表示输入的特征维度
hidden_size 表示输出h的特征维度
num_layers 表示网络层数,默认为1层
nonlinearity 表示非线性激活函数选择,默认为tanh,可以选择relu
bias 表示是否使用偏置,默认为True
batch_first 决定网络输入的维度顺序,默认网络输入是按照(seq,batch,feature)输入的,也就是序列长度放在最前面然后是批量最后是特征维度,若此参数设置为True,那么顺序就变为(batch_size,sq,feature)
dropout 此参数接受一个0~1的数值,会在网络中除最后一层之外的其他输出层加上dropout层
bidirectional 默认为False,若设置为True,就是双向循环神经网络
网络接收的输入和输出
网络会接受一个序列输入xt和记忆输入h0,xt的维度是(seq,batch,feature),分别表示序列长度、批量和输入的特征维度,h0也叫隐藏状态,他的维度是(layers*direction,batch,hidden)分别表示序列长度、批量和输出维度乘上方向(如果是单向是1,双向则是2)、批量和输出维度。
网络会输出 output和hn,output表示网络实际的输出,维度是(seq,batch, hidden*direction),分别表示序列长度、批量和输出维度乘上方向, hn表示记忆单元,维度是(layer*direction,batch,hidden),分别表 示层数乘方向、批量和输出维度。
首先建立一个简单的循环神经网络:输入维度是20、输出维度是50、两层的单向网络
basic_rnn = nn.RNN(input_size=20