预测

计算深学习推理网络输出

描述

一些深层次的学习培训层和推断(预测)期间表现不同。例如,在训练期间,辍学层随机设定输入元素为零,以帮助防止过度拟合,但推理过程中,辍学层不会改变输入。

为了计算网络输出,用于推断,使用预测函数。要计算用于训练的网络输出,请使用向前函数。对于预测SeriesNetworkDAGNetwork对象,看到预测

DLY=预测(dlnetDLX返回网络输出DLY推理过程中给定的输入数据DLX和网络dlnet具有单个输入和单个输出。

DLY=预测(dlnet、dlX1 dlXM……)返回网络输出DLY在推理过程中中号输入dlX1,…, dlXM和网络dlnet中号输入和单个输出。

[DLY1,...,dlYN] =预测(___返回ñ输出dlY1,...,dlYN在对网络进行推理时ñ使用任何以前的语法输出。

[DLY1,...,dlYK] =预测(___, '输出',layerNames返回输出dlY1,...,dlYK推断使用任何先前的语法的指定的层中。

[___)=预测(___还使用以前的任何语法返回更新后的网络状态。

小费

对于预测SeriesNetworkDAGNetwork对象,看到预测

例子

全部折叠

这个例子说明了如何使用做出预测dlnetwork通过拆分数据为微型批对象。

对于大型数据集,或者在内存有限的硬件预测时,通过拆分进行预测的数据为微型批次。如果是在预测SeriesNetworkDAGNetwork对象时,预测功能自动地将输入数据转换成微型批次。对于dlnetwork对象,你必须手动分割数据成小批次。

加载dlnetwork对象

加载一个训练有素dlnetwork对象和相应的类。

s =负载(“digitsCustom.mat”);dlnet = s.dlnet;类= s.classes;

预测用负荷数据

加载数字数据用于预测。

digitDatasetPath =完整文件(matlabroot,“工具箱”'NNET''nndemos'...'nndatasets'“DigitDataset”);imd = imageDatastore (digitDatasetPath,...“IncludeSubfolders”,真正);

作出预测

遍历测试数据,并使用自定义的预测环路进行预测的小批次。为了从数据存储读取的小批量数据,设置READSIZE属性为小批量大小。

对于每个小批量:

  • 将数据转换为dlarray有基础型单对象,并指定尺寸的标签'SSCB'(空间,空间信道,批次)。

  • 对于GPU预测,并转换为gpuArray对象。

  • 使用做出预测预测函数。

  • 通过查找最高分数确定类标签。

指定预测选项。指定一个小批大小为128,并在GPU上做出预测,如果一个可用。使用GPU需要Parallel Computing Toolbox™和支持CUDA®的NVIDIA®GPU,计算能力为3.0或更高。

miniBatchSize = 128;执行环境=“汽车”;

图像数据存储的读取大小属性设置为小批量大小。

洛桑国际管理发展学院。ReadSize = miniBatchSize;

通过对小批数据进行循环进行预测。

numObservations =元素个数(imds.Files);YPred =字符串(1、numObservations);i = 1;%遍历迷你批次。hasdata(IMDS)%读小批量的数据。数据=读(IMDS);X =猫(4,数据{:});对图像进行规格化。X =单(X)/ 255;%转换小批数据到dlarray。DLX = dlarray(X,'SSCB');在GPU上进行训练,然后将数据转换为gpuArray。如果(执行环境==“汽车”&& canUseGPU)||执行环境==“GPU”DLX = gpuArray(DLX);结束%使用预测功能进行预测。dlYPred =预测(dlnet,DLX);%确定对应的类。[~,idxTop] = max (extractdata (dlYPred), [], 1);idxMiniBatch =我:min ((i + miniBatchSize-1), numObservations);YPred (idxMiniBatch) =类(idxTop);i = i + miniBatchSize;结束

可视化的一些预测。

idx = randperm (numObservations 9);数字对于I = 1:9的副区(3,3,i)的I = imread(imds.Files {IDX(ⅰ)});标记= YPred(IDX(I));imshow(I)称号(“标签: ”+标签)结束

输入参数

全部折叠

网络的自定义训练循环,指定为dlnetwork对象。

输入数据,指定为格式化dlarray。有关详细信息dlarray格式见FMT输入参数的dlarray

层,以提取输出,指定为字符串数组或含有该层的名称字符向量的单元阵列。

  • 如果layerNames(我)对应一个具有单个输出的层,然后layerNames(我)是该层的名称。

  • 如果layerNames(我)对应于具有多个输出,则层layerNames(我)是层名后跟字符"/“与输出层的名称:“layerName / outputName”

输出参数

全部折叠

输出数据,返回作为格式化的dlarray。有关详细信息dlarray格式见FMT输入参数的dlarray

更新后的网络状态,返回表。

网络状态是一个有三列的表:

  • - 图层名称,指定为字符串标量。

  • 参数-参数名称,指定为字符串标量。

  • 价值-参数的值,指定为数值数组对象。

网络状态包含迭代之间由网络记住的信息。例如,LSTM和批处理规范化层的状态。

更新的状态dlnetwork使用属性。

扩展功能

介绍了在R2019b