sequenceInputLayer
序列输入层
描述
一个序列输入序列数据网络输入层。
创建
属性
图像输入
InputSize
- - - - - -大小的输入
正整数|向量的正整数
输入的大小,指定为一个正整数或一个向量的正整数。
输入向量序列,
InputSize
是一个标量对应的数量特征。对二维图像序列输入,
InputSize
向量的三个元素吗[w c h]
,在那里h
图像的高度,w
图像宽度,c
图片的是渠道的数量。3 d图像序列的输入,
InputSize
是四个元素向量(w h d c)
,在那里h
图像的高度,w
图像的宽度,d
图像深度,c
图片的是渠道的数量。
例子:One hundred.
归一化
- - - - - -数据归一化
“没有”
(默认)|“zerocenter”
|“zscore”
|“rescale-symmetric”
|“rescale-zero-one”
|函数处理
数据规范化应用每次数据通过输入层向前传播,指定为以下之一:
提示
软件,默认情况下,自动计算标准化在训练时间统计。节省时间当训练,为归一化并设置指定所需的统计数据“ResetInputNormalization”
选项trainingOptions
来假
。
如果输入数据包含填充,然后正常化时忽略填充层值输入数据。
NormalizationDimension
- - - - - -规范化维度
“汽车”
(默认)|“通道”
|“元素”
|“所有”
规范化维度,指定为以下之一:
“汽车”
——如果训练选项假
和您指定任何标准化的统计数据(的意思是
,StandardDeviation
,最小值
,或马克斯
),然后正常的尺寸相匹配的数据。否则,重新计算统计训练时间和应用channel-wise正常化。“通道”
——Channel-wise正常化。“元素”
——Element-wise正常化。“所有”
——所有值正常化使用标量数据。
的意思是
- - - - - -对中心零位和z分数意味着正常化
[]
(默认)|数字数组|数字标量
对中心零位和z分数意味着正常化,指定为一个数值数组,或空。
如果你指定的意思是
属性,然后归一化
必须“zerocenter”
或“zscore”
。如果的意思是
是[]
,那么软件计算平均培训时间。
你可以设置这个属性在创建网络没有培训(例如,当组装网络使用assembleNetwork
)。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
StandardDeviation
- - - - - -标准偏差
[]
(默认)|数字数组|数字标量
标准差用于z分数归一化,指定为一个数值数组,数字标量或空的。
如果你指定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
- - - - - -输入数量
0(默认)
输入层的数量。层没有输入。
数据类型:双
InputNames
- - - - - -输入名字
{}
(默认)
输入层的名称。层没有输入。
数据类型:细胞
NumOutputs
- - - - - -数量的输出
1(默认)
输出层的数量。这一层只有一个输出。
数据类型:双
OutputNames
- - - - - -输出的名字
{“出”}
(默认)
输出层的名称。这一层只有一个输出。
数据类型:细胞
例子
创建序列输入层
创建一个序列输入层的名称“seq1”
和一个输入12的大小。
层= sequenceInputLayer (12,“名字”,“seq1”)
层= SequenceInputLayer属性:名称:“seq1”InputSize: 12 Hyperparameters规范化:‘没有’NormalizationDimension:“汽车”
包括一个序列输入层层
数组中。
inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= […sequenceInputLayer inputSize lstmLayer (numHiddenUnits,“OutputMode”,“最后一次”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer]
层x1 = 5层阵列层:1“12维度2序列输入序列输入”LSTM LSTM 100隐藏单位3“完全连接9完全连接层4”Softmax Softmax crossentropyex 5”分类输出
创建序列输入图层的图像序列
创建一个序列输入层的224 - 224年的RGB图像序列的名字“seq1”
。
层= sequenceInputLayer ((224 224 3),“名字”,“seq1”)
层= SequenceInputLayer属性:名称:“seq1”InputSize: [224 224 3] Hyperparameters正常化:“没有一个”NormalizationDimension:“汽车”
网络训练序列的分类
火车深学习LSTM sequence-to-label网络分类。
加载描述的日本元音数据集[1]和[2]。XTrain
是一个单元阵列包含270可变长度的序列有12个功能对应LPC倒谱系数。Y
是标签的分类向量1,2,…,9。的条目XTrain
与12行矩阵(为每个功能一行)和不同数量的列(每个时间步一列)。
[XTrain, YTrain] = japaneseVowelsTrainData;
可视化系列第一次在一个阴谋。每一行对应一个功能。
图绘制(XTrain{1}”)标题(“训练观察1”)numFeatures =大小(XTrain {1}, 1);传奇(“特性”+字符串(1:numFeatures),“位置”,“northeastoutside”)
定义LSTM网络体系结构。指定输入大小12(功能的输入数据的数量)。指定一个LSTM层有100个隐藏的单位和输出序列的最后一个元素。最后,指定9类包括一个完全连接层的9码,其次是softmax层和一层分类。
inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= […sequenceInputLayer inputSize lstmLayer (numHiddenUnits,“OutputMode”,“最后一次”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer]
层= 5×1层阵列层:1“12维度2序列输入序列输入”LSTM LSTM 100隐藏单位3“完全连接9完全连接层4”Softmax Softmax crossentropyex 5”分类输出
指定培训选项。指定的解算器“亚当”
和“GradientThreshold”
为1。设置mini-batch大小27和设置时代的最大数量为70。
因为mini-batches小短序列,CPU更适合培训。集“ExecutionEnvironment”
来“cpu”
。火车在GPU,如果可用,集“ExecutionEnvironment”
来“汽车”
(默认值)。
maxEpochs = 70;miniBatchSize = 27个;选择= trainingOptions (“亚当”,…“ExecutionEnvironment”,“cpu”,…“MaxEpochs”maxEpochs,…“MiniBatchSize”miniBatchSize,…“GradientThreshold”,1…“详细”假的,…“阴谋”,“训练进步”);
火车LSTM网络培训指定的选项。
网= trainNetwork (XTrain、YTrain层,选择);
测试集和分类序列加载到扬声器。
[XTest,欧美]= japaneseVowelsTestData;
测试数据进行分类。指定相同的mini-batch大小用于培训。
XTest YPred =分类(净,“MiniBatchSize”,miniBatchSize);
计算预测的分类精度。
acc = (YPred = =欧美)。/元素个数(欧美)
acc = 0.9514
分类LSTM网络
创建一个LSTM sequence-to-label分类网络,创建数组包含一个序列输入层,一层一层LSTM,完全连接层,softmax层和输出层分类。
组的大小顺序输入层特性的输入数据的数量。设置大小完全连接层的类的数量。你不需要指定序列长度。
对于LSTM层,指定隐藏单位的数量和输出模式“最后一次”
。
numFeatures = 12;numHiddenUnits = 100;numClasses = 9;层= […sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”,“最后一次”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];
为一个例子,演示如何为sequence-to-label培训LSTM网络分类和分类新数据,看到的使用深度学习序列分类。
创建一个LSTM sequence-to-sequence网络分类,使用相同的架构对于sequence-to-label分类,但LSTM层的设置输出模式“序列”
。
numFeatures = 12;numHiddenUnits = 100;numClasses = 9;层= […sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”,“序列”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];
回归LSTM网络
创建一个LSTM sequence-to-one回归网络,创建数组包含一个序列输入层,一层一层LSTM,完全连接层和回归输出层。
组的大小顺序输入层特性的输入数据的数量。完全连接层的大小设置为响应的数量。你不需要指定序列长度。
对于LSTM层,指定隐藏单位的数量和输出模式“最后一次”
。
numFeatures = 12;numHiddenUnits = 125;numResponses = 1;层= […sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”,“最后一次”)fullyConnectedLayer (numResponses) regressionLayer];
创建一个LSTM sequence-to-sequence回归网络使用相同的架构对于sequence-to-one回归,但LSTM层的设置输出模式“序列”
。
numFeatures = 12;numHiddenUnits = 125;numResponses = 1;层= […sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”,“序列”)fullyConnectedLayer (numResponses) regressionLayer];
为一个例子,演示如何训练一个LSTM网络sequence-to-sequence回归和预测新数据,看到的使用深度学习Sequence-to-Sequence回归。
更深层次的LSTM网络
你可以更深的插入额外的LSTM LSTM网络层与输出模式“序列”
之前LSTM层。为了防止过度拟合,可以插入后辍学层LSTM层。
sequence-to-label分类网络,输出模式的最后LSTM层必须“最后一次”
。
numFeatures = 12;numHiddenUnits1 = 125;numHiddenUnits2 = 100;numClasses = 9;层= […sequenceInputLayer numFeatures lstmLayer (numHiddenUnits1,“OutputMode”,“序列”)dropoutLayer (0.2) lstmLayer (numHiddenUnits2“OutputMode”,“最后一次”)dropoutLayer (0.2) fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];
sequence-to-sequence分类网络,输出模式的最后LSTM层必须“序列”
。
numFeatures = 12;numHiddenUnits1 = 125;numHiddenUnits2 = 100;numClasses = 9;层= […sequenceInputLayer numFeatures lstmLayer (numHiddenUnits1,“OutputMode”,“序列”)dropoutLayer (0.2) lstmLayer (numHiddenUnits2“OutputMode”,“序列”)dropoutLayer (0.2) fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];
创建网络视频分类
创建一个深入学习网络包含的图像序列数据,如视频和医学图像数据。
输入序列的图像到一个网络,使用序列输入层。
卷积操作独立应用于每个时间步,首先将图像序列转换为一个数组的图像使用序列折叠层。
恢复执行这些操作后的序列结构,这一系列图像转换为图像序列使用序列展开层。
将图像转化为特征向量,使用平层。
你可以输入向量序列LSTM和BiLSTM层。
定义网络体系结构
创建一个分类LSTM网络将28-by-28灰度图像序列分为10类。
定义以下网络体系结构:
一个序列输入层和一个输入的大小
[28 28 1]
。一批卷积,规范化,ReLU层块20 5-by-5过滤器。
LSTM层有200个隐藏单元输出最后一次步。
完全连接一层10码(类的数量),后跟一个softmax层和一个分类层。
独立执行卷积操作在每个时间步,包括序列卷积前层折叠层。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”)fullyConnectedLayer (numClasses“名字”,“俱乐部”)softmaxLayer (“名字”,“softmax”)classificationLayer (“名字”,“分类”));
转换层一层图和连接miniBatchSize
的输出序列折叠层的相应输入序列展开层。
lgraph = layerGraph(层);lgraph = connectLayers (lgraph,“折/ miniBatchSize”,“展开/ miniBatchSize”);
查看最后的网络体系结构使用情节
函数。
图绘制(lgraph)
兼容性的考虑
sequenceInputLayer
默认情况下,使用channel-wise中心零位规范化标准化
在未来的发布行为改变
从R2019b开始,sequenceInputLayer
默认情况下,使用channel-wise中心零位规范化标准化。在以前的版本中,这一层使用element-wise正常化。复制这种行为,设置NormalizationDimension
选择这一层“元素”
。
sequenceInputLayer
忽略了正常化时填充值
行为改变R2020a
从R2020a开始,sequenceInputLayer
忽略填充对象中的值正常化时输入数据。这意味着归一化
选项sequenceInputLayer
现在让培训不变的数据操作,例如,“zerocenter”
现在标准化意味着训练结果的均值数据不变。
如果你训练的序列,计算归一化因素可能在早期版本不同,可以产生不同的结果。
引用
[1]m .奖赏,富山,和m . Shimbo。“多维曲线分类使用通过地区。”模式识别的字母。11 - 13号20卷,第1111 - 1103页。
[2]UCI机器学习库:日本元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese +元音
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
对于代码生成,仅支持向量输入类型。万博1manbetx
为输入向量序列,在代码生成功能必须是一个常数。
代码生成不支持万博1manbetx
“归一化”
指定使用一个函数处理。
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
生成CUDA®或c++代码通过使用GPU编码器™,你必须首先构建和训练神经网络。一旦网络训练和评估,您可以配置代码生成器来生成代码和部署使用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命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。