在 pytorch 中,提供了三种循环层的实现
层对应的类 | 功能 |
---|---|
torch.nn.RNN() | 多层 RNN 单元 |
torch.nn.LSTM() | 多层长短期记忆 LSTM 单元 |
torch.nn.GRU() | 多层门限循环 GRU 单元 |
torch.nn.RNNCell() | 一个 RNN 循环层单元 |
torch.nn.LSTMCell() | 一个长短期记忆 LSTM 单元 |
torch.nn.GRUCell() | 一个门限循环 GRU 单元 |
以 torch.nn.RNN() 为例,介绍循环层的参数、输入和输出:
input_size: 输入 x 的特征数量
hidden_size: 隐层的特征数量
num_layers: RNN 网络的层数
nonlinearity:指定非线性函数使用 tanh 还是 relu,默认是 tanh
bias:如果是 False,那么 RNN 层就不会使用偏置权重,默认是 True
batch_first:如果是 True,那么输入和输出的 shape 应该是 [batch_size, time_step, feature]
dropout:如果值非零,那么除了最后一层外,其他 RNN 层的输出都会套上一个 dropout 层,默认为 0
bidirectional:如果是 True,将会编程一个双向 RNN,默认为 False