主要内容

sequenceInputlayer.

序列输入层

描述

序列输入层将序列数据输入到网络。

创建

描述

= sequenceInputLayer(inputSize创建序列输入层并设置InputSize财产。

例子

= sequenceInputLayer(inputSize名称,值设置可选正常化的意思是, 和的名字使用名称-值对的属性。可以指定多个名称-值对。将每个属性名用单引号括起来。

属性

全部展开

图像输入

输入的大小,指定为正整数或正整数向量。

  • 对于向量序列输入,InputSize为特征数对应的标量。

  • 对于2-D图像序列输入,InputSize是三个元素的向量吗[w c h],在那里h为图像高度,w是图像宽度,和c为图像的通道数。

  • 对于三维图像序列输入,InputSize是四个元素的向量吗[H W D C],在那里h为图像高度,w为图像宽度,d是图像的深度,和c为图像的通道数。

例子:100.

要应用每次数据的数据归一化将通过输入图层向前传播,指定为以下之一:

  • “zerocenter”-减去指定的平均值的意思是

  • “zscore”-减去指定的平均值的意思是然后除以standarddeviation.

  • “rescale-symmetric”—使用指定的最小值和最大值重新缩放输入,使其在[- 1,1]范围内最大限度,分别。

  • “rescale-zero-one”—使用指定的最小值和最大值重新缩放输入,使其在[0,1]范围内最大限度,分别。

  • “没有”- 请勿将输入数据标准化。

  • function handle—使用指定的函数对数据进行规范化。功能必须是形式的Y = func (X),在那里X是输入数据,还是输出数据Y是标准化的数据。

提示

默认情况下,软件会自动计算训练时间的归一化统计。为节省训练时的时间,指定规范化所需的统计信息并设置'resetInputnormalization'选项培训选项

如果输入数据包含填充,则在归一化输入数据时,该图层忽略了填充值。

归一化尺寸,指定为下列尺寸之一:

  • “汽车”—如果培训选项是并且您指定了任何归一化统计信息(的意思是standarddeviation.,或最大限度),然后对与统计数据匹配的维度进行规范化。否则,重新计算训练时的统计数据,并应用通道方向的归一化。

  • “通道”- 渠道 - 明智的标准化。

  • “元素”——Element-wise正常化。

  • “所有”- 使用标量统计来规范所有值。

以零为中心和z分数标准化的平均值,指定为数字数组,或为空。

  • 对于向量序列输入,的意思是必须是一个InputSize每个通道的-by-1向量的平均值,一个数字标量,或[]

  • 对于2-D图像序列输入,的意思是必须是相同大小的数字数组InputSize, 1-by-1-byInputSize (3)每个通道,数字标量或[]

  • 对于三维图像序列输入,的意思是必须是相同大小的数字数组InputSize, 1-by-1-by-1-byInputSize (4)每个通道,数字标量或[]

如果您指定了的意思是属性,然后正常化必须是“zerocenter”要么“zscore”.如果的意思是[],然后软件计算训练时的平均值。

您可以在不进行培训的情况下创建网络时设置此属性(例如,使用assembleNetwork).

数据类型:||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

用于z-score标准化的标准偏差,指定为数字数组、数字标量或空。

  • 对于向量序列输入,standarddeviation.必须是一个InputSize- 1个每条通道标准偏差矢量,数字标量或[]

  • 对于2-D图像序列输入,standarddeviation.必须是相同大小的数字数组InputSize, 1-by-1-byInputSize (3)每个通道的标准差数组、数字标量或[]

  • 对于三维图像序列输入,standarddeviation.必须是相同大小的数字数组InputSize, 1-by-1-by-1-byInputSize (4)每个通道的标准偏差数组,或数字标量。

如果您指定了standarddeviation.属性,然后正常化必须是“zscore”.如果standarddeviation.[],然后软件计算训练时的标准差。

您可以在不进行培训的情况下创建网络时设置此属性(例如,使用assembleNetwork).

数据类型:||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

用于重新缩放的最小值,指定为数字数组,或为空。

  • 对于向量序列输入,必须是一个InputSize每个通道或数字标量的平均值的× 1向量。

  • 对于2-D图像序列输入,必须是相同大小的数字数组InputSize, 1-by-1-byInputSize (3)每个通道的最小值数组,或一个数字标量。

  • 对于三维图像序列输入,必须是相同大小的数字数组InputSize, 1-by-1-by-1-byInputSize (4)每个通道的最小值数组,或一个数字标量。

如果您指定了属性,然后正常化必须是“rescale-symmetric”要么“rescale-zero-one”.如果[],然后软件计算出训练时的最小值。

您可以在不进行培训的情况下创建网络时设置此属性(例如,使用assembleNetwork).

数据类型:||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

重新定义的最大值,指定为数字数组或空。

  • 对于向量序列输入,最大限度必须是一个InputSize每个通道或数字标量的平均值的× 1向量。

  • 对于2-D图像序列输入,最大限度必须是相同大小的数字数组InputSize, 1-by-1-byInputSize (3)每个通道、数字标量或最大值的数组[]

  • 对于三维图像序列输入,最大限度必须是相同大小的数字数组InputSize, 1-by-1-by-1-byInputSize (4)每个通道、数字标量或最大值的数组[]

如果您指定了最大限度属性,然后正常化必须是“rescale-symmetric”要么“rescale-zero-one”.如果最大限度[],然后软件计算出训练时的最大值。

您可以在不进行培训的情况下创建网络时设置此属性(例如,使用assembleNetwork).

数据类型:||INT8.|int16|int32|int64|uint8|uint16|uint32|UINT64

层名,指定为字符向量或字符串标量。若要在层图中包含层,必须指定非空的唯一层名。如果你用层和的名字被设置为'',然后软件在训练时自动为该层分配一个名称。

数据类型:字符|字符串

图层的输入数。该层没有输入。

数据类型:

输入层名。该层没有输入。

数据类型:细胞

图层的输出数。此图层仅具有单个输出。

数据类型:

图层的输出名称。此图层仅具有单个输出。

数据类型:细胞

例子

全部收缩

创建一个序列输入层的名称“seq1”和输入大小为12。

层= sequenceInputLayer (12,“名字”“seq1”
layer = SequenceInputLayer with properties: Name: 'seq1' InputSize: 12 Hyperparameters Normalization: 'none' NormalizationDimension: 'auto'

控件中包含序列输入层数组中。

inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= [...sequenceInputLayer inputSize lstmLayer (numHiddenUnits,“OutputMode”“最后一次”)软连接层(numClasses)
Layer = 5x1 Layer array with layers: 1 " Sequence Input Sequence Input with 12 dimensions 2 " LSTM LSTM with 100 hidden units 3 " Fully Connected 9 Fully Connected Layer 4 " Softmax Softmax 5 " Classification Output crossentropyex . LSTM与100个隐藏单元

创建一个序列输入层的序列224-224 RGB图像的名称“seq1”

layer = sequenceInputLayer([224 224 3],“名字”“seq1”
tillay = sequenceInputLayer具有属性:名称:'SEQ1'输入:[224 224 3] radipameters标准化:'无'标准化dimension:'auto'

培训深度学习LSTM网络,用于序列到标签分类。

如[1]和[2]中所述加载日语元音数据集。XTrain是含有270个变化长度序列的细胞阵列,其具有对应于LPC综合系数的12个特征。Y是标签1,2,…,9的分类向量。的条目XTrain矩阵有12行(每个特征一行)和不同数量的列(每个时间步骤一列)。

[XTrain, YTrain] = japaneseVowelsTrainData;

想象情节中的第一个时间序列。每一行对应一个特征。

图绘制(XTrain{1}”)标题(“训练观察1”)numfeatures = size(xtrain {1},1);传奇(“特性”+字符串(1:numFeatures),'地点'“northeastoutside”

定义LSTM网络架构。指定输入大小为12(输入数据的特征数量)。指定一个LSTM层有100个隐藏单元,并输出序列的最后一个元素。最后,通过包含大小为9的完全连接层、softmax层和分类层来指定9个类。

inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= [...sequenceInputLayer inputSize lstmLayer (numHiddenUnits,“OutputMode”“最后一次”)软连接层(numClasses)
Layer = 5×1 Layer array with layers: 1 " Sequence Input Sequence Input with 12 dimensions 2 " LSTM LSTM with 100 hidden units 3 " Fully Connected 9 Fully Connected Layer 4 " Softmax Softmax 5 " Classification Output crossentropyex . jpg

指定培训选项。指定求解器为“亚当”“GradientThreshold”为1。设置mini-batch size为27,最大epoch数为70。

因为迷你批很小,序列很短,所以CPU更适合于训练。集“ExecutionEnvironment”“cpu”.如果需要在GPU上进行训练,请设置“ExecutionEnvironment”“汽车”(默认值)。

maxEpochs = 70;miniBatchSize = 27个;选择= trainingOptions (“亚当”...“ExecutionEnvironment”“cpu”...'maxepochs',maxepochs,...“MiniBatchSize”miniBatchSize,...“GradientThreshold”, 1...“详细”,错误的,...“阴谋”“训练进步”);

使用指定的训练选项训练LSTM网络。

网= trainNetwork (XTrain、YTrain层,选择);

加载测试集并将序列分类为扬声器。

[XTest,欧美]= japaneseVowelsTestData;

分类测试数据。指定用于培训的相同百分比大小。

XTest YPred =分类(净,“MiniBatchSize”, miniBatchSize);

计算预测的分类精度。

acc = sum(YPred == YTest)./numel(YTest)
acc = 0.9514

为了创建一个LSTM网络进行序列到标签的分类,需要创建一个包含序列输入层、LSTM层、全连接层、softmax层和分类输出层的层数组。

将序列输入层的大小设置为输入数据的特征数量。将完全连接层的大小设置为类的数量。您不需要指定序列长度。

对于LSTM层,指定隐藏单元的数量和输出模式“最后一次”

numFeatures = 12;numHiddenUnits = 100;numClasses = 9;层= [...sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”“最后一次”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer;

有关如何培训LSTM网络以获取序列到标签分类和分类新数据的示例,请参阅使用深度学习序列分类

要创建用于序列到序列分类的LSTM网络,请使用与序列到标签分类相同的架构,但设置LSTM层的输出模式为“序列”

numFeatures = 12;numHiddenUnits = 100;numClasses = 9;层= [...sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”“序列”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer;

要创建序列到一回归的LSTM网络,需要创建一个包含序列输入层、LSTM层、全连接层和回归输出层的层阵列。

将序列输入层的大小设置为输入数据的特征数量。将完全连接层的大小设置为响应的数量。您不需要指定序列长度。

对于LSTM层,指定隐藏单元的数量和输出模式“最后一次”

numFeatures = 12;numhidendunits = 125;numreponses = 1;层= [...sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”“最后一次”)全连接列(NumResponses)回归范围];

要创建序列到序列回归的LSTM网络,使用与序列到一回归相同的架构,但设置LSTM层的输出模式为“序列”

numFeatures = 12;numhidendunits = 125;numreponses = 1;层= [...sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”“序列”)全连接列(NumResponses)回归范围];

有关如何训练LSTM网络进行序列到序列回归和预测新数据的示例,请参见使用深度学习的序列到序列回归

通过插入带有输出模式的额外LSTM层,可以使LSTM网络更深入“序列”LSTM层之前。为了防止过拟合,可以在LSTM层之后插入dropout层。

对于序列到标签分类网络,必须是最后一个LSTM层的输出模式“最后一次”

numFeatures = 12;numHiddenUnits1 = 125;numHiddenUnits2 = 100;numClasses = 9;层= [...SequenceInputLayer(NumFeatures)LSTMLAYER(numhidentunits1,“OutputMode”“序列”) dropoutLayer (0.2) lstmLayer (numHiddenUnits2“OutputMode”“最后一次”) dropoutLayer(0.2) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];

对于序列到序列分类网络,必须是最后一个LSTM层的输出模式“序列”

numFeatures = 12;numHiddenUnits1 = 125;numHiddenUnits2 = 100;numClasses = 9;层= [...SequenceInputLayer(NumFeatures)LSTMLAYER(numhidentunits1,“OutputMode”“序列”) dropoutLayer (0.2) lstmLayer (numHiddenUnits2“OutputMode”“序列”) dropoutLayer(0.2) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];

为包含图像序列的数据创建一个深度学习网络,如视频和医学图像数据。

  • 要将图像序列输入到网络中,使用序列输入层。

  • 为了将卷积操作独立应用于每次步骤,首先使用序列折叠层将图像的序列转换为图像阵列。

  • 要在执行这些操作后恢复序列结构,请使用序列展开层将该图像数组转换回图像序列。

  • 要将图像转换为特征向量,使用flatten图层。

然后,您可以将向量序列输入到LSTM和Bilstm层中。

定义网络体系结构

创建一个分类LSTM网络,将28 × 28的灰度图像序列分为10类。

定义以下网络架构:

  • 序列输入层,其输入大小为[28 28 1]

  • 具有20个5 × 5滤波器的卷积、批处理归一化和ReLU层块。

  • 具有200个隐藏单元的LSTM层,只输出最后一个时间步长。

  • 完全连接的大小10(类数),后跟软MAX层和分类层。

为了独立地在每次上执行卷积操作,包括卷积层之前的序列折叠层。LSTM层预计向量序列输入。为了恢复序列结构并将卷积层的输出重新塑造到特征向量的序列,在卷积层和LSTM层之间插入序列展开层和平坦层。

inputSize = [28 28 1];filterSize = 5;numFilters = 20;numHiddenUnits = 200;numClasses = 10;层= [...sequenceInputLayer (inputSize“名字”“输入”) sequenceFoldingLayer (“名字”“折”) convolution2dLayer (filterSize numFilters,“名字”“conv”) batchNormalizationLayer (“名字”bn的) reluLayer (“名字”'relu') sequenceUnfoldingLayer (“名字”'展开') flattenLayer (“名字”“平”) lstmLayer (numHiddenUnits“OutputMode”“最后一次”“名字”“lstm”)全连接列(numcrasses,“名字”'fc') softmaxLayer (“名字”“softmax”scassificationlayer(“名字”“分类”)];

将层转换为层图并连接miniBatchSize序列折叠层的输出到序列展开层的相应输入。

lgraph = layerGraph(层);lgraph = connectLayers (lgraph,“折/ miniBatchSize”'展开/小贴士');

查看最终的网络架构使用情节函数。

图绘制(lgraph)

兼容性考虑因素

全部展开

未来版本中的行为改变

R2020A中的行为发生了变化

参考文献

[1] M. Kudo,J. Toyama和M. Shimbo。“使用过度区域的多维曲线分类。”模式识别的字母.第20卷,第11-13期,第1103-1111页。

[2]UCI机器学习知识库:日语元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

扩展功能

介绍了R2017b