classifyAndUpdateState
使用递归神经网络训练和分类数据更新网络状态
语法
描述
你可以预测使用训练有素的深度学习网络CPU或GPU。使用GPU需要并行计算工具箱™许可和支持GPU设备。万博1manbetx支持设备的信息,请参阅万博1manbetxGPU计算的需求(并行计算工具箱)。指定使用的硬件需求ExecutionEnvironment
名称-值参数。
对于多个输出的网络,使用predictAndUpdateState
相反,设置功能ReturnCategorical
选项真正的
。
(
分类的数据updatedNet
,Y
)= classifyAndUpdateState (recNet
,序列
)序列
使用递归神经网络训练recNet
并更新网络状态。
这个函数只支持递归神经网络。万博1manbetx输入recNet
必须至少有一个周期性的一层一层如LSTM或自定义层与状态参数。
(
预测类标签的数字数组或单元数组中的数据updatedNet
,Y
)= classifyAndUpdateState (recNet
,X1,…, XN
)X1
、…XN
多输入网络recNet
。输入习
对应于网络的输入recNet.InputNames(我)
。
(
多输入网络预测类标签updatedNet
,Y
)= classifyAndUpdateState (recNet
,混合
)recNet
与数据的混合数据类型。
(
也返回分类分数对应的类标签使用任何以前的语法。updatedNet
,Y
,分数
)= classifyAndUpdateState (___)
___= classifyAndUpdateState (___,
预测类标签附加选项指定一个或多个名称参数使用任何以前的语法。例如,名称=值
)MiniBatchSize = 27
使用mini-batches分类数据的大小27。
提示
当你与不同长度的序列进行预测,mini-batch大小会影响填料添加到输入数据的数量,从而导致不同的预测值。尝试使用不同的值,看看哪种最与你的网络。要指定mini-batch大小和填充选项,可以使用MiniBatchSize
和SequenceLength
选项,分别。
例子
分类和更新网络状态
使用递归神经网络分类数据和更新网络状态。
负载JapaneseVowelsNet
pretrained长短期记忆(LSTM)网络训练中描述的日本元音数据集[1]和[2]。这个网络是训练序列按序列长度与mini-batch 27的大小。
负载JapaneseVowelsNet
查看网络体系结构。
net.Layers
ans x1 = 5层阵列层:1“sequenceinput”序列输入序列输入12维度2的lstm lstm lstm 100隐藏单位3 fc的完全连接9完全连接层4的softmax softmax softmax 5 classoutput的分类输出crossentropyex ' 1 ', 8其他类
负载测试数据。
(XTest, tt) = japaneseVowelsTestData;
循环时间的步骤序列。每个时间步和更新网络状态进行分类。
X = XTest {94};numTimeSteps =大小(X, 2);为i = 1: numTimeSteps v = X(:,我);(净、标签、分数)= classifyAndUpdateState(净,v);标签(i) =标签;结束
情节预测标签在一个楼梯。情节变化之间的时间步骤显示了如何预测。
图楼梯(标签,“o”)xlim ([1 numTimeSteps])包含(“时间步”)ylabel (“预测阶级”)标题(“随着时间的推移,分类步骤”)
比较预测和真正的标签。画一条水平线显示观察真正的标签。
trueLabel = tt (94)
trueLabel =分类3
持有在线([1 numTimeSteps], [trueLabel trueLabel),…颜色=“红色”,…线型=”——“)传说([“预测”“真正的标签”])
输入参数
recNet
- - - - - -递归神经网络训练
SeriesNetwork
对象|DAGNetwork
对象
递归神经网络训练,指定为一个SeriesNetwork
或者一个DAGNetwork
对象。你可以通过导入pretrained训练网络的网络或通过训练自己的网络使用trainNetwork
函数。
recNet
是一个递归神经网络。它必须至少有一个周期性层(例如,一个LSTM网络)。
序列
- - - - - -顺序或时间序列数据
单元格数值数组的数组|数字数组|数据存储
顺序或时间序列数据,指定为一个N1单元阵列的数字数组,N是观测的数量,一个数值数组代表一个序列,或数据存储。
细胞数组或数字数组输入,包含序列的数值数组的尺寸取决于类型的数据。
输入 | 描述 |
---|---|
向量序列 | c——- - - - - -年代矩阵,c的特征序列的数量和吗年代是序列长度。 |
一维图像序列 | h——- - - - - -c——- - - - - -年代数组,h和c对应于图像的高度和数量的渠道,分别年代是序列长度。 |
二维图像序列 | h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c对应的高度、宽度和通道的图像,分别年代是序列长度。 |
三维图像序列 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代,在那里h,w,d,c对应高度、宽度、深度和通道数量的3 d图像,分别年代是序列长度。 |
数据存储输入的数据存储必须返回数据作为一个单元阵列的序列或表的第一列包含序列。序列数据的尺寸必须与上面的表相对应。
提示
输入复数数据输入神经网络,SplitComplexInputs
必须选择输入层1
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|细胞
复数的支持:万博1manbetx是的
X1,…, XN
- - - - - -与多个输入数字或细胞阵列网络
数字数组|单元阵列
与多个输入数字或细胞阵列网络。
序列预测输入,输入必须是一个数字代表一个数组序列或序列单元阵列,在预测的格式描述的格式相匹配序列
参数描述。形象和功能预测输入,输入必须是数值型数组和预测的格式必须符合下列之一:
数据 | 格式 |
---|---|
二维图像 | h——- - - - - -w——- - - - - -c数字数组,h,w,c高度,宽度,分别和通道图像的数量。 |
三维图像 | h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,h,w,d,c的高度、宽度、深度和通道的图像,分别。 |
特性数据 | c1列向量,c的数量特征。 |
为一个例子,演示如何训练一个网络有多个输入,明白了列车网络形象和特征数据。
提示
输入复数的数据网络,SplitComplexInputs
必须选择输入层1
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|细胞
复数的支持:万博1manbetx是的
混合
- - - - - -混合数据
TransformedDatastore
|CombinedDatastore
|自定义mini-batch数据存储
混合数据,指定为以下之一。
数据类型 | 描述 | 示例使用 |
---|---|---|
TransformedDatastore |
数据存储转换批次的数据从底层数据存储读取使用自定义转换函数 |
|
CombinedDatastore |
数据存储,读取从两个或两个以上的底层数据存储 |
|
自定义mini-batch数据存储 | 自定义数据存储返回mini-batches的数据 | 使用数据进行预测,其他数据存储的格式不支持。万博1manbetx 有关详细信息,请参见开发自定义Mini-Batch数据存储。 |
您可以使用其他通过使用内置的数据存储进行预测变换
和结合
功能。这些函数可以读取数据存储的数据转换为表或单元阵列格式要求classifyAndUpdateState
。有关更多信息,请参见数据存储深度学习。
数据存储必须返回一个表或一个单元阵列中的数据。自定义mini-batch数据存储必须输出表。数据存储的格式输出取决于网络体系结构。
数据存储输出 | 示例输出 |
---|---|
单元阵列与 输入的顺序的 |
data =阅读(ds) data = 4×3单元阵列{12×50双}{28×1双}{12×50双}{28×1双}{12×50双}{28×1双}{12×50双}{28×1双} |
序列预测输入,输入必须是一个数字代表一个数组序列或序列单元阵列,在预测的格式描述的格式相匹配序列
参数描述。形象和功能预测输入,输入必须是数值型数组和预测的格式必须符合下列之一:
数据 | 格式 |
---|---|
二维图像 | h——- - - - - -w——- - - - - -c数字数组,h,w,c高度,宽度,分别和通道图像的数量。 |
三维图像 | h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,h,w,d,c的高度、宽度、深度和通道的图像,分别。 |
特性数据 | c1列向量,c的数量特征。 |
为一个例子,演示如何训练一个网络有多个输入,明白了列车网络形象和特征数据。
提示
数字数组转换为数据存储,使用ArrayDatastore
。
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:[updatedNet Y] = classifyAndUpdateState (recNet C MiniBatchSize = 27)
使用mini-batches分类数据的大小27。
MiniBatchSize
- - - - - -mini-batches大小
128年
(默认)|正整数
大小mini-batches用于预测,指定为一个正整数。大mini-batch大小需要更多的内存,但会导致更快的预测。
当你与不同长度的序列进行预测,mini-batch大小会影响填料添加到输入数据的数量,从而导致不同的预测值。尝试使用不同的值,看看哪种最与你的网络。要指定mini-batch大小和填充选项,可以使用MiniBatchSize
和SequenceLength
选项,分别。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
加速度
- - - - - -性能优化
“汽车”
(默认)|“没有”
性能优化,指定为以下之一:
“汽车”
——自动应用一些优化适合输入网络和硬件资源。“没有”
——禁用所有加速度。
使用加速度
选项“汽车”
可以提供性能优势,但在初始运行时间增加为代价的。后续调用与兼容的参数是更快。使用性能优化计划多次调用该函数时使用新的输入数据。
ExecutionEnvironment
- - - - - -硬件资源
“汽车”
(默认)|“图形”
|“cpu”
硬件资源,指定为以下之一:
“汽车”
——使用GPU如果可用;否则,使用CPU。“图形”
——使用GPU。使用GPU需要并行计算工具箱的许可和支持GPU设备。万博1manbetx支持设备的信息,请参阅万博1manbetxGPU计算的需求(并行计算工具箱)。如果并行计算工具箱或合适的GPU不可用,那么软件返回一个错误。“cpu”
——使用CPU。
SequenceLength
- - - - - -选择垫或截断序列
“最长”
(默认)|“最短”
|正整数
选项板、截断或分裂的输入序列,指定为以下之一:
“最长”
——在每个mini-batch垫序列有相同的长度最长的序列。这个选项不丢弃任何数据,尽管填充可以引入神经网络噪声。“最短”
——在每个mini-batch截断序列有相同的长度最短的序列。这个选项可以确保没有添加填充物,在丢弃的成本数据。正整数——对于每个mini-batch,垫的序列的长度最长mini-batch序列,然后把序列分割成较小的指定长度的序列。如果发生分裂,那么软件创建额外的mini-batches。如果指定的序列长度不均匀划分序列长度的数据,然后mini-batches包含结束这些序列长度短于指定的序列长度。使用这个选项如果完整的序列不适合在内存中。或者,试着减少序列的数量每mini-batch通过设置
MiniBatchSize
选择一个较低的值。
了解更多关于填充的效果,删除,并把输入序列,明白了序列填充、截断和分裂。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
SequencePaddingDirection
- - - - - -填充方向或截断
“正确”
(默认)|“左”
填充方向或截断,指定为以下之一:
“正确”
——垫或截断序列在右边。序列开始在同一时间步和软件截断或添加填充序列的结束。“左”
——垫或截断序列在左边。软件截断或添加填充序列,序列的开始结束同时一步。
因为反复层过程序列数据一次一个时间步,当复发性层OutputMode
属性是“最后一次”
,任何填充在最后时间步可以负面影响层的输出。垫或截断左边序列数据,设置SequencePaddingDirection
选项“左”
。
sequence-to-sequence神经网络(当OutputMode
属性是“序列”
对于每一个周期性层),任何填充在第一次的步骤可以负面影响的预测更早的时间步骤。垫或截断序列数据在右边,设置SequencePaddingDirection
选项“正确”
。
了解更多关于填充的效果,删除,并把输入序列,明白了序列填充、截断和分裂。
SequencePaddingValue
- - - - - -垫的价值序列
0
(默认)|标量
盘输入序列值,指定为一个标量。
选择是有效的只有当SequenceLength
是“最长”
或者一个正整数。不垫序列南
,因为这样做可以传播在整个神经网络错误。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
updatedNet
——更新网络
SeriesNetwork
对象|DAGNetwork
对象
网络更新。updatedNet
相同类型的网络作为输入网络。
Y
——预测类标签
分类向量的分类向量|单元阵列
预测类标签,作为分类返回向量,或一个细胞分类向量的数组。的格式Y
取决于问题的类型。
下面的表描述的格式Y
。
任务 | 格式 |
---|---|
Sequence-to-label分类 | N标签1分类向量,N是观测的数量。 |
Sequence-to-sequence分类 | N1单元阵列的分类标签,序列N是观测的数量。每个序列都有相同数量的时间步骤应用后相应的输入序列 sequence-to-sequence分类问题的观察, |
分数
——预测类分数
矩阵的矩阵|单元阵列
预测类成绩,作为一个矩阵或返回单元阵列的矩阵。的格式分数
取决于问题的类型。
下面的表描述的格式分数
。
任务 | 格式 |
---|---|
Sequence-to-label分类 | N——- - - - - -K矩阵,N是观测的数量,和K类的数量。 |
Sequence-to-sequence分类 | N1单元阵列矩阵,N是观测的数量。序列矩阵K行,K类的数量。每个序列都有相同数量的时间步骤应用后相应的输入序列 |
sequence-to-sequence分类问题的观察,序列
可以是一个矩阵。在这种情况下,分数
是一个矩阵预测类的分数。
算法
浮点算术
当你训练一个神经网络使用trainNetwork
函数,或者当你使用预测或验证功能DAGNetwork
和SeriesNetwork
对象,软件执行这些计算使用单精度浮点算术。包括功能训练、预测和验证trainNetwork
,预测
,分类
,激活
。软件使用单精度算法训练神经网络时使用的cpu和gpu。
再现性
为了提供最好的性能,深度学习使用MATLAB的GPU®不能保证是确定的。根据您的网络体系结构,在一些情况下你可能会得到不同的结果在使用GPU训练两个相同的网络或有两个预测使用相同的网络和数据。
选择
使用递归神经网络分类数据与多个输出层和更新网络状态,使用predictAndUpdateState
功能和设置ReturnCategorical
选项1
(真正的)。
计算预测分类分数和递归神经网络的网络状态更新,您还可以使用predictAndUpdateState
函数。
引用
[1]m .奖赏,富山,和m . Shimbo。“多维曲线分类使用通过地区。”模式识别的字母。11 - 13号20卷,第1111 - 1103页。
[2]UCI机器学习库:日本元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese +元音
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
c++代码生成支持下面的语法:万博1manbetx
[updatedNet Y] = classifyAndUpdateState (recNet序列)
,在那里序列
是细胞数组或数字数组。(updatedNet Y分数)= classifyAndUpdateState (recNet序列)
,在那里序列
单元阵列。_ = classifyAndUpdateState (recNet、序列、名称=值)
使用任何以前的语法
为输入向量序列,在代码生成功能必须是一个常数。序列的长度可以是可变大小的。
图像序列的输入,高度,宽度,和渠道的数量必须在代码生成一个常数。
只有
MiniBatchSize
,SequenceLength
,SequencePaddingDirection
,SequencePaddingValue
名称-值参数支持代码生成。万博1manbetx所有名称参数必须编译时常量。只有
“最长”
和“最短”
选择的SequenceLength
名称-值参数是支持代码生成。万博1manbetx代码生成的英特尔®MKL-DNN目标不支持的结合万博1manbetx
SequenceLength =“最长”
,SequencePaddingDirection =“左”
,SequencePaddingValue = 0
名称-值参数。
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
GPU代码生成支持下面的语法:万博1manbetx
[updatedNet Y] = classifyAndUpdateState (recNet序列)
,在那里序列
单元阵列。(updatedNet Y分数)= classifyAndUpdateState (recNet序列)
,在那里序列
单元阵列。_ = classifyAndUpdateState(__,名称=值)
使用任何以前的语法
GPU代码生成的
classifyAndUpdateState
功能仅支持递归神经网络针对cuDN万博1manbetxN和TensorRT库。GPU代码生成不支持万博1manbetx
gpuArray
的输入classifyAndUpdateState
函数。为输入向量序列,在代码生成功能必须是一个常数。序列的长度可以是可变大小的。
图像序列的输入,高度,宽度,和渠道的数量必须在代码生成一个常数。
只有
MiniBatchSize
,SequenceLength
,SequencePaddingDirection
,SequencePaddingValue
名称-值参数支持代码生成。万博1manbetx所有名称参数必须编译时常量。只有
“最长”
和“最短”
选项的SequenceLength
名称-值参数是支持代码生成。万博1manbetx
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
的
ExecutionEnvironment
选项必须是“汽车”
或“图形”
当输入数据:一个
gpuArray
一个单元阵列包含
gpuArray
对象一个表,其中包含
gpuArray
对象一个输出数据存储单元数组包含
gpuArray
对象包含一个输出数据存储表
gpuArray
对象
有关更多信息,请参见运行在GPU MATLAB函数(并行计算工具箱)。
版本历史
介绍了R2017bR2022b:预测函数垫mini-batches最长序列在分裂之前您指定的长度SequenceLength
选择一个整数
从R2022b开始,当你做出预测和序列数据使用预测
,分类
,predictAndUpdateState
,classifyAndUpdateState
,激活
功能和SequenceLength
选择是一个整数,软件垫序列的长度最长的序列在每个mini-batch然后将序列分为mini-batches指定的序列长度。如果SequenceLength
不均匀划分mini-batch序列长度,最后分裂mini-batch长度短于SequenceLength
。这种行为可以防止时间步骤,只包含padding值影响的预测。
在以前的版本中,软件垫mini-batches序列长度匹配最近的的倍数SequenceLength
这是大于或等于mini-batch长度,然后将数据。手动复制这种行为,垫mini-batches的输入数据,这样的长度适当的倍数SequenceLength
。sequence-to-sequence工作流,您可能还需要手动删除时间步骤的输出对应于填充的值。
Abrir比如
这种版本modificada德埃斯特比如。害怕Desea abrir埃斯特比如con sus modificaciones吗?
第一de MATLAB
Ha事实clic en联合国围绕此时一个埃斯特第一de MATLAB:
Ejecute el第一introduciendolo en la ventana de第一de MATLAB。洛杉矶navegadores网络没有admiten第一de MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。