序列输入层
序列输入层将序列数据输入到网络。
InputSize
- - - - - -大小的输入输入的大小,指定为正整数或正整数向量。
对于向量序列输入,InputSize
为特征数对应的标量。
对于2-D图像序列输入,InputSize
是三个元素的向量吗[w c h]
,在那里h
为图像高度,w
是图像宽度,和c
为图像的通道数。
对于三维图像序列输入,InputSize
是四个元素的向量吗[H W D C]
,在那里h
为图像高度,w
为图像宽度,d
是图像的深度,和c
为图像的通道数。
例子:100.
正常化
- - - - - -数据归一化“没有”
(默认)|“zerocenter”
|“zscore”
|“rescale-symmetric”
|“rescale-zero-one”
|函数处理要应用每次数据的数据归一化将通过输入图层向前传播,指定为以下之一:
提示
默认情况下,软件会自动计算训练时间的归一化统计。为节省训练时的时间,指定规范化所需的统计信息并设置'resetInputnormalization'
选项培训选项
来假
.
如果输入数据包含填充,则在归一化输入数据时,该图层忽略了填充值。
NormalizationDimension
- - - - - -规范化维度“汽车”
(默认)|“通道”
|“元素”
|“所有”
归一化尺寸,指定为下列尺寸之一:
“汽车”
—如果培训选项是假
并且您指定了任何归一化统计信息(的意思是
,standarddeviation.
,闵
,或最大限度
),然后对与统计数据匹配的维度进行规范化。否则,重新计算训练时的统计数据,并应用通道方向的归一化。
“通道”
- 渠道 - 明智的标准化。
“元素”
——Element-wise正常化。
“所有”
- 使用标量统计来规范所有值。
的意思是
- - - - - -零中心和Z分数标准化的意思[]
(默认)|数字数组|数字标量以零为中心和z分数标准化的平均值,指定为数字数组,或为空。
如果您指定了的意思是
属性,然后正常化
必须是“zerocenter”
要么“zscore”
.如果的意思是
是[]
,然后软件计算训练时的平均值。
您可以在不进行培训的情况下创建网络时设置此属性(例如,使用assembleNetwork
).
数据类型:单
|双
|INT8.
|int16
|int32
|int64
|uint8
|uint16
|uint32
|UINT64
standarddeviation.
- - - - - -标准偏差[]
(默认)|数字数组|数字标量用于z-score标准化的标准偏差,指定为数字数组、数字标量或空。
如果您指定了standarddeviation.
属性,然后正常化
必须是“zscore”
.如果standarddeviation.
是[]
,然后软件计算训练时的标准差。
您可以在不进行培训的情况下创建网络时设置此属性(例如,使用assembleNetwork
).
数据类型:单
|双
|INT8.
|int16
|int32
|int64
|uint8
|uint16
|uint32
|UINT64
闵
- - - - - -缩放的最小值[]
(默认)|数字数组|数字标量用于重新缩放的最小值,指定为数字数组,或为空。
如果您指定了闵
属性,然后正常化
必须是“rescale-symmetric”
要么“rescale-zero-one”
.如果闵
是[]
,然后软件计算出训练时的最小值。
您可以在不进行培训的情况下创建网络时设置此属性(例如,使用assembleNetwork
).
数据类型:单
|双
|INT8.
|int16
|int32
|int64
|uint8
|uint16
|uint32
|UINT64
最大限度
- - - - - -缩放的最大值[]
(默认)|数字数组|数字标量重新定义的最大值,指定为数字数组或空。
如果您指定了最大限度
属性,然后正常化
必须是“rescale-symmetric”
要么“rescale-zero-one”
.如果最大限度
是[]
,然后软件计算出训练时的最大值。
您可以在不进行培训的情况下创建网络时设置此属性(例如,使用assembleNetwork
).
数据类型:单
|双
|INT8.
|int16
|int32
|int64
|uint8
|uint16
|uint32
|UINT64
的名字
- - - - - -层的名字''
(默认)|特征向量|字符串标量层名,指定为字符向量或字符串标量。若要在层图中包含层,必须指定非空的唯一层名。如果你用层和的名字
被设置为''
,然后软件在训练时自动为该层分配一个名称。
数据类型:字符
|字符串
NumInputs
- - - - - -输入数量图层的输入数。该层没有输入。
数据类型:双
输入名称
- - - - - -输入名字{}
(默认)输入层名。该层没有输入。
数据类型:细胞
NumOutputs
- - - - - -输出数量图层的输出数。此图层仅具有单个输出。
数据类型:双
OutputNames
- - - - - -输出名称{'出去'}
(默认)图层的输出名称。此图层仅具有单个输出。
数据类型:细胞
创建一个序列输入层的名称“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)
sequenceInputlayer.
,默认情况下,使用通道方向的归一化进行零中心归一化未来版本中的行为改变
从R2019b开始,sequenceInputlayer.
,默认情况下,使用通道方向的归一化进行零中心归一化。在以前的版本中,这一层使用元素方向的规范化。要重现这种行为,请设置NormalizationDimension
此图层的选项为“元素”
.
sequenceInputlayer.
在规范化时忽略填充值R2020A中的行为发生了变化
从R2020A开始,sequenceInputlayer.
对象在规范化时忽略输入数据中的填充值。这意味着正常化
选项在sequenceInputlayer.
例如,让训练对数据操作保持不变,“zerocenter”
归一化现在意味着训练结果对数据的平均值是不变的。
如果对填充序列进行训练,那么在早期版本中计算的归一化因子可能不同,从而产生不同的结果。
[1] M. Kudo,J. Toyama和M. Shimbo。“使用过度区域的多维曲线分类。”模式识别的字母.第20卷,第11-13期,第1103-1111页。
[2]UCI机器学习知识库:日语元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
对于代码生成,仅支持向量输入类型。万博1manbetx
对于向量序列输入,在代码生成期间必须是常数的特征数量。
代码生成不支持万博1manbetx“归一化”
使用函数句柄指定。
使用注意事项及限制:
生成CUDA.®或使用GPU Coder™c++代码,您必须首先构建和训练一个深度神经网络。一旦对网络进行了训练和评估,您就可以配置代码生成器来生成代码,并在使用NVIDIA的平台上部署卷积神经网络®或手臂®GPU处理器。有关更多信息,请参见与GPU编码器深入学习(GPU编码器).
对于这一层,您可以生成利用NVIDIA CUDA深度神经网络库(cuDNN)或NVIDIA TensorRT™高性能推理库的代码。
cuDNN库支持向量和二维图像序列。万博1manbetxTensorRT库只支持向量输入序列。万博1manbetx
对于向量序列输入,在代码生成期间必须是常数的特征数量。
对于图像序列输入,高度,宽度和通道数量在代码生成期间必须是常数。
代码生成不支持万博1manbetx“归一化”
使用函数句柄指定。
Bilstmlayer.
|classifyAndUpdateState
|深层网络设计师|featureInputLayer
|flattenLayer
|gruLayer
|lstmLayer
|predictAndUpdateState
|resetState
|sequenceFoldingLayer
|sequenceUnfoldingLayer
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。