主要内容

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,一个预先训练的长短期记忆(LSTM)网络,在日语Vowels数据集上训练,如[1]和[2]所述。该网络在按序列长度排序的序列上训练,迷你批大小为27。

负载JapaneseVowelsNet

查看网络结构。

网层
ans = 5x1层数组与层:1' sequenceinput'序列输入序列输入与12维2 'lstm' lstm lstm与100个隐藏单元3 'fc'全连接9全连接层4 'softmax' softmax softmax 5 'classoutput'分类输出crossentropyex与'1'和8个其他类

加载测试数据。

[XTest,YTest] =日本evowelstestdata;

按顺序遍历时间步骤。对每个时间步进行分类并更新网络状态。

X = XTest{94};numTimeSteps = size(X,2);i = 1:numTimeSteps v = X(:,i);[net,label,score] = classifyAndUpdateState(net,v);标签(i) =标签;结束

在阶梯图中绘制预测的标签。图表显示了预测如何在时间步骤之间变化。

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

图中包含一个轴对象。标题为Classification Over Time Steps的axes对象包含一个stair类型的对象。

将预测结果与真实标签进行比较。画一条水平线来表示观测的真实标记。

trueLabel = YTest(94)
trueLabel =分类3.
持有line([1 numTimeSteps],[trueLabel trueLabel],...“颜色”“红色”...“线型”“——”)传说([“预测”“真正的标签”])

图中包含一个轴对象。标题为Classification Over Time Steps的axis对象包含两个类型为stair、line的对象。这些对象表示预测、真实标签。

输入参数

全部折叠

训练过的循环神经网络,指定为aSeriesNetwork或者一个DAGNetwork对象。可以通过导入预训练的网络或使用trainNetwork函数。

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

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

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

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

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

名称-值参数

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

例子:[updatedNet, YPred] = classifyAndUpdateState(recNet,C,'MiniBatchSize',27)使用大小为27的小批对数据进行分类。

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

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

例子:“MiniBatchSize”,256年

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

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

  • “没有”-禁用所有加速。

默认选项为“汽车”

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

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

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

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

  • “图形”—使用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-by-1的标签分类向量,其中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函数,或者当您使用预测或验证函数时DAGNetwork而且SeriesNetwork对象,该软件使用单精度浮点运算来执行这些计算。用于训练、预测和验证的函数包括trainNetwork预测分类,激活.当您使用cpu和gpu训练网络时,该软件使用单精度算法。

参考文献

[1]工藤M.,富山J.,辛波M.。“使用穿过区域的多维曲线分类”模式识别信.第20卷,11-13号,第1103-1111页。

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

扩展功能

在R2017b中引入