主要内容

预测

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

描述

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

YPred=预测(洛桑国际管理发展学院预测对图像数据的响应洛桑国际管理发展学院使用训练SeriesNetworkDAGNetwork对象.为dlnetwork输入,看到预测

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

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

例子

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

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

[YPred1,…,YPred米] = predict(___预测的答复使用前面任何语法的多输出网络的输出。输出YPredj对应于网络输出net.OutputNames (j).要为分类输出层返回分类输出,请设置'ReturnCategorical'选项真正的

例子

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

例子

___=预测(___名称,值预测由一个或多个名称 - 值对参数中指定的其他选项的回应。

提示

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

例子

全部收缩

加载示例数据。

[XTrain, YTrain] = digitTrain4DArrayData;

digitTrain4DArrayData将数字训练集加载为4-D阵列数据。XTrain是28由-28-通过-1-通过-5000阵列,其中图28是高度和图28是图像的宽度。图1是信道的数量和5000是的手写体数字合成的图像的数量。YTrain是包含用于每个观测标签一个分类矢量。

构建卷积神经网络架构。

层= [...imageInputLayer([28 28 1])卷积2dlayer (5,20) reluLayer maxPooling2dLayer(2, 20)“步”,2) fulllyconnectedlayer (10) softmaxLayer classificationLayer;

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

选择= trainingOptions (“个”);

培训网络。

rng (“默认”) net = trainNetwork(XTrain,YTrain,layers,options);
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 |就是| | 2.3195 | 0.0100 10.16%||2 | 50 | 00:00:04 | 50.78% | 1.7102 | 0.0100 | | 3 | 100 | 00:00:09 | 63.28% | 1.1632 | 0.0100 | | 4 | 150 | 00:00:13 | 60.16% | 1.0859 | 0.0100 | | 6 | 200 | 00:00:16 | 68.75% | 0.8996 | 0.0100 | | 7 | 250 | 00:00:19 | 76.56% | 0.7920 | 0.0100 | | 8 | 300 | 00:00:22 | 73.44% | 0.8411 | 0.0100 | | 9 | 350 | 00:00:27 | 81.25% | 0.5508 | 0.0100 | | 11 | 400 | 00:00:30 | 90.62% | 0.4744 | 0.0100 | | 12 | 450 | 00:00:34 | 92.19% | 0.3614 | 0.0100 | | 13 | 500 | 00:00:38 | 94.53% | 0.3160 | 0.0100 | | 15 | 550 | 00:00:43 | 96.09% | 0.2544 | 0.0100 | | 16 | 600 | 00:00:46 | 92.19% | 0.2765 | 0.0100 | | 17 | 650 | 00:00:49 | 95.31% | 0.2460 | 0.0100 | | 18 | 700 | 00:00:54 | 99.22% | 0.1418 | 0.0100 | | 20 | 750 | 00:00:58 | 98.44% | 0.1000 | 0.0100 | | 21 | 800 | 00:01:03 | 98.44% | 0.1449 | 0.0100 | | 22 | 850 | 00:01:07 | 98.44% | 0.0989 | 0.0100 | | 24 | 900 | 00:01:10 | 96.88% | 0.1315 | 0.0100 | | 25 | 950 | 00:01:15 | 100.00% | 0.0859 | 0.0100 | | 26 | 1000 | 00:01:19 | 100.00% | 0.0701 | 0.0100 | | 27 | 1050 | 00:01:27 | 100.00% | 0.0759 | 0.0100 | | 29 | 1100 | 00:01:33 | 99.22% | 0.0663 | 0.0100 | | 30 | 1150 | 00:01:39 | 98.44% | 0.0776 | 0.0100 | | 30 | 1170 | 00:01:40 | 99.22% | 0.0732 | 0.0100 | |========================================================================================| Training finished: Max epochs completed.

运行测试集训练网络和预测分数。

[XTest,欧美]= digitTest4DArrayData;YPred =预测(净,XTEST);

预测默认情况下,采用的是启用CUDA®GPU计算能力3.0(如果可用)。您也可以选择运行预测使用在CPU上“ExecutionEnvironment”、“cpu的名称-值对的论点。

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

YTest(1:10,:)
ans =.10 x1分类0 0 0 0 0 0 0 0
YPred (1:10,:)
ans =.10×10矩阵单0.9978 0.0001 0.0008 0.0002 0.0003 0.0000 0.0004 0.0000 0.0002 0.0003 0.8881 0.0000 0.0474 0.0001 0.0000 0.0002 0.0029 0.0001 0.0014 0.0598 0.9998 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.9814 0.0000 0.0000 0.0000 0.0000 0.0000 0.0046 0.0000 0.0011 0.0129 0.9748 0.0000 0.0132 0.0003 0.0000 0.0000 0.0002 0.0004 0.0111 0.00010.9873 0.0000 0.0001 0.0000 0.0000 0.0000 0.0007 0.0000 0.0072 0.0047 0.9981 0.0000 0.0000 0.0000 0.0000 0.0000 0.0018 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.9265 0.0000 0.0046 0.0000 0.0006 0.0009 0.0001 0.0000 0.0018 0.0655 0.9327 0.0000 0.0139 0.0012 0.0001 0.0001 0.0378 0.0000 0.0111 0.0031

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

负载pretrained网络。JapaneseVowelsNet是在[1]和[2]中描述的日语元音数据集上训练的预训练LSTM网络。对按序列长度排序的序列进行训练,小批量大小为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 =预测(净,XTEST);

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

YPred (1:10,:)
ans =.10x9单个矩阵0.9918 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.0006 0.0059 0.9868 0.0000 0.0000 0.0000 0.06 0.0010 0.0001 0.0010 0.0105 0.9924 0.0000 0.0000 0.0000 0.0006 0.0010 0.0006 0.0054 0.9896 0.0000 0.0000 0.0000 0.06 0.0009 0.0001 0.0007 0.0080 0.9965 0.0000 0.0000 0.0000 0.0000 0.07 0.0009 0.0000 0.0003 0.0016 0.9888 0.0000 0.0000 0.0000 0.0000 0.00060.0010 0.0001 0.0008 0.0087 0.9886 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.0008 0.0089 0.9982 0.0000 0.0000 0.0000 0.0006 0.0007 0.0000 0.0001 0.0004 0.9883 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.0008 0.0093 0.9959 0.0000 0.0000 0.0000 0.0007 0.0011 0.0000 0.0004 0.0019

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

欧美(1:10)
ans =.10 x1分类1 1 1 1 1 1 1

输入参数

全部收缩

训练有素的网络,指定为SeriesNetwork或者DAGNetwork对象。您可以通过导入一个预先训练过的网络(例如,使用googlenet功能)或使用训练自己的网络trainNetwork

图像数据存储区,指定为ImageDatastore对象。

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

提示

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

请勿使用readFcn的选择imageDatastore用于预处理或调整,因为这选项通常是显著慢。

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

网络体系结构 数据存储输出 示例输出
单输入

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

表元素必须是标量、行向量或包含数字数组的1 × 1单元格数组。

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

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

单元阵列具有至少numInputs列,numInputs是网络输入的数目。

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

输入的顺序由InputNames网络的特性。

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

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

数据 预测因素的格式
二维图像

h——- - - - - -w——- - - - - -c数字数组,hw,c是图像的通道的高度,宽度和数量,分别。

三维图像

h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,hwd,c分别为图像的高度、宽度、深度和通道数量。

向量序列

c——- - - - - -年代矩阵,c数列的特征数是和吗年代为序列长度。

一维图像序列

h——- - - - - -c——- - - - - -年代数组,hc分别对应于所述图像的通道的高度和数目,以及年代为序列长度。

mini-batch中的每个序列必须具有相同的序列长度。

二维图像序列

h——- - - - - -w——- - - - - -c——- - - - - -年代数组,hw,c对应于高度,宽度,和图像,分别的通道数,和年代为序列长度。

mini-batch中的每个序列必须具有相同的序列长度。

三维图像序列

h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代数组,hwd,c分别对应图像的高度、宽度、深度和通道数量,和年代为序列长度。

mini-batch中的每个序列必须具有相同的序列长度。

特性

c列向量,其中c是特征的数量。

有关更多信息,请参见用于深度学习的数据存储

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

输入 描述
2-d的图像 一个h——- - - - - -w——- - - - - -c——- - - - - -N数字数组,hw,c图像的高度、宽度和通道数量分别是和吗N为图像的个数。
三维图像 一个h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数字数组,hwd,c图像的高度、宽度、深度和通道数量分别是和吗N为图像的个数。
特性 一个N——- - - - - -numFeatures数字数组,N观察的次数是多少numFeatures是输入数据的特征的数量。

如果数组包含为NaN,然后通过网络传播。

对于有多个输入网络,您可以指定多个阵列X1,...,XN,在那里N是的网络输入和输入数西对应于网络输入net.InputNames(ⅰ)

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

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

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

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

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

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

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

  • 指定为3d数字数组的图像

指定单个列预测。

特征数据

数字标。

在第一个中指定预测器numFeatures表的列,其中numFeatures是输入数据的特征的数量。

这种说法仅支持对单个输入网络金宝app。

数据类型:桌子

名称-值参数

例子:“MiniBatchSize”,256年指定mini-batch大小为256。

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

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

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

例子:“MiniBatchSize”,256年

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

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

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

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

默认选项是“汽车”.如果“汽车”MATLAB是指定的,®将应用一系列兼容优化。如果使用“汽车”选项,MATLAB永远不会生成MEX函数。

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

'MEX'选项根据函数调用中使用的网络和参数生成并执行一个MEX函数。您可以同时拥有多个与单个网络相关联的MEX函数。清除网络变量还将清除与该网络关联的任何MEX函数。

'MEX'选项仅在使用GPU时可用。MEX加速通过name-value金宝app选项支持单个GPU执行“ExecutionEvironment”、“gpu的只有。

要使用'MEX'选项,你必须安装一个C/ c++编译器和GPU编码器™接口的深度学习库支持包。金宝app在MATLAB中使用Ad金宝appd-On Explorer安装支持包。有关安装说明,请参见MEX设置(GPU编码器).不需要GPU编码器。

'MEX'选项不支持所有层。金宝app有关受支持的层的列表,请参见金宝app金宝app支持层(GPU编码器).只有具有imageInputLayer都受支持金宝app。

你不能使用MATLAB编译器™在使用时部署网络'MEX'选择。

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

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

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

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

  • “cpu”—使用CPU。

  • “multi-gpu”-在一台机器上使用多个gpu,基于默认集群配置文件使用本地并行池。如果当前没有并行池,软件会启动一个并行池,池的大小等于可用gpu的数量。

  • '平行线'-根据默认集群配置文件使用本地或远程并行池。如果当前没有并行池,软件将使用默认的集群配置文件启动一个并行池。如果池可以访问GPU,那么只有具有唯一GPU的工作者才能执行计算。如果池没有gpu,则在所有可用的CPU worker上进行计算。

有关何时使用不同执行环境的更多信息,请参见在gpu和云上并行扩展深度学习

“图形”“multi-gpu”,'平行线'选项需要并行计算工具箱。要使用GPU进行深度学习,您还必须有支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱)如果您选择了这些选项之一,但并行计算工具箱或合适的GPU不可用,则软件返回错误。

“multi-gpu”'平行线'选择不支持递归神经网络(RNN金宝apps)含lstmLayerbilstmLayer,或gruLayer对象。

例子:“ExecutionEnvironment”、“cpu的

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

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

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

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

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

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

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

例子:“SequenceLength”、“最短的

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

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

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

因为LSTM层处理序列数据的时间一步一次,当层OutputMode属性是“最后一次”在最后时间步长的任何填充数据可以在层输出产生负面影响。到左侧垫或截短序列数据,设定“SequencePaddingDirection”选项“左”

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

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

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

例子:'SequencePaddingValue', - 1

输出参数

全部收缩

预测分数或响应,返回作为基质,4- d数字数组,或矩阵的单元阵列。格式YPred这取决于问题的类型。

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

任务 格式
图像分类 N——- - - - - -K矩阵,N是观察的次数,和K是类数
Sequence-to-label分类
功能分类
Sequence-to-sequence分类

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

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

任务 格式
二维图像回归
  • N——- - - - - -R矩阵,N图像的数量是和吗R为响应的数量。

  • h——- - - - - -w——- - - - - -c——- - - - - -N数字数组,hw,c图像的高度、宽度和通道数量分别是和吗N为图像的个数。

三维图像回归
  • N——- - - - - -R矩阵,N图像的数量是和吗R为响应的数量。

  • h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数字数组,hwd,c图像的高度、宽度、深度和通道数量分别是和吗N为图像的个数。

Sequence-to-one回归 N——- - - - - -R矩阵,N序列的个数是和吗R为响应的数量。
序列到序列回归

N-by-1数字序列单元格数组,其中N为序列的个数。的序列与基质R行,R为响应的数量。每个序列在应用后与相应的输入序列具有相同的时间步长SequenceLength选择每个小批独立。

对于一个观测序列对序列回归任务,序列可以是一个矩阵。在这种情况下,YPred是响应矩阵。

功能回归

N——- - - - - -R矩阵,N观察的次数是多少R为响应的数量。

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

算法

如果图像数据包含为NaN年代,预测通过网络传播它们。如果网络有ReLU层,这些层会忽略为NaN但是,如果网络没有ReLU层,则预测将nan作为预测返回。

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

备择方案

您可以通过计算从训练的网络预测的分数和预测班分类

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

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

参考文献

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

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

扩展功能

介绍了R2016a