主要内容

lstm

长时间的短期记忆

自从R2019b

描述

漫长的短期记忆(LSTM)操作允许网络学习长期时间步骤时间序列和序列数据之间的依赖关系。

请注意

这个函数应用深度学习LSTM操作dlarray数据。如果你想申请一个LSTM操作在一个layerGraph对象或数组,使用以下层:

例子

Y= lstm (X,H0,C0,权重,recurrentWeights,偏见)适用于长期短期记忆(LSTM)计算输入X使用最初的隐藏状态H0,初始细胞状态C0和参数权重,recurrentWeights,偏见。输入X必须是一个格式化的dlarray。输出Y是一个格式化的dlarray同样的尺寸格式X,除了任何“年代”维度。

lstm功能更新单元和隐状态使用双曲正切函数(双曲正切)状态的激活函数。的lstm函数使用的s形的函数 σ ( x ) = ( 1 + e x ) 1 随着门激活函数。

(Y,hiddenState,cellState)= lstm (X,H0,C0,权重,recurrentWeights,偏见)后还返回隐藏状态和细胞状态LSTM操作。

(___)= lstm (___“DataFormat”,FMT)还指定了尺寸格式FMTX不是一个格式化的dlarray。输出Y是一个非格式化dlarray顺序相同的维度X,除了任何“年代”维度。

例子

全部折叠

执行一个LSTM使用三个隐藏的单元操作。

创建输入序列数据32观察10频道和序列长度为64

numFeatures = 10;numObservations = 32;sequenceLength = 64;X = randn (numFeatures numObservations sequenceLength);dlX = dlarray (X,“认知行为治疗”);

创建初始隐藏和细胞状态和三个隐藏的单位。使用相同的初始隐藏所有观察和细胞状态。

numHiddenUnits = 3;H0 = 0 (numHiddenUnits, 1);C0 = 0 (numHiddenUnits, 1);

创建可学的LSTM操作的参数。

重量= dlarray (randn (4 * numHiddenUnits numFeatures),“铜”);recurrentWeights = dlarray (randn (4 * numHiddenUnits numHiddenUnits),“铜”);偏见= dlarray (randn (4 * numHiddenUnits, 1),“C”);

执行LSTM计算

[海底,hiddenState cellState] = lstm (H0 dlX, C0、重量、recurrentWeights偏差);

视图的大小和尺寸海底

大小(海底)
ans =1×332 64
dlY.dims
ans =“认知行为治疗”

视图的大小hiddenStatecellState

大小(hiddenState)
ans =1×23 32
大小(cellState)
ans =1×23 32

检查输出hiddenState与上次相同步骤的输出海底

如果extractdata(海底(:,:,最后))= = hiddenState disp (“隐藏的状态和最后一次一步都是平等的。”);其他的disp (“隐藏的状态和过去的时间步长是不平等的。”)结束
隐藏的状态和最后一次一步是相等的。

您可以使用隐藏的状态和细胞状态跟踪的状态进一步LSTM操作和输入序列数据。

输入参数

全部折叠

输入数据,指定为一个格式化的dlarray,一个非格式化dlarray或数字数组。当X不是一个格式化的dlarray,您必须指定维度标签格式使用FMT, DataFormat”。如果X是一个数值数组,至少有一个的H0,C0,权重,recurrentWeights,或偏见必须是一个dlarray

X必须包含一个序列维标签吗“T”。如果X有任何空间维度标签吗“S”,它们夷为平地“C”通道尺寸。如果X没有一个通道尺寸,然后一个是补充道。如果X尺寸标注不明确吗“U”,他们必须独立。

数据类型:|

最初的隐藏状态向量,指定为一个格式化的dlarray,一个非格式化dlarray或数字数组。

如果H0是一个格式化的dlarray,它必须包含一个通道尺寸标注“C”和可选一批尺寸标注“B”相同的大小“B”维度的X。如果H0没有一个“B”维度,这个函数使用相同的隐藏状态向量中每个观测X

的大小“C”尺寸决定隐藏单位的数量。的大小“C”维度的H0必须等于的大小“C”的尺寸C0

如果H0不是一个格式化的dlarray,第一个维度的大小决定了隐藏的数量单位,必须与第一个维度或相同的大小“C”维度的C0

数据类型:|

初始细胞状态向量,指定为一个格式化的dlarray,一个非格式化dlarray或数字数组。

如果C0是一个格式化的dlarray,它必须包含一个通道尺寸标注“C”和可选一批尺寸标注“B”相同的大小“B”维度的X。如果C0没有一个“B”维度,使用相同的功能为每个观察细胞状态向量X

的大小“C”尺寸决定隐藏单位的数量。的大小“C”维度的C0必须等于的大小“C”的尺寸H0

如果C0不是一个格式化的dlarray,第一个维度的大小决定了隐藏的数量单位,必须与第一个维度或相同的大小“C”维度的H0

数据类型:|

重量、指定为一个格式化的dlarray,一个非格式化dlarray或数字数组。

指定权重矩阵的大小4 * NumHiddenUnits——- - - - - -InputSize,在那里NumHiddenUnits的大小吗“C”两个维度C0H0,InputSize的大小吗“C”维度的X乘以每个的大小“年代”维度的X,礼物。

如果权重是一个格式化的dlarray,它必须包含一个“C”尺寸的大小4 * NumHiddenUnits和一个“U”尺寸的大小InputSize

数据类型:|

经常性的权重,指定为一个格式化的dlarray,一个非格式化dlarray或数字数组。

指定recurrentWeights矩阵的大小4 * NumHiddenUnits——- - - - - -NumHiddenUnits,在那里NumHiddenUnits的大小吗“C”两个维度C0H0

如果recurrentWeights是一个格式化的dlarray,它必须包含一个“C”尺寸的大小4 * NumHiddenUnits和一个“U”尺寸的大小NumHiddenUnits

数据类型:|

偏见,指定为一个格式化的dlarray,一个非格式化dlarray或数字数组。

指定偏见作为一个向量的长度4 * NumHiddenUnits,在那里NumHiddenUnits的大小吗“C”两个维度C0H0

如果偏见是一个格式化的dlarray必须贴上,nonsingleton维度“C”

数据类型:|

维度的非格式化输入数据,指定为逗号分隔组成的“DataFormat”和一个字符数组或字符串FMT为每个维度的数据提供一个标签。每个字符在FMT必须是下列之一:

  • “年代”——空间

  • “C”——频道

  • “B”批处理(例如,样品和观察)

  • “T”时间(例如,序列)

  • “U”——未指明的

您可以指定多个维度标签“年代”“U”。您可以使用标签“C”,“B”,“T”最多一次。

您必须指定FMT, DataFormat”当输入数据不是一个格式化的dlarray

例子:“DataFormat”、“SSCB”

数据类型:字符|字符串

输出参数

全部折叠

LSTM输出,作为一个返回dlarray。输出Y有相同的底层数据类型作为输入X

如果输入数据X是一个格式化的dlarray,Y有相同的尺寸格式吗X,除了任何“年代”维度。如果没有一个格式化的输入数据dlarray,Y是一个非格式化dlarray相同的尺寸订单作为输入数据。

的大小“C”维度的Y是一样的隐藏单位的数量,规定的大小“C”维度的H0C0

为每个观察隐藏状态向量,作为一个返回dlarray或数字数组数据类型一样H0

如果输入H0是一个格式化的dlarray,然后输出hiddenState是一个格式化的dlarray的格式“CB”

为每个观察细胞状态向量,作为一个返回dlarray或数字数组。cellState返回数据类型一样吗C0

如果输入C0是一个格式化的dlarray,输出cellState返回一个格式化的dlarray的格式“CB”

更多关于

全部折叠

长时间的短期记忆

LSTM操作允许网络学习长期时间步骤时间序列和序列数据之间的依赖关系。有关更多信息,请参见的定义长期短期记忆层lstmLayer参考页面。

扩展功能

版本历史

介绍了R2019b