# 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 状态管道,另一条是隐藏状态管道。将两个连续的时间节点表示为
其中
# 示例
执行 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 是否有偏置项
数据类型: 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) 的数据。