主要内容

预测

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

描述

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

YPred=预测(洛桑国际管理发展学院预测对图像数据的响应洛桑国际管理发展学院使用经过培训的SeriesNetwork达格网络对象.为dlnetwork输入,看到预测

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

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

例子

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

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

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

例子

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

例子

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

提示

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

例子

全部折叠

加载示例数据。

[XTrain,YTrain]=数字列车4DRARAYDATA;

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)全连接层(10)softmaxLayer分类层];

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

选择= 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,如果可用。你也可以选择跑步预测在使用“ExecutionEnvironment”,“cpu”名称-值对的论点。

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

欧美(1:10,:)
ans =10 x1分类0 0 0 0 0 0 0 0
YPred (1:10,:)
ans =10 x10单一矩阵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.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.0007 0.0000 0.0072 0.0047 0.9981 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0018 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000 0.06 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 =10 x9单一矩阵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或者一个达格网络对象。您可以通过导入一个预先训练过的网络(例如,使用googlenet功能)或通过训练自己的网络使用trainNetwork

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

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

提示

使用augmentedImageDatastore用于对图像进行有效预处理,以进行深度学习,包括图像大小调整。

不要使用readFcn选择imageDatastore对于预处理或调整大小,这个选项通常非常慢。

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

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

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

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

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

data =阅读(ds)
data = 4×1 table Predictors __________________ {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double}
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是特征的数量。

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

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

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

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

对于具有多个输入的网络,可以指定多个数组X1、……XN,在那里N是网络输入数和输入数吗西对应网络输入net.InputNames(我)

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

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

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

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

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

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

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

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

在单个列中指定预测器。

特性数据

数字标量。

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

这个参数支持只有一个输入的网金宝app络。

数据类型:表格

名称-值参数

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

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

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

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

例子:“MiniBatchSize”,256年

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

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

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

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

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

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

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

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

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

墨西哥人的选项不支持所有层。金宝app有关受支持的层的列表,请参见金宝app金宝app支持层(GPU编码器).只有具有图像输入层都受支持金宝app。

你不能使用MATLAB编译器™使用时部署网络的步骤墨西哥人的选择。

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

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

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

  • “图形”—使用GPU。使用GPU需要并行计算工具箱和受支持的GPU设备。有关受支持设备的信息,请参阅金宝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”“平行”选项不支持包含递归神经网络(r金宝appnn)lstmLayerbilstmLayergruLayer对象。

例子:“ExecutionEnvironment”,“cpu”

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

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

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

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

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

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

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

例子:“SequenceLength”,“最短”

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

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

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

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

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

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

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

例子:“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为响应的数量。
Sequence-to-sequence回归

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

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

特征回归

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

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

算法

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

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

选择

您可以使用以下方法从经过训练的网络计算预测分数和预测类分类

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

对于序列到标签和序列到序列分类网络(例如,LSTM网络),可以使用进行预测和更新网络状态classifyAndUpdateState预测和更新房地产

参考文献

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

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

扩展能力

介绍了R2016a