主要内容

预测

使用经过训练的深度学习神经网络预测反应

描述

您可以使用培训的神经网络进行预测,以便在CPU或GPU上深入学习。使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持设备的信息,请参阅金宝appGPU支金宝app持版本(并行计算工具箱)使用该硬件要求指定硬件要求ExecutionEnvironment名称值对参数。

YPred=预测(IMDS.中的图像数据的响应IMDS.使用训练系列网络或者DAGNetwork目的.为dlnetwork输入,看到预测

YPred=预测(DS.预测数据存储中数据的响应DS.

YPred=预测(资源描述预测表中数据的响应资源描述

例子

YPred=预测(X预测数字数组中的图像或特征数据的响应X

YPred=预测(, X1,…,XN)预测数字数组中数据的响应X1,......,XN用于多输入网络.输入西对应于网络输入net.inputnames(i)

[YPred1,…那YPredm] = predict(___预测对此的回应m使用前面任一语法的多输出网络的输出。输出ypredj.对应网络输出net.OutputNames (j).若要返回分类输出层的分类输出,请设置'return类别'选项真的

例子

YPred=预测(序列预测序列或时间序列数据的响应序列使用训练过的循环网络(例如,LSTM或GRU网络)

例子

___=预测(___名称,价值通过一个或多个名称 - 值对参数指定的附加选项预测响应。

小费

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

例子

全部收缩

加载样本数据。

[XTrain, YTrain] = digitTrain4DArrayData;

digittrain4darraydata.将数字训练集作为4维数组数据加载。XTrain是28×28×1×5000阵列,其中28个是高度,28是图像的宽度。图1是通道的数量,5000是手写数字的合成图像的数量。ytrain.是一个包含每个观察标签的分类矢量。

构建卷积神经网络架构。

层= [...ImageInputLayer([28 28 1])卷积2dlayer(5,20)rululayer maxpooling2dlayer(2,'走吧',2)全连接列(10)SoftmaxLayer分类层];

将随机梯度下降的默认设置设置为带有动量的选项。

选项=培训选项(“个”);

训练网络。

rng (“默认”)net = trainnetwork(xtrain,ytrain,图层,选项);
单CPU培训。初始化输入数据归一化。| ========================================================================================|时代|迭代|经过时间的时间迷你批量|迷你批量|基础学习| | | | (hh:mm:ss) | Accuracy | Loss | Rate | |========================================================================================| | 1 | 1 | 00:00:00 | 10.16% | 2.3195 | 0.0100 | | 2 | 50 | 00:00:04 | 50.78% | 1.7102 | 0.0100 | | 3 | 100 | 00:00:07 | 63.28% | 1.1632 | 0.0100 | | 4 | 150 | 00:00:10 | 60.16% | 1.0859 | 0.0100 | | 6 | 200 | 00:00:15 | 68.75% | 0.8996 | 0.0100 | | 7 | 250 | 00:00:19 | 76.56% | 0.7920 | 0.0100 | | 8 | 300 | 00:00:23 | 73.44% | 0.8411 | 0.0100 | | 9 | 350 | 00:00:26 | 81.25% | 0.5508 | 0.0100 | | 11 | 400 | 00:00:29 | 90.62% | 0.4744 | 0.0100 | | 12 | 450 | 00:00:32 | 92.19% | 0.3614 | 0.0100 | | 13 | 500 | 00:00:36 | 94.53% | 0.3160 | 0.0100 | | 15 | 550 | 00:00:42 | 96.09% | 0.2544 | 0.0100 | | 16 | 600 | 00:00:46 | 92.19% | 0.2765 | 0.0100 | | 17 | 650 | 00:00:50 | 95.31% | 0.2460 | 0.0100 | | 18 | 700 | 00:00:53 | 99.22% | 0.1418 | 0.0100 | | 20 | 750 | 00:00:56 | 98.44% | 0.1000 | 0.0100 | | 21 | 800 | 00:00:59 | 98.44% | 0.1449 | 0.0100 | | 22 | 850 | 00:01:02 | 98.44% | 0.0989 | 0.0100 | | 24 | 900 | 00:01:05 | 96.88% | 0.1315 | 0.0100 | | 25 | 950 | 00:01:08 | 100.00% | 0.0859 | 0.0100 | | 26 | 1000 | 00:01:12 | 100.00% | 0.0701 | 0.0100 | | 27 | 1050 | 00:01:17 | 100.00% | 0.0759 | 0.0100 | | 29 | 1100 | 00:01:22 | 99.22% | 0.0663 | 0.0100 | | 30 | 1150 | 00:01:26 | 98.44% | 0.0776 | 0.0100 | | 30 | 1170 | 00:01:28 | 99.22% | 0.0732 | 0.0100 | |========================================================================================|

在测试集上运行培训的网络并预测分数。

[XTest,欧美]= digitTest4DArrayData;ypred =预测(net,xtest);

预测默认情况下,默认情况下,使用CUDA®启用的GPU与Compute Capability 3.0可用。您也可以选择运行预测在CPU上使用“ExecutionEnvironment”、“cpu的名称值对参数。

显示测试数据中的前10个图像,并与来自的预测进行比较预测

ytest(1:10,:)
ans =.10 x1分类0 0 0 0 0 0 0 0 0 0 0
Ypred(1:10,:)
ans =.10x10单矩阵0.9978 0.0001 0.0008 0.0002 0.0003 0.0002 0.0003 0.881 0.0000 0.0474 0.0001 0.0001 0.00110 0. 0.0598 0.9998 0.0000 0.000000 0.0000 0 0.0000 0.0000 0.0 0 0.0000 0.0001 0.9814 0.0000 0.000000 0.00000 0.0000 0.0132 0.030 0.0000 0.0132 0.0003 0.0000 0.0102 0.0004 0.0111 0.0002 0.0004 0.0111 0.0002 0.0004 0.0111 0.0002 0.0004 0.0111 0.0002 0.0004 0.0111 0.0002 0.0004 0.0111 0.00010.9873 0.0000 0.0001 0.0000 0.0000 0.0007 0.0000 0.0072 0.000 0 0.000 0.0000 0.0000 0.0000 0 0.0000 0.001100000 0.0000 0.0000 0 0.0000 0.0000 0.0000 0.0000 0.0000 0 0.9265 0.0000 0.06 0.09 0.0000 0.9327 0.0000 0.0378 0.0000 0.01 0.0378 0.0000 0.01.0031

ytest.包含与图像相对应的数字XTest..的列YPred包含预测是对一幅图像包含一个特定数字的概率的估计。也就是说,第一列包含给定图像为数字0的概率估计,第二列包含图像为数字1的概率估计,第三列包含图像为数字2的概率估计,以此类推。你可以看到预测对正确数字的概率的估计几乎是1,而任何其他数字的概率几乎是0。预测正确估计前10个观察为数字0。

加载净化网络。Japanesevowelsnet.是在日语元音数据集上训练的预先训练的LSTM网络,如[1]和[2]所述。对按序列长度排序的序列进行训练,小批大小为27。

加载Japanesevowelsnet.

查看网络架构。

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

加载测试数据。

[XTest,欧美]= japaneseVowelsTestData;

对测试数据进行预测。

ypred =预测(net,xtest);

查看前10个序列的预测得分。

Ypred(1:10,:)
ans =.10x9单矩阵0.9918 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.000 0 0.0000 0.9868 0.0000 0.0000 0 0.0006 0.000 0.901 0.0010 0.05 0.9924 0.0000 0.000000 0.0006 0.0010 0.01 0.0006 0.000 0.0000 0.0006 0.000 0.0001 0.0007 0.000 0.0001 0.000 0 0.0000 0.0001 0.001 0.0000 0.0003 0.0016 0.0000 0.0003 0.0016 0.9888 0.0000 0.0016 0.9888 0.0000 0.00116 0.0000 0.0000 0.00116 0.000060.0010 0.0001 0.0008 0.0087 0.9886 0.000000 0.0000 0.0006 0.0010 0.0001 0.0008 0.0089 0.9982 0.0000 0.000 0.0000 0.0006 0.0007 0.0000 0.0001 0.0004 0.9883 0.000 0.0001 0.0001 0.0010 0.9959 0.001 0.0000 0.0001 0.0011 0.0000 0.0007 0.0011 0.0000 0.0007 0.0011 0.0000 0.0004 0.0011

将这些预测分数与这些序列的标签进行比较。该函数将高预测分数分配给正确的类。

ytest(1:10)
ans =.10 x1分类1 1 1 1 1 1 1 1 1 1 1

输入参数

全部收缩

训练有素的网络,指定为a系列网络或者DAGNetwork目的。您可以通过导入佩带的网络(例如,使用)来获得培训的网络googlenet功能)或使用自己的网络使用Trainnetwork.

图像数据存储,指定为一个imageageAtastore.目的。

imageageAtastore.允许使用预取批量读取JPG或PNG图像文件。如果使用自定义函数读取图像,那么imageageAtastore.不预取。

小费

augmentedImageDatastore用于深度学习图像的高效预处理,包括图像大小调整。

不要使用readfcn.选择imageDatastore对于预处理或调整大小,因为此选项通常显着较慢。

数据存储空间用于内存数据和预处理。数据存储必须返回表中的数据或单元格数组。数据存储量输出的格式取决于网络架构。

网络架构 数据存储输出 示例输出
单输入

表或单元格数组,其中第一列指定预测器。

表元素必须是包含数字数组的标量,行向量或1×1个单元阵列。

自定义数据存储必须输出表。

data =阅读(ds)
数据= 4×1表预测器__________________ {224×224×3 double} {224×224×3双} {224×224×3双} {224×224×3双}
data =阅读(ds)
数据= 4×1 cell array {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double}
多个输入

至少具有的单元阵列numinputs.列,numinputs.是网络输入的数量。

第一个numinputs.列指定每个输入的预测器。

输入的顺序由输入名称网络的财产。

data =阅读(ds)
data = 4×2 cell array {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3双} {224×224×3双} {128×128×3双} {224×224×3双} {128×128×3双}

预测器的格式取决于数据的类型。

数据 预测器的格式
二维图像

H——- - - - - -W.——- - - - - -C数字数组,HW., 和C是图像的高度,宽度和数量。

三维图像

H——- - - - - -W.——- - - - - -D.——- - - - - -C数字数组,HW.D., 和C分别为图像通道的高度、宽度、深度和数量。

向量序列

C——- - - - - -S.矩阵,C是序列的特征数量S.是序列长度。

二维图像序列

H——- - - - - -W.——- - - - - -C——- - - - - -S.数组,HW., 和C对应于图像的高度,宽度和数量,并且S.是序列长度。

迷你批处理中的每个序列必须具有相同的序列长度。

3-D图像序列

H——- - - - - -W.——- - - - - -D.——- - - - - -C——- - - - - -S.数组,HW.D., 和C对应于图像的高度,宽度,深度和数量的图像,以及S.是序列长度。

迷你批处理中的每个序列必须具有相同的序列长度。

特性

C- × 1列向量,其中C是功能的数量。

有关更多信息,请参见深入学习的数据购物

图像或特征数据,指定为数字数组。数组的大小取决于输入的类型:

输入 描述
2-D图像 一种H——- - - - - -W.——- - - - - -C——- - - - - -N数字数组,HW., 和C是图像的高度,宽度和图像的频道数量,以及N是图像的数量。
三维图像 一种H——- - - - - -W.——- - - - - -D.——- - - - - -C——- - - - - -N数字数组,HW.D., 和C是图像的高度,宽度,深度和图像通道数,以及N是图像的数量。
特性 一种N——- - - - - -numFeatures数字数组,N是观察人数和numFeatures是输入数据的功能数量。

如果数组包含S,然后它们通过网络传播。

对于具有多个输入的网络,您可以指定多个数组X1,......,XN,在那里N是网络输入的数量和输入西对应于网络输入net.inputnames(i)

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

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

输入 描述
向量序列 C——- - - - - -S.矩阵,其中C序列的特征数是多少S.是序列长度。
2-D图像序列 H——- - - - - -W.——- - - - - -C——- - - - - -S.阵列,在哪里HW., 和C分别对应于图像通道的高度、宽度和数量S.是序列长度。
3-D图像序列 H——- - - - - -W.——- - - - - -D.——- - - - - -C——- - - - - -S.,在那里HW.D., 和C分别对应三维图像的高度、宽度、深度和通道数,以及S.是序列长度。

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

图像或特征数据表。表中的每一行对应一个观察结果。

表列中的预测器的排列取决于输入数据的类型。

输入 预测
图像数据
  • 图像的绝对或相对文件路径,指定为单个列中的字符向量

  • 指定为3-D数字数组的图像

在单列中指定预测器。

功能数据

数字标量。

在第一个指定预测器numFeatures桌子的列,在哪里numFeatures是输入数据的功能数量。

此参数仅支持单个输入的网络。金宝app

数据类型:桌子

名称值对参数

例子:“MiniBatchSize”,256年指定迷你批量大小为256。

指定可选的逗号分隔对名称,价值论点。的名字是参数名称和价值是相应的价值。的名字必须出现在单引号内(' ')。

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

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

例子:“MiniBatchSize”,256年

性能优化,指定为逗号分隔对组成'加速'和以下之一:

  • '汽车'—自动对输入的网络和硬件资源进行多项优化。

  • 'mex'- 编译并执行MEX功能。仅使用GPU时可用此选项。使用GPU需要并行计算工具箱和支持的GPU设备。金宝app有关支持设备的信息,请参阅金宝appGPU支金宝app持版本(并行计算工具箱)如果并行计算工具箱或合适的GPU不可用,则软件返回错误。

  • '没有任何'- 禁用所有加速度。

默认选项是'汽车'.如果'汽车'MATLAB是指定的,®将应用许多兼容的优化。如果你使用'汽车'选项,MATLAB从不生成MEX函数。

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

'mex'选项基于函数调用中使用的网络和参数生成并执行MEX函数。您可以一次使用与单个网络相关联的多个MEX函数。清除网络变量还清除与该网络相关联的任何MEX功能。

'mex'选项仅在使用GPU时可用。您必须安装一个C / C ++编译器以及用于深度学习库支持包的GPU编码器™接口。金宝app使用MATLAB中的Ad金宝appd-on Expler安装支持包。有关设置说明,请参阅Mex设置(GPU编码器).GPU编码器不是必需的。

'mex'选项不支持所有层。金宝app有关支持的层列表,请参见金宝app金宝app支持层(GPU编码器).循环神经网络(RNNs)包含一个sequenceInputLayer不受支持。金宝app

'mex'Option不支持具有多个输入层金宝app或多个输出层的网络。

你不能使用Matlab Compiler™控件时部署网络'mex'选择。

例子:“加速”、“墨西哥人的

组成的以逗号分隔的对指定的硬件资源'executionenvironment'和以下之一:

  • '汽车'-使用GPU(如果有的话);否则,请使用CPU。

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

  • “cpu”—使用CPU。

例子:“ExecutionEnvironment”、“cpu的

选项返回指定为的分类标签真的或者错误的

如果ReturnCategorical真的,然后函数返回分类输出层的分类标签。否则,该函数将返回分类输出层的预测分数。

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

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

  • “最短”- 截断每个小批处理中的序列与最短序列具有相同的长度。此选项可确保在丢弃数据的成本下添加填充。

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

要了解有关填充,截断和拆分输入序列的影响,请参阅序列填充、截断和分割

例子:“SequenceLength”、“最短的

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

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

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

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

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

要了解有关填充,截断和拆分输入序列的影响,请参阅序列填充、截断和分割

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

例子:'sequencdpaddingsvalue', - 1

输出参数

全部收缩

预测的分数或响应,返回为矩阵,4-D数字阵列或矩阵的小区数组。格式YPred取决于问题的类型。

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

任务 格式
图像分类 N——- - - - - -K.矩阵,N是观察的次数,和K.是课程数量
序列到标签分类
功能分类
序列到序列分类

N- 1个矩阵的单元阵列,其中N是观察人数。序列是矩阵K.行,K.是班级的数量。应用后,每个序列与相应的输入序列具有相同的时间步长Sequencelength.选项每个小批独立。

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

任务 格式
2-D图像回归
  • N——- - - - - -R.矩阵,N图片的数量是多少R.是响应的数量。

  • H——- - - - - -W.——- - - - - -C——- - - - - -N数字数组,HW., 和C是图像的高度,宽度和图像的频道数量,以及N是图像的数量。

3-D图像回归
  • N——- - - - - -R.矩阵,N图片的数量是多少R.是响应的数量。

  • H——- - - - - -W.——- - - - - -D.——- - - - - -C——- - - - - -N数字数组,HW.D., 和C是图像的高度,宽度,深度和图像通道数,以及N是图像的数量。

序列到一个回归 N——- - - - - -R.矩阵,N是序列的个数和R.是响应的数量。
序列到序列回归

N-by-1单元格数组的数字序列,其中N是序列的个数。序列是矩阵R.行,R.是响应的数量。应用后,每个序列与相应的输入序列具有相同的时间步长Sequencelength.选项每个小批独立。

对于具有一个观察的序列到序列回归任务,序列可以是矩阵。在这种情况下,YPred是一种反应矩阵。

功能回归

N——- - - - - -R.矩阵,N是观察人数和R.是响应的数量。

对于一个观察的序列到序列回归问题,序列可以是矩阵。在这种情况下,YPred是一种反应矩阵。

算法

如果图像数据包含年代,预测通过网络传播它们。如果网络具有Relu层,则这些图层忽略了s。但是,如果网络没有Relu层,那么预测将NAN返回预测。

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

备择方案

您可以使用培训的网络计算预测的分数和预测类分类

您还可以使用网络层计算激活激活

对于序列到标签和序列到序列分类网络(例如,LSTM网络),可以使用以下命令进行预测和更新网络状态classifyAndUpdateStatepredictAndUpdateState

参考文献

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

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

扩展功能

在R2016A介绍