主要内容

predictAndUpdateState

使用训练过的循环神经网络预测响应并更新网络状态

描述

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

例子

updatedNetypred.) = predictAndUpdateState (regnet.序列预测输入数据的响应序列利用训练过的递归神经网络regnet.并更新网络状态。

此函数仅支持递归神经网络。金宝app输入regnet.必须至少有一个循环层。

updatedNetypred.) = predictAndUpdateState (___名称,值使用前面语法中的任何参数和由一个或多个指定的附加选项名称,值对参数。例如,'minibatchsize',27用27号的小批量进行预测。

提示

当用不同长度的序列进行预测时,迷你批量大小可以影响添加到的输入数据的填充量,这导致不同的预测值。尝试使用不同的值,以查看最适合您的网络。要指定迷你批量大小和填充选项,请使用'minibatchsize'“SequenceLength”选项分别。

例子

全部折叠

使用培训的经常性神经网络预测响应并更新网络状态。

负载JapaneseVowelsNet,一个预先训练的长短期记忆(LSTM)网络,它训练了日语元音数据集,如[1]和[2]所述。该网络对按序列长度排序的序列进行训练,小批处理规模为27。

负载JapaneseVowelsNet

查看网络架构。

net.layers.
ANS = 5x1层阵列具有图层:1'SENDUNINPUT'序列输入序列输入序列输入12尺寸2'LSTM'LSTM LSTM LSTM LSTM为100个隐藏单元3'FC'完全连接的9完全连接的第4层SoftMax'SoftMax SoftMax SoftMax 5'ClassOutput'分类输出Crossentropyex与“1”和其他8个类

加载测试数据。

[xtest,ytest] =日本韦沃尔斯特迪塔

在一个序列中循环时间步骤。预测每个时间步的得分,更新网络状态。

x = xtest {94​​};numtimesteps = size(x,2);i = 1:numtimesteps v = x(:,i);[净,得分] = predictandanddattestate(net,v);分数(:,i)=得分;结束

绘制预测分数。该图显示了预测分数在时间步之间的变化。

一会=字符串(net.Layers(结束). class);Figure lines = plot(scores’);传说numTimeSteps xlim ([1]) (“班级 ”+ classnames,“位置”'西北')包含(“时间步骤”) ylabel (“分数”) 标题(“通过时间步骤的预测得分”

突出显示正确类的时间步长的预测分数。

trueLabel =欧美(94)
trueLabel =分类3.
行(trueLabel)。线宽= 3;

图中包含一个轴。带有标题预测的轴随时间步骤的分数包含9个类型的线。这些对象表示类1,2,类,3类,等级4,类别5,第6类,第7类,第8类,等级9。

在条形图中显示最终时间步长预测。

图酒吧(分数)标题(“最终预测分数”)包含(“班级”) ylabel (“分数”

图中包含一个轴。标题为“最终预测得分”的轴包含一个类型为bar的对象。

输入参数

全部折叠

训练的递归神经网络,指定为SeriesNetwork或者一个DAGNetwork目的。您可以通过导入预磨损的网络或使用您自己的网络使用培训的网络来获得培训的网络trainNetwork函数。

regnet.是一种经常性的神经网络。它必须具有至少一个复发层(例如,LSTM网络)。

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

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

输入 描述
矢量序列 c-经过-年代矩阵,c是序列的特征数量和年代为序列长度。
二维图像序列 h-经过-w-经过-c-经过-年代数组,hw,c对应于图像的高度,宽度和数量,以及年代为序列长度。
三维图像序列 h-经过-w-经过-d-经过-c-经过-年代, 在哪里hwd,c对应于3-D图像的高度,宽度,深度和数量,以及年代为序列长度。

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

名称-值对的观点

指定可选的逗号分隔对名称,值论点。的名字参数名和价值是对应的值。的名字必须出现在引号内。您可以按如下顺序指定几个名称和值对参数name1,value1,...,namen,valuen

例子:[updatedNet, YPred] = predictAndUpdateState(recNet,C,'MiniBatchSize',27)用27号的小批量进行预测。

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

当用不同长度的序列进行预测时,迷你批量大小可以影响添加到的输入数据的填充量,这导致不同的预测值。尝试使用不同的值,以查看最适合您的网络。要指定迷你批量大小和填充选项,请使用'minibatchsize'“SequenceLength”选项分别。

例子:'minibatchsize',256

性能优化,指定为逗号分隔对,由“加速”其中之一是:

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

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

默认选项是“汽车”

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

例子:'加速','auto'

组成的以逗号分隔的对指定的硬件资源“ExecutionEnvironment”其中之一是:

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

  • 'GPU'—使用图形处理器。使用GPU需要并行计算工具箱和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU通金宝app过发布支持(并行计算工具箱)如果不可用并行计算工具箱或合适的GPU,则软件返回错误。

  • “cpu”- 使用CPU。

例子:“ExecutionEnvironment”、“cpu的

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

  • '最长'- 每个迷你批处理中的缝合序列具有与最长序列相同的长度。此选项不会丢弃任何数据,但填充可以向网络引入噪点。

  • “最短”-截断每个小批处理中的序列,使其与最短序列具有相同的长度。此选项确保不添加填充,以丢弃数据为代价。

  • 正整数—对于每个小批处理,填充序列到指定长度大于小批处理中最长序列长度的最近倍数,然后将序列分割成指定长度的小序列。如果发生拆分,软件将创建额外的小批。如果整个序列不适合内存,请使用此选项。或者,尝试通过设置'minibatchsize'选择一个较低的价值。

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

例子:“SequenceLength”、“最短的

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

  • '正确的'—右侧的填充或截断序列。序列在同一时间步长开始,软件在序列的末尾截断或添加填充。

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

因为LSTM层处理序列数据的时间步长,当层OutputMode属性是“最后一次”,最后的时间步长中的任何填充都可能对层输出产生负面影响。若要填充或截断左侧的序列数据,请设置'sequencdpaddingdirection'选择“左”

对于序列到序列的网络(当OutputMode属性是“序列”对于每个LSTM层),第一个时间步长中的任何填充都可能对早期时间步长的预测产生负面影响。若要填充或截断右侧的序列数据,请设置'sequencdpaddingdirection'选择'正确的'

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

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

例子:“SequencePaddingValue”,1

输出参数

全部折叠

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

预测分数或响应,以矩阵或矩阵的单元格数组返回。的格式ypred.这取决于问题的类型。

下表描述了分类问题的格式。

任务 格式
Sequence-to-label分类 N-经过-K矩阵,其中N是观察人数,和K是班级的数量。
Sequence-to-sequence分类

N-by-1单元数组矩阵,其中N是观测的数量。序列是矩阵K行,在哪里K是班级的数量。在应用后,每个序列具有与相应的输入序列相同的时间步骤SequenceLength每个迷你批处理的选项独立。

对于单观察点的序列到序列分类问题,序列可以是矩阵。在这种情况下,ypred.是A.K-经过-年代分数矩阵,在哪里K是班数,和年代为相应输入序列中的总时间步长。

下表描述了回归问题的格式。

任务 格式
Sequence-to-one回归 N-经过-R矩阵,其中N观察的次数是多少R是响应的数量。
Sequence-to-sequence回归

N- 1个数字序列的单元阵列,其中N是观测的数量。序列是矩阵R行,在哪里R是响应的数量。在应用后,每个序列具有与相应的输入序列相同的时间步骤SequenceLength每个迷你批处理的选项独立。

对于单观察点的序列到序列问题,序列可以是矩阵。在这种情况下,ypred.是一个反应矩阵。

算法

当你训练一个网络使用trainNetwork功能,或使用预测或验证功能时DAGNetworkSeriesNetwork对象,软件执行这些计算使用单精度,浮点运算。培训、预测和验证的功能包括trainNetwork预测分类,激活.当您使用CPU和GPU培训网络时,该软件使用单精度算术。

参考

Kudo, J.富山,M. Shimbo。“利用穿越区域进行多维曲线分类。”模式识别字母.卷。20,第11-13页,第1103-1111页。

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

扩展能力

介绍了R2017b