本文简要介绍python语言中 torch.nn.RNN
的用法。
用法:
class torch.nn.RNN(*args, **kwargs)
input_size-输入
x
中的预期特征数hidden_size-隐藏状态的特征数
h
num_layers-循环层数。例如,设置
num_layers=2
意味着将两个 RNN 堆叠在一起形成一个stacked RNN
,第二个 RNN 接收第一个 RNN 的输出并计算最终结果。默认值:1nonlinearity-使用的非线性。可以是
'tanh'
或'relu'
。默认值:'tanh'
bias-如果
False
,则该层不使用偏置权重b_ih
和b_hh
。默认值:True
batch_first-如果
True
,则输入和输出张量提供为(batch, seq, feature)
而不是(seq, batch, feature)
。请注意,这不适用于隐藏或单元状态。有关详细信息,请参阅下面的输入/输出部分。默认值:False
dropout-如果非零,则在除最后一层之外的每个 RNN 层的输出上引入
Dropout
层,丢弃概率等于dropout
。默认值:0bidirectional-如果
True
,则成为双向 RNN。默认值:False
~RNN.weight_ih_l[k]-k-th 层的可学习 input-hidden 权重,形状为
(hidden_size, input_size)
的k = 0
。否则,形状为(hidden_size, num_directions * hidden_size)
~RNN.weight_hh_l[k]-k-th 层的可学习 hidden-hidden 权重,形状为
(hidden_size, hidden_size)
~RNN.bias_ih_l[k]-k-th 层的可学习 input-hidden 偏差,形状为
(hidden_size)
~RNN.bias_hh_l[k]-k-th 层的可学习 hidden-hidden 偏差,形状为
(hidden_size)
将具有 或 非线性的多层 Elman RNN 应用于输入序列。
对于输入序列中的每个元素,每一层计算以下函数:
其中
t
的隐藏状态, 是时间t
的输入, 是时间t-1
的前一层的隐藏状态或时间的初始隐藏状态0
。如果nonlinearity
是'relu'
,则使用 代替 。 是时间- 输入:输入,h_0
input: 形状张量
当batch_first=False
或者 当batch_first=True
包含输入序列的特征。输入也可以是打包的可变长度序列。看torch.nn.utils.rnn.pack_padded_sequence()
或者torch.nn.utils.rnn.pack_sequence详情。h_0: 形状张量
包含批次中每个元素的初始隐藏状态。如果未提供,则默认为零。
其中:
- 输出:输出,h_n
output: 形状张量
当batch_first=False
或者 当batch_first=True
包含输出特征(h_t)
从RNN的最后一层,对于每个t
.如果一个torch.nn.utils.rnn.PackedSequence
已作为输入给出,输出也将是一个打包序列。h_n: 形状张量
包含批次中每个元素的最终隐藏状态。
注意
所有的权重和偏差都是从 初始化的,其中
注意
对于双向 RNN,前向和后向分别是方向 0 和 1。
batch_first=False
:output.view(seq_len, batch, num_directions, hidden_size)
时拆分输出层的示例。警告
在某些版本的 cuDNN 和 CUDA 上,RNN 函数存在已知的不确定性问题。您可以通过设置以下环境变量来强制执行确定性行为:
在 CUDA 10.1 上,设置环境变量
CUDA_LAUNCH_BLOCKING=1
。这可能会影响性能。在 CUDA 10.2 或更高版本上,设置环境变量(注意前导冒号)
CUBLAS_WORKSPACE_CONFIG=:16:8
或CUBLAS_WORKSPACE_CONFIG=:4096:2
。有关详细信息,请参阅cuDNN 8 Release Notes。
- 孤儿
注意
如果满足以下条件:1) cudnn 已启用,2) 输入数据在 GPU 上 3) 输入数据具有 dtype
torch.float16
4) 使用 V100 GPU,5) 输入数据不是PackedSequence
格式的持久化算法可以选择以提高性能。例子:
>>> rnn = nn.RNN(10, 20, 2) >>> input = torch.randn(5, 3, 10) >>> h0 = torch.randn(2, 3, 20) >>> output, hn = rnn(input, h0)
参数:
变量:
相关用法
- Python PyTorch RNNTLoss用法及代码示例
- Python PyTorch RNNCell用法及代码示例
- Python PyTorch RRef.rpc_sync用法及代码示例
- Python PyTorch RReLU用法及代码示例
- Python PyTorch ReduceLROnPlateau用法及代码示例
- Python PyTorch ReflectionPad1d用法及代码示例
- Python PyTorch RRef.backward用法及代码示例
- Python PyTorch RemoteModule用法及代码示例
- Python PyTorch Rows2Columnar用法及代码示例
- Python PyTorch RandomRecDataset用法及代码示例
- Python PyTorch ReplicationPad1d用法及代码示例
- Python PyTorch Resample用法及代码示例
- Python PyTorch ReplicationPad3d用法及代码示例
- Python PyTorch ReflectionPad2d用法及代码示例
- Python PyTorch RandomApply用法及代码示例
- Python PyTorch RRef.remote用法及代码示例
- Python PyTorch RarArchiveLoader用法及代码示例
- Python PyTorch RelaxedOneHotCategorical用法及代码示例
- Python PyTorch RandomErasing用法及代码示例
- Python PyTorch RendezvousHandler.shutdown用法及代码示例
- Python PyTorch ReLU用法及代码示例
- Python PyTorch ReLU6用法及代码示例
- Python PyTorch ReplicationPad2d用法及代码示例
- Python PyTorch ReflectionPad3d用法及代码示例
- Python PyTorch RRef.rpc_async用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.nn.RNN。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。