2026b

# lstm


长短期记忆网络

函数库: TyDeepLearning

# 语法

Y = lstm(X, H0, C0, Weights; Bias=true, Bidirectional=false, Dropout=0.0)

# 说明

Y = lstm(X, H0, C0, Weights; Bias=true, Bidirectional=false, Dropout=0.0) 长短期记忆(LSTM)网络,根据输入序列和给定的初始状态计算输出序列和最终状态。示例

在LSTM模型中,有两条管道连接两个连续的 Cell,一条是 Cell 状态管道,另一条是隐藏状态管道。将两个连续的时间节点表示为 。指定在 时刻输入 ,在 时刻的隐藏状态 和 Cell 状态 。在 时刻的 Cell 状态和隐藏状态使用门控机制计算得到。输入门 计算出候选值。遗忘门 决定是否让上一时刻学到的信息通过或部分通过。输出门 决定哪些信息输出。候选Cell状态 是用当前输入计算的。最后,使用遗忘门、输入门、输出门计算得到当前时刻的 Cell 状态 和隐藏状态 。完整的公式如下:

其中 是sigmoid激活函数, ∗ 是乘积。, 是公式中输出和输入之间的可学习权重。例如, , 是用于从输入 x 转换为 i 的权重和偏置。 LSTM隐藏了整个循环神经网络在序列时间步(Time step)上的循环,送入输入序列、初始状态,即可获得每个时间步的隐藏状态(hidden state)拼接而成的矩阵,以及最后一个时间步对应的隐状态。我们使用最后的一个时间步的隐藏状态作为输入句子的编码特征,送入下一层。公式为:

# 示例

执行 LSTM 操作

随机产生时序数据。

using TyDeepLearning
set_backend(:mindspore)
seq_len = 64
batch_size = 32
inputsize = 10
x = randn(Float32, (seq_len, batch_size, inputsize))

执行 LSTM 操作并输出处理后的数组维度。

numHiddenUnits = 3
numlayers = 1
h0 = zeros(Float32, (numlayers * 1, batch_size, numHiddenUnits))
c0 = zeros(Float32, (numlayers * 1, batch_size, numHiddenUnits))
weights = rand(Float32, (112, 1, 1))
output = lstm(x, h0, c0, weights)
print(size(output))
(64, 32, 3)

# 输入参数

X-输入数据
数组

输入的数据。shape为 (seq_len, batch_size,InputSize) 或 (batch_size, seq_len, InputSize) 的数组。

数据类型: Float16 | Float32 | Float64 | Int64

H0-初始隐藏状态
向量

初始隐藏状态。shape 为 (num_directions * num_layers, batch_size, hidden_size) 的数组。

数据类型: Float16 | Float32

C0-初始状态向量
向量

初始状态向量。 shape 为 (num_directions * num_layers, batch_size, hidden_size) 的数组。

数据类型: Float16 | Float32

weights-权重
数组

权重,shape 为 (input_size,3×hidden_size) 。

数据类型: Float16 | Float32 | Float64 | Int64

Bias-偏置项
布尔值

Cell 是否有偏置项 。默认值:true。

数据类型: Bool

Bidirectional-是否双向
布尔值

如果 Bidirectional=true,则 num_directions=2,为双向 GRU。否则为 1,单向 GRU。默认值:false。

数据类型: Bool

Dropout-Dropout概率
标量

指的是除第一层外每层输入时的 Dropout 概率。默认值:0.0。Dropout 的范围为 [0.0, 1.0)。

数据类型: Float16 | Float32 | Float64

# 输出参数

Y-LSTM 输出
数组

LSTM 输出,形状为 (seq_len, batch_size, num_directions * numHiddenUnits) 的数据。

# 另请参阅

lstmLayer | LONG SHORT-TERM MEMORY (opens new window)