主要内容

classifyAndUpdateState

利用训练有素的递归神经网络对数据进行分类,并更新网络状态

描述

你可以在CPU或GPU上使用训练有素的深度学习网络进行预测。使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱)使用“ExecutionEnvironment”名称-值对的论点。

例子

updatedNetYPred) = classifyAndUpdateState (recNet序列对数据进行分类序列使用训练有素的递归神经网络recNet并更新网络状态。

这个函数只支持递归神经网络。金宝app输入recNet必须至少有一个循环层。

updatedNetYPred) = classifyAndUpdateState (___名称,值使用前面语法中的任何参数和一个或多个指定的附加选项名称,值对参数。例如,“MiniBatchSize”,27使用尺寸为27的小批量分类数据

对网络状态进行分类和更新

例子

updatedNetYPred分数) = classifyAndUpdateState (___使用前面语法中的任何参数,返回一个分类分数矩阵,并更新网络状态。

提示

当使用不同长度的序列进行预测时,小批量的大小会影响添加到输入数据中的填充量,从而导致不同的预测值。尝试使用不同的值,看看哪一个最适合你的网络。要指定小批量大小和填充选项,请使用“MiniBatchSize”“SequenceLength”选项,分别。

例子

全部折叠

使用递归神经网络对数据进行分类,并更新网络状态。

负载JapaneseVowelsNet,在[1]和[2]所述的日语元音数据集上训练的长短期记忆网络。该网络在按序列长度排序的序列上进行训练,最小批大小为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,YTest]=日本世界统计数据;

按顺序循环时间步骤。对每个时间步骤进行分类,更新网络状态。

X=XTest{94};numTimeSteps=大小(X,2);i = 1:numTimeSteps v = X(:,i);(净、标签、分数)= classifyAndUpdateState(净,v);标签(i) =标签;结束

在楼梯图中绘制预测的标签。该图显示了预测如何在时间步间变化。

图楼梯(标签,“o”) xlim([1 numTimeSteps]) xlabel(“时间步”) ylabel (“预测阶级”)标题(“随时间的步骤分类”

图中包含一个轴。标题分类随时间步长变化的轴包含stair类型的对象。

将预测与真实的标签进行比较。绘制一条水平线,显示观察的真实标签。

trueLabel =欧美(94)
trueLabel =分类3.
持有线([1 numTimeSteps], [trueLabel trueLabel),...“颜色”“红色”...“线条样式”“——”)传奇([“预测”“真正的标签”])

图中包含一个坐标轴。标题为“分类时间步骤”的轴包含2个类型为楼梯、线的对象。这些对象代表预测,真标签。

输入参数

全部折叠

训练的递归神经网络,指定为SeriesNetwork或者一个DAGNetwork对象。您可以通过导入预先训练过的网络或通过使用trainNetwork函数。

recNet为递归神经网络。它必须至少有一个循环层(例如,LSTM网络)。

序列或时间序列数据,指定为N-by-1数字数组单元格数组,其中N是观察数、表示单个序列的数字数组或数据存储。

对于单元格数组或数字数组输入,包含序列的数字数组的尺寸取决于数据类型。

输入 描述
向量序列 c——- - - - - -年代矩阵,c序列的特征数是和吗年代为序列长度。
二维图像序列 h——- - - - - -w——- - - - - -c——- - - - - -年代数组,hw,c分别对应图像的高度、宽度和通道数量,和年代为序列长度。
三维图像序列 h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代,在那里hwd,c分别为三维图像通道的高度、宽度、深度和数量年代为序列长度。

对于数据存储输入,数据存储必须以序列单元格数组或第一列包含序列的表的形式返回数据。序列数据的维度必须与上表相对应。

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数名称1,值1,…,名称,值

例子:[updatedNet, YPred] = classifyAndUpdateState(recNet,C,'MiniBatchSize',27);使用尺寸为27的小批量分类数据。

用于预测的小批量的大小,指定为正整数。更大的迷你批处理需要更多的内存,但可以导致更快的预测。

当使用不同长度的序列进行预测时,小批量的大小会影响添加到输入数据中的填充量,从而导致不同的预测值。尝试使用不同的值,看看哪一个最适合你的网络。要指定小批量大小和填充选项,请使用“MiniBatchSize”“SequenceLength”选项,分别。

例子:“MiniBatchSize”,256年

性能优化,指定为逗号分隔对组成“加速”以及以下其中之一:

  • “汽车”-自动应用许多适合输入网络和硬件资源的优化。

  • “没有”—禁用所有加速功能。

默认选项是“汽车”

使用“加速”选项“汽车”可以提供性能优势,但以增加初始运行时为代价。使用兼容参数的后续调用速度更快。当您计划使用新输入数据多次调用函数时,请使用性能优化。

例子:“加速”、“汽车”

硬件资源,指定为逗号分隔对组成“ExecutionEnvironment”以及以下其中之一:

  • “汽车”-如果GPU可用,请使用;否则,请使用CPU。

  • “gpu”—使用GPU。使用GPU需要并行计算工具箱和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱)如果并行计算工具箱或合适的GPU不可用,则软件返回错误。

  • “cpu”-使用CPU。

例子:“ExecutionEnvironment”、“cpu的

填充、截断或拆分输入序列的选项,指定为以下之一:

  • “最长的”—在每个小批量中填充序列,使其与最长序列具有相同的长度。这个选项不会丢弃任何数据,尽管填充会给网络带来噪声。

  • “最短的”-截断每个小批中的序列,使其长度与最短序列相同。这个选项确保不添加任何填充,代价是丢弃数据。

  • 正整数—对于每个小批量,将序列填充到指定长度的最近倍数,该倍数大于最小批量中序列的最长长度,然后将序列分割成指定长度的更小的序列。如果发生分裂,则软件创建额外的小批量。如果完整序列无法装入内存,则使用此选项。或者,尝试通过设置来减少每个小批量的序列数量“MiniBatchSize”选择较低的值。

要了解更多关于填充、截断和分割输入序列的效果,请参见序列填充、截断和分割

例子:“SequenceLength”、“最短的

填充或截断的方向,指定为下列任一种:

  • “对”—在右侧填充或截断序列。序列在同一时间步开始,软件截断或添加填充到序列的结束。

  • “左”-在左侧填充或截断序列。该软件截断或添加填充到序列的开始,以便序列在同一时间步结束。

因为LSTM层处理序列数据的时间一步一次,当层OutputMode财产是“最后一次”,最后时间步骤中的任何填充都会对层输出产生负面影响。要在左侧填充或截断序列数据,请设置“SequencePaddingDirection”选择“左”

对于序列到序列网络(当OutputMode财产是“序列”对于每个LSTM层),第一个时间步骤中的任何填充都会对较早时间步骤的预测产生负面影响。要在右侧填充或截断序列数据,请设置“SequencePaddingDirection”选择“对”

要了解更多关于填充、截断和分割输入序列的效果,请参见序列填充、截断和分割

值,用来填充作为标量指定的输入序列。该选项仅在以下情况下有效SequenceLength“最长的”或者一个正整数。不要用,因为这样做会在整个网络中传播错误。

例子:“SequencePaddingValue”,1

输出参数

全部折叠

网络更新。updatedNet是与输入网络相同类型的网络。

作为分类向量或分类向量的单元格数组返回的预测类标签。的格式YPred这取决于问题的类型。

格式如下表所示YPred

任务 格式
Sequence-to-label分类 N标签的分类向量,其中N为观察次数。
Sequence-to-sequence分类

N-by-1标签的分类序列单元格数组,其中N为观察次数。每个序列在应用后与相应的输入序列具有相同的时间步长SequenceLength选择每个小批独立。

对于单次观测的序列到序列分类问题,序列可以是一个矩阵。在这种情况下,YPred是标签的分类序列。

预测的班级分数,作为矩阵或矩阵的单元格数组返回。的格式分数这取决于问题的类型。

格式如下表所示分数

任务 格式
Sequence-to-label分类 N——- - - - - -K矩阵,在哪里N是观察的次数,和K为类数。
Sequence-to-sequence分类

N-by-1单元格矩阵数组,其中N为观察次数。这些序列是矩阵K行,K为类数。每个序列在应用后与相应的输入序列具有相同的时间步长SequenceLength选择每个小批独立。

对于单次观测的序列到序列分类问题,序列可以是一个矩阵。在这种情况下,分数是预测班级成绩的矩阵。

算法

当你用trainNetwork函数,或使用预测或验证函数时DAGNetworkSeriesNetwork对象时,软件使用单精度浮点运算执行这些计算。用于训练、预测和验证的功能包括trainNetwork预测分类,激活.当你同时使用cpu和gpu训练网络时,该软件使用单精度算法。

工具书类

工藤、富山、新保。“使用通过区域的多维曲线分类”。模式识别的字母. 第20卷,第11-13号,第1103-1111页。

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

扩展功能

介绍了R2017b