主要内容

predictandanddatestate.

使用训练有素的递归神经网络预测反应并更新网络状态

描述

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

例子

updatedNet伊普雷德] = predictandupdattestate(雷克内特序列预测数据的响应序列使用训练有素的递归神经网络雷克内特并更新网络状态。

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

updatedNet伊普雷德] = predictandupdattestate(___名称,值使用前面语法中的任何参数和一个或多个指定的附加选项名称,值对论点。例如,“MiniBatchSize”,27使用尺寸为27的小批量进行预测。

提示

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

例子

全部折叠

使用经过训练的递归神经网络预测响应,并更新网络状态。

负载JapaneseVowelsNet,如[1]和[2]中所述,在日本元音数据集上培训的预训练的长短期内存(LSTM)网络。该网络在序列上培训,序列长度与迷你批量大小为27。

负载JapaneseVowelsNet

查看网络架构。

网。层
ans=5x1带层的层阵列:1“sequenceinput”带12维的序列输入序列输入2“lstm”带100个隐藏单元的lstm lstm 3“fc”完全连接9个完全连接的层4“softmax”softmax 5“classoutput”带“1”和8个其他类的分类输出crossentropyex

加载测试数据。

[XTest,欧美]= japaneseVowelsTestData;

按顺序循环时间步骤。预测每个时间步的分数,更新网络状态。

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

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

ClassNames = String(Net.Layers(END).Classes);图线= plot(分数');xlim([1 numtimesteps])传奇(“类”+类名,'地点'“西北”)Xlabel(“时间步长”)ylabel(“得分”)头衔(“随时间步长的预测分数”

通过时间步骤突出显示预测得分为正确的类。

truilabel = ytest(94)
truilabel =明确的3.
线条(Truilabel).linewidth = 3;

图中包含一个坐标轴。标题为“预测分数随着时间的推移”的轴包含9个类型为line的对象。这些物件代表1类、2类、3类、4类、5类、6类、7类、8类、9类。

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

图酒吧(分数)标题(“最终预测分数”)Xlabel(“类”)ylabel(“得分”

图中包含一个坐标轴。标题为Final Prediction Scores的轴包含一个bar类型的对象。

输入参数

全部折叠

经过培训的经常性神经网络,指定为aSeriesNetwork或者一个Dagnetwork.对象您可以通过导入预训练网络或使用trainNetwork函数。

雷克内特是一种递归神经网络。它必须至少有一个循环层(例如,LSTM网络)。

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

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

输入 描述
向量序列 c-借-年代矩阵,其中c是序列的特征数,以及年代是序列长度。
二维图像序列 h-借-w-借-c-借-年代数组,hw, 和c分别对应于图像的高度、宽度和通道数,以及年代是序列长度。
三维图像序列 h-借-w-借-d-借-c-借-年代哪里hwd, 和c分别对应于三维图像的高度、宽度、深度和通道数,以及年代是序列长度。

对于数据存储区输入,数据存储必须将数据返回为序列的单元格数组或第一列包含序列的表。序列数据的尺寸必须对应于上表。

名称-值对的观点

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

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

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

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

例子:“MiniBatchSize”,256

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

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

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

默认选项是“汽车”

使用“加速”选项“汽车”可以提供绩效福利,但牺牲了增加的初始运行时间。具有兼容参数的后续调用更快。使用新输入数据计划多次调用函数时,使用性能优化。

例子:“加速”,“自动”

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

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

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

  • '中央处理器'—使用CPU。

例子:'executionenvironment','cpu'

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

  • “最长”-每个小批量中的Pad序列与最长序列具有相同的长度。此选项不会丢弃任何数据,但填充会给网络带来噪声。

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

  • 正整数 - 对于每个小批次,填充序列到最接近的指定长度的倍数大于小批次中最长的序列长度,然后将序列分成规定长度的较小序列。如果发生拆分,则软件会创建额外的百分之批处理。如果完整序列不适合内存,请使用此选项。或者,尝试通过设置序列减少每百分之批次的序列数“MiniBatchSize”值较低的值。

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

例子:'Sequencelength','最短'

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

  • “对”- 右侧的垫或截断序列。该序列在同一时间步骤开始,软件截断或将填充添加到序列的末尾。

  • '剩下'- 左侧或截断序列。该软件截断或将填充添加到序列的开始,使序列同时结束。

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

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

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

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

例子:“SequencePaddingValue”,1

输出参数

全部折叠

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

预测得分或响应,作为矩阵或小区矩阵阵列。格式伊普雷德取决于问题的类型。

下表介绍了分类问题的格式。

任务 格式
Sequence-to-label分类 N-借-K矩阵,N是观察次数,以及K为类数。
Sequence-to-sequence分类

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

对于一个观察的序列到序列分类问题,序列可以是一个矩阵。在这种情况下,伊普雷德是一个K-借-年代分数矩阵,其中K是班数,和年代是相应输入序列中的总时间步长。

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

任务 格式
Sequence-to-one回归 N-借-R矩阵,N是观察人数和R为响应的数量。
Sequence-to-sequence回归

N-by-1数字序列单元格数组,其中N为观察次数。这些序列是矩阵R行,在哪里R是响应的数量。应用后,每个序列的时间步数与相应的输入序列的时间步数相同SequenceLength每个小批量的选项都是独立的。

对于单次观测的序列间问题,序列可以是一个矩阵。在这种情况下,伊普雷德是响应矩阵。

算法

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

参考文献

[1] M. Kudo,J. Toyama和M. Shimbo。“使用过度区域的多维曲线分类。”模式识别字母第20卷,第11-13号,第1103-1111页。

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

扩展能力

介绍了R2017b