本文简要介绍python语言中 torch.nn.LSTM 的用法。
- 用法:- class torch.nn.LSTM(*args, **kwargs)
- input_size-输入 - x中的预期特征数
- hidden_size-隐藏状态的特征数 - h
- num_layers-循环层数。例如,设置 - num_layers=2意味着将两个 LSTM 堆叠在一起以形成- stacked LSTM,第二个 LSTM 接收第一个 LSTM 的输出并计算最终结果。默认值:1
- bias-如果 - False,则该层不使用偏置权重- b_ih和- b_hh。默认值:- True
- batch_first-如果 - True,则输入和输出张量提供为- (batch, seq, feature)而不是- (seq, batch, feature)。请注意,这不适用于隐藏或单元状态。有关详细信息,请参阅下面的输入/输出部分。默认值:- False
- dropout-如果非零,则在除最后一层之外的每个 LSTM 层的输出上引入 - Dropout层,丢弃概率等于- dropout。默认值:0
- bidirectional-如果 - True,则成为双向 LSTM。默认值:- False
- proj_size-如果 - > 0,将使用具有相应大小的投影的 LSTM。默认值:0
 
- ~LSTM.weight_ih_l[k]- 层 - (W_ii|W_if|W_ig|W_io)的可学习 input-hidden 权重,形状为- (4*hidden_size, input_size)用于- k = 0。否则,形状为- (4*hidden_size, num_directions * hidden_size)。如果指定了- proj_size > 0,则形状将为- (4*hidden_size, num_directions * proj_size)for- k > 0
- ~LSTM.weight_hh_l[k]- 层 - (W_hi|W_hf|W_hg|W_ho)的可学习 hidden-hidden 权重,形状为- (4*hidden_size, hidden_size)。如果指定了- proj_size > 0,则形状将为- (4*hidden_size, proj_size)。
- ~LSTM.bias_ih_l[k]- 层 - (b_ii|b_if|b_ig|b_io)的可学习 input-hidden 偏差,形状为- (4*hidden_size)
- ~LSTM.bias_hh_l[k]- 层 - (b_hi|b_hf|b_hg|b_ho)的可学习 hidden-hidden 偏差,形状为- (4*hidden_size)
- ~LSTM.weight_hr_l[k]-形状为 - (proj_size, hidden_size)的 层的可学习投影权重。仅在指定- proj_size > 0时出现。
- ~LSTM.weight_ih_l[k]_reverse-类似于 - weight_ih_l[k]的反向。仅在- bidirectional=True时出现。
- ~LSTM.weight_hh_l[k]_reverse-类似于 - weight_hh_l[k]的反向。仅在- bidirectional=True时出现。
- ~LSTM.bias_ih_l[k]_reverse-类似于 - bias_ih_l[k]的反向。仅在- bidirectional=True时出现。
- ~LSTM.bias_hh_l[k]_reverse-类似于 - bias_hh_l[k]的反向。仅在- bidirectional=True时出现。
- ~LSTM.weight_hr_l[k]_reverse-类似于 - weight_hr_l[k]的反向。仅在指定- bidirectional=True和- proj_size > 0时出现。
 
- 将多层长短期 memory (LSTM) RNN 应用于输入序列。 - 对于输入序列中的每个元素,每一层计算以下函数: - 其中是时间 - t的隐藏状态,是时间- t的单元状态,是时间- t的输入,是层的隐藏状态时间- t-1或初始隐藏状态- 0和 、 、 、 分别是输入、遗忘、单元和输出门。 是 sigmoid 函数, 是 Hadamard 积。- 在多层 LSTM 中,第 层()的输入 是前一层的隐藏状态 乘以 dropout ,其中每个 是伯努利随机变量这是 概率为 - dropout。- 如果指定 - proj_size > 0,将使用带有投影的 LSTM。这会以下列方式更改 LSTM 单元。首先,的尺寸将从- hidden_size更改为- proj_size(的尺寸将相应更改)。其次,每一层的输出隐藏状态将乘以一个可学习的投影矩阵:。请注意,因此,LSTM 网络的输出也将具有不同的形状。有关所有变量的确切尺寸,请参阅下面的输入/输出部分。您可以在 https://arxiv.org/abs/1402.1128 中找到更多详细信息。- 输入:输入,(h_0,c_0)
- input: 形状张量当 - batch_first=False或者当- batch_first=True包含输入序列的特征。输入也可以是打包的可变长度序列。看- torch.nn.utils.rnn.pack_padded_sequence()或者torch.nn.utils.rnn.pack_sequence详情。
- h_0: 形状张量包含批次中每个元素的初始隐藏状态。如果 (h_0, c_0) 未提供,则默认为零。 
- c_0: 形状张量包含批次中每个元素的初始单元状态。如果 (h_0, c_0) 未提供,则默认为零。 
 - 其中: 
- 输出:输出,(h_n,c_n)
- output: 形状张量当 - batch_first=False或者当- batch_first=True包含输出特征- (h_t)从 LSTM 的最后一层,对于每个- t.如果一个- torch.nn.utils.rnn.PackedSequence已作为输入给出,输出也将是一个打包序列。
- h_n: 形状张量包含批次中每个元素的最终隐藏状态。 
- c_n: 形状张量包含批次中每个元素的最终单元状态。 
 
 - 注意 - 所有的权重和偏差都是从 初始化的,其中 - 注意 - 对于双向 LSTM,向前和向后分别是方向 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.float164) 使用 V100 GPU,5) 输入数据不是- PackedSequence格式的持久化算法可以选择以提高性能。- 例子:- >>> rnn = nn.LSTM(10, 20, 2) >>> input = torch.randn(5, 3, 10) >>> h0 = torch.randn(2, 3, 20) >>> c0 = torch.randn(2, 3, 20) >>> output, (hn, cn) = rnn(input, (h0, c0))
参数:
变量:
相关用法
- Python PyTorch LSTM用法及代码示例
- Python PyTorch LSTMCell用法及代码示例
- Python PyTorch LazyModuleMixin用法及代码示例
- Python PyTorch LinearLR用法及代码示例
- Python PyTorch LKJCholesky用法及代码示例
- Python PyTorch L1Loss用法及代码示例
- Python PyTorch LPPool2d用法及代码示例
- Python PyTorch LeakyReLU用法及代码示例
- Python PyTorch LogSigmoid用法及代码示例
- Python PyTorch LowRankMixtureCrossNet用法及代码示例
- Python PyTorch LayerNorm用法及代码示例
- Python PyTorch LineReader用法及代码示例
- Python PyTorch LogNormal用法及代码示例
- Python PyTorch LambdaLR用法及代码示例
- Python PyTorch LocalResponseNorm用法及代码示例
- Python PyTorch LowRankMultivariateNormal用法及代码示例
- Python PyTorch Linear用法及代码示例
- Python torchrec.modules.crossnet.LowRankCrossNet用法及代码示例
- Python PyTorch LogSoftmax用法及代码示例
- Python PyTorch LocalElasticAgent用法及代码示例
- Python PyTorch LPPool1d用法及代码示例
- Python PyTorch Laplace用法及代码示例
- Python PyTorch LazyModuleExtensionMixin.apply用法及代码示例
- Python PyTorch LinearReLU用法及代码示例
- Python PyTorch frexp用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.nn.LSTM。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
