主要内容

LSTM.

长期短期记忆

描述

长短期存储器(LSTM)操作允许网络在时间序列和序列数据中的时间步骤之间学习长期依赖性。

请注意

此功能适用于LSTM操作的深度学习dlarray数据。如果要在a中申请LSTM操作layerGraph对象或数组,使用下面的图层:

例子

海底= LSTM(dlXH0C0权重经常性重量偏见)应用一个长期的短期内存(LSTM)计算来输入dlX使用初始隐藏状态H0,初始细胞状态C0和参数权重经常性重量,偏见.输入dlX是一个格式化的dlarray与尺寸标签。输出海底是一个格式化的dlarray具有相同的维度标签dlX,除了任何“年代”维度。

LSTM.函数使用双曲线切线函数(TanH)更新单元格和隐藏状态作为状态激活功能。的LSTM.函数使用给出的s形函数 σ. x ) 1 + e x ) 1 作为栅极激活功能。

海底hiddenStatecellState] = lstm(dlXH0C0权重经常性重量偏见)在LSTM操作之后还返回隐藏状态和单元格状态。

___] = lstm(___,'dataformat',FMT)还指定维度格式FMT什么时候dlX不是格式化的dlarray.输出海底是一个非格式化dlarray与尺寸顺序相同dlX,除了任何“年代”维度。

例子

全部折叠

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

创建输入序列数据为32个观测值,10个通道,序列长度为64

numfeatures = 10;numobservations = 32;sequencelength = 64;X = RANDN(NUMFEATURE,NUMOBSERERATIONS,SEDENCLENG);dlx = dlarray(x,“认知行为治疗”);

用三个隐藏单元创建初始隐藏和单元格状态。对所有观察使用相同的初始隐藏状态和单元格状态。

numhidendunits = 3;H0 =零(numhidendunits,1);C0 =零(numhidendunits,1);

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

权重= dlarray(randn(4 * numhidentunits,numfeatures),“铜”);复发重量= Dlarray(Randn(4 * numhidentunits,numhidentunits),“铜”);偏见= dlarray (randn (4 * numHiddenUnits, 1),'C');

执行LSTM计算

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

查看的大小和尺寸海底

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

查看hiddenStatecellState

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

检查输出hiddenState与输出的最后一次步骤相同海底

如果提取数据(DLY(:,:,结束))== hiddenstate disp(“隐藏的状态和最后一步步是相等的。”);其他的DISP(“隐藏状态和最后的时间步长不相等。”)结束
隐藏状态和最后一次步骤相等。

您可以使用隐藏状态和单元格状态跟踪LSTM操作的状态并输入其他顺序数据。

输入参数

全部折叠

输入数据,指定为adlarray有或没有维度标签或数字数组。什么时候dlX不是格式化的dlarray,则必须使用'dataformat',fmt.如果dlX是一个数字数组,至少有一个H0C0权重经常性重量, 或者偏见必须是一个dlarray

dlX必须包含标记的序列尺寸“T”.如果dlX有标注空间尺寸吗“年代”,它们被夷为平淡'C'通道尺寸。如果dlX没有通道维度,则添加一个。如果dlX是否有未指明的尺寸标注“U”,它们必须是单例的。

数据类型:单身的|双倍的

初始隐藏状态向量,指定为adlarray有或没有维度标签或数字数组。

如果H0是一个格式化的dlarray,它必须包含标记的通道维度'C'并且可选择标记的批处理维度'B'和它的大小一样'B'尺寸dlX.如果H0没有一个'B'维数,函数使用相同的隐藏状态向量对每个观测dlX

尺寸'C'维度确定隐藏单元的数量。尺寸'C'尺寸H0必须等于尺寸'C'的尺寸C0

如果H0a不是格式化的吗dlarray,第一维度的大小确定隐藏单元的数量,并且必须与第一维或者的大小相同'C'尺寸C0

数据类型:单身的|双倍的

初始单元格状态向量,指定为dlarray有或没有维度标签或数字数组。

如果C0是一个格式化的dlarray,它必须包含标记的通道维度'C'并且可选择标记的批处理维度'B'和它的大小一样'B'尺寸dlX.如果C0没有一个'B'维度时,函数对中的每个观测使用相同的单元格状态向量dlX

尺寸'C'维度确定隐藏单元的数量。尺寸'C'尺寸C0必须等于尺寸'C'的尺寸H0

如果C0a不是格式化的吗dlarray,第一维度的大小确定隐藏单元的数量,并且必须与第一维或者的大小相同'C'尺寸H0

数据类型:单身的|双倍的

权重,指定为dlarray有或没有维度标签或数字数组。

指定权重作为大小矩阵4 * numhidendunits.-经过-输入, 在哪里numhidandunits.是尺寸的'C'两个维度C0H0,输入是尺寸的'C'尺寸dlX乘以每一个的大小“年代”尺寸dlX,礼物。

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

数据类型:单身的|双倍的

循环权重,指定为adlarray有或没有维度标签或数字数组。

指定经常性重量作为大小矩阵4 * numhidendunits.-经过-numhidandunits., 在哪里numhidandunits.是尺寸的'C'两个维度C0H0

如果经常性重量是一个格式化的dlarray,它必须包含一个'C'尺寸的大小4 * numhidendunits.和一个“U”尺寸的大小numhidandunits.

数据类型:单身的|双倍的

偏见,指定为一个dlarray有或没有维度标签的向量或数字向量。

指定偏见作为一个长度向量4 * numhidendunits., 在哪里numhidandunits.是尺寸的'C'两个维度C0H0

如果偏见是一个格式化的dlarray,不应标记不合格的尺寸'C'

数据类型:单身的|双倍的

未格式化输入数据的维度顺序,指定为逗号分隔对,由'datomformat'以及字符数组或字符串FMT为数据的每个维度提供标签。每个角色FMT必须是以下之一:

  • “年代”- 空间

  • 'C'- 渠道

  • 'B'-批次(例如,样品和观察)

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

  • “U”- 未指定

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

您必须指定'dataformat',fmt当输入数据dlX不是格式化的dlarray

例子:“DataFormat”、“SSCB”

数据类型:char|细绳

输出参数

全部折叠

LSTM输出,返回为dlarray.输出海底具有与输入相同的底层数据类型dlX

如果输入数据dlX是一个格式化的dlarray海底有相同的尺寸标签dlX,除了任何“年代”维度。如果输入数据没有格式化dlarray海底是一个非格式化dlarray与输入数据的维度顺序相同。

尺寸'C'尺寸海底与隐藏单元的数量相同,由'C'尺寸H0C0

每个观察的隐藏状态向量,作为一个返回dlarray或具有相同数据类型的数字阵列H0

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

每个观察的单元格状态向量,返回为dlarray或数字数组。cellState以与相同的数据类型返回C0

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

限制

  • functionToLayerGraph不支持金宝appLSTM.函数。如果你使用functionToLayerGraph包含包含的函数LSTM.操作,由此产生的LayerGraph包含占位符层。

更多关于

全部折叠

长期短期记忆

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

扩展能力

介绍了R2019b