https://www.cnblogs.com/michaelxun/

LSTM

lstm

长期记忆

折叠全部页面
 

描述

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

注意

此功能将深度学习LSTM操作应用于dlarray数据。如果要在layerGraph对象或Layer数组中应用LSTM操作,请使用以下层:

dlY = lstm(dlX,H0,C0,weights,recurrentWeights,bias) 施加长短期存储器(LSTM)计算输入dlX使用初始隐藏状态H0,初始小区状态C0和参数weightsrecurrentWeights和 bias输入dlX的格式 dlarray带有尺寸标签。输出dlY的格式dlarray具有与相同的尺寸标签 dlX,除了任何'S'尺寸。

lstm函数使用双曲正切函数(tanh)作为状态激活函数来更新单元格和隐藏状态。该 lstm函数使用由下式给出S形函数σ  = ëX1作为栅的激活功能。

[dlY,hiddenState,cellState] = lstm(dlX,H0,C0,weights,recurrentWeights,bias) LSTM操作后,它还会返回隐藏状态和单元状态。

[___] = lstm(___,'DataFormat',FMT)FMTdlX未格式化时, 还会指定尺寸标签dlarray输出dlY是未格式化的dlarray,其尺寸顺序与相同 dlX,除了任何'S'尺寸。

 

例子

全部收缩

将LSTM操作应用于序列数据

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

将输入序列数据创建为具有十个通道的32个观测值,序列长度为64。

numFeatures = 10;
numObservations = 32;
sequenceLength = 64;

X = randn(numFeatures,numObservations,sequenceLength);
dlX = dlarray(X,'CBT');

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

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

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

weights = dlarray(randn(4 * numHiddenUnits,numFeatures),'CU');
recurrentWeights = dlarray(randn(4 * numHiddenUnits,numHiddenUnits),'CU');
偏差= dlarray(randn(4 * numHiddenUnits,1),'C');

执行LSTM计算。

[dlY,hiddenState,cellState] = lstm(dlX,H0,C0,weights,recurrentWeights,bias);

查看的大小和尺寸dlY

尺寸(dlY)
dlY.dims
ans = 1×3    
     3 32 64

ans ='CBT'

视图的大小hiddenState和 cellState

大小(hiddenState)
大小(cellState)
ans = 1×2    
     3 32

ans = 1×2    
     3 32

检查输出hiddenState是否等于输出的最后时间步长dlY

如果 extractdata(dlY(:,:,end))== hiddenState
   DISP(“隐藏的状态和上次一步都是平等的。”其他  
   DISP(“隐藏的状态和最后的时间步长是不相等的。”结束
隐藏状态和最后一个时间步相等。

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

输入参数

全部收缩

dlX— 输入数据
dlarray 数值数组

输入数据,指定为dlarray带有或不带有尺寸标签或数字数组的。如果dlX未设置格式 dlarray,则必须使用来指定尺寸标签格式 'DataFormat',FMT如果dlX是一个数值数组,中的至少一个H0C0weights, recurrentWeights,或bias必须是一个 dlarray

dlX必须包含标记为的序列维 'T'如果dlX已标记任何空间尺寸 'S',则将它们展平为'C'通道尺寸。如果dlX未标记任何未指定的尺寸 'U',则它们必须为单件。

数据类型:single |double

H0— 初始隐藏状态向量
dlarray 数值数组

初始隐藏状态向量,指定为dlarray带有或不带有尺寸标签或数字数组的a。

如果H0被格式化的dlarray,它必须包含一个标记为通道尺寸'C'和任选标记的一个批次尺寸'B'具有相同的大小为'B' 的尺寸dlX如果H0没有'B'维度,则函数会对中的 每个观察使用相同的隐藏状态向量dlX

尺寸的'C'大小确定隐藏单元的数量。的尺寸'C'的尺寸H0必须等于所述的尺寸'C'的尺寸C0

如果H0dlarray,则第一个维度的大小确定隐藏单位的数量,并且必须与第一个维度或的'C'大小相同 C0

数据类型:single |double

C0— 初始细胞状态向量
dlarray 数值数组

初始单元格状态向量,指定为dlarray带有或不带有尺寸标签或数字数组的a。

如果C0被格式化的dlarray,它必须包含一个标记为通道尺寸'C'和任选标记的一个批次尺寸'B'具有相同的大小为'B' 的尺寸dlX如果C0没有 'B'尺寸,则函数对中的每个观测使用相同的单元状态向量dlX

尺寸的'C'大小确定隐藏单元的数量。的尺寸'C'的尺寸C0必须等于所述的尺寸'C'的尺寸H0

如果C0dlarray,则第一个维度的大小确定隐藏单位的数量,并且必须与第一个维度或的'C'大小相同 H0

数据类型:single |double

weights— 重量
dlarray 数值数组

权重,指定为dlarray带有或不带有尺寸标签或数字数组的。

指定weights作为大小的矩阵 4*NumHiddenUnits-by- InputSize,其中 NumHiddenUnits是的大小'C'两者的尺寸C0H0,并且 InputSize是大小'C'尺寸 dlX乘以每个的大小'S'的尺寸dlX,在那里存在。

如果weights是格式化的dlarray,则必须包含'C'size 4*NumHiddenUnits 的'U'尺寸和size的尺寸InputSize

数据类型:single |double

recurrentWeights— 循环重量
dlarray 数值数组

循环权重,指定为dlarray带有或不带有尺寸标签或数字数组的。

指定recurrentWeights作为大小的矩阵 4*NumHiddenUnits-by- NumHiddenUnits,其中 NumHiddenUnits是的大小'C'两者的尺寸C0H0

如果recurrentWeights是格式化的dlarray,则必须包含'C'size 4*NumHiddenUnits'U'尺寸和size的尺寸 NumHiddenUnits

数据类型:single |double

bias— 偏差
dlarray矢量 | 数值向量

偏差,指定为dlarray带有或不带有尺寸标签的矢量或数字矢量。

指定bias为长度的矢量 4*NumHiddenUnits,其中,NumHiddenUnits是所述的大小'C'两者的尺寸C0和 H0

如果bias为格式dlarray,则非单维度必须使用标记'C'

数据类型:single |double

FMT— 未格式化的数据字符数组的维顺序

未格式化输入数据的维顺序,指定为以逗号分隔的一对,由,'DataFormat'和一个为数据的每个维提供标签的字符数组或字符串组成 中的每个字符FMT必须为以下之一:

  • 'S' —空间

  • 'C' —频道

  • 'B' —批次(例如,样本和观察值)

  • 'T' —时间(例如序列)

  • 'U' —未指定

您可以指定标注为'S'或的 多个尺寸'U'您可以使用标签'C', 'B''T'最多一次。

您必须指定'DataFormat'输入数据何时dlX为无格式dlarray

例: 'DataFormat','SSCB'

数据类型:char |string

输出参数

全部收缩

dlY — LSTM输出
dlarray

LSTM输出,以形式返回dlarray输出 dlY具有与输入相同的基础数据类型 dlX

如果输入数据dlX是带格式的dlarraydlYdlX除具有任何'S'尺寸, 都具有与相同的尺寸标签如果输入数据不是带格式的 dlarraydlY则是未格式化的 dlarray,其尺寸顺序与输入数据相同。

的尺寸'C'的尺寸dlY是相同的隐藏单元的数目,由大小指定'C' 的尺寸H0C0

hiddenState—隐藏状态向量
dlarray | 数值数组

每个观测值的隐藏状态向量,以dlarray 或数字数组形式返回hiddenState返回的数据类型与相同H0

如果输入H0是格式化的dlarray,则输出hiddenState以格式化dlarray后的格式返回 'CB'

cellState—细胞状态向量
dlarray | 数值数组

每个观察值的像元状态向量,以dlarray或数字数组形式返回cellState返回的数据类型与相同 C0

如果输入C0是格式化的dlarray,则输出cellState以格式化dlarray后的格式返回 'CB'

更多关于

全部收缩

长短期记忆

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

来自matlab文档
posted @ 2020-04-13 10:35  吴实一  阅读(873)  评论(0编辑  收藏  举报
https://www.cnblogs.com/michaelxun/