Docs > torch.nn > LSTM pytorch里使用LSTM

LSTM

CLASS torch.nn.LSTM(*args,**kwargs) [SOURCE]

对输入序列应用多层长短期记忆(LSTM) RNN。

对于输入序列中的每一个元素,每一层(layer)计算以下的函数值:

这里h_t是t时刻的hidden state,c_t是t时刻的cell state,x_t是t时刻的输入。

h_t-1是t-1时刻的hidden state,也是 o时刻的initial hidden statei_t, f_t, g_t, o_t 分别是输入门,忘记门,cell,输出门。σsigmoid函数, 是 Hadamard积。

在多层(multilayer)LSTM中,l层(l>=2)的输入x是l-1层的隐藏状态h乘以dropout  δ δ 是一个伯努利随机变量,有一定概率为0

如果指定proj_size > 0,则使用带有投影(projectionsLSTM。这将按照以下方式更改LSTM单元格。首先,h_t的尺寸将从hidden_size更改为proj_size (W_hi的尺寸将相应更改)。其次,将每一层的输出隐藏状态乘以一个可学习的投影矩阵: 。因此,LSTM网络的输出也会有不同的形状。有关所有变量的精确尺寸,请参阅下面的输入/输出部分。详情请访问https://arxiv.org/abs/1402.1128。

Parameters

 

 

 

 

 

 

 

 

 

Inputs: input, (h_0, c_0)

 

 

 

这里

Outputs: output, (h_n, c_n)

 

 

 

 

Variables

 

 

 

 

 

NOTE

所有的权重和偏差都是初始化:

 

NOTE

对于双向lstm, forwardbackward分别是方向01Example of splitting the output layers when batch_first=Falseoutput.view(seq_len, batch, num_directions, hidden_size).

 

WARNING

在一些版本的cuDNNCUDA上,RNN函数存在已知的不确定性问题。您可以通过设置以下环境变量来强制执行确定性行为:

On CUDA 10.1, 设置环境变量CUDA_LAUNCH_BLOCKING=1。这可能会影响性能。

On CUDA 10.2 or later, 设置环境变量(注意前导的冒号符号)CUBLAS_WORKSPACE_CONFIG=:16:8 或者 CUBLAS_WORKSPACE_CONFIG=:4096:2.

See the cuDNN 8 Release Notes for more information.

 

Orphan

 

NOTE

如果满足以下条件:

1)cudnn开启     2)输入数据在GPU    3)输入数据有dtype torch.float16    4)使用V100 GPU

5)输入数据不是PackedSequence格式。

可以选择持久算法(persistent algorithm来提高性能。

 

 

 

Examples:

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))

posted @   小艾shea  阅读(731)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
Live2D
欢迎阅读『Docs > torch.nn > LSTM pytorch里使用LSTM』
点击右上角即可分享
微信分享提示