主要内容

预测

计算推理的深度学习网络输出

描述

在训练和推理(预测)期间,一些深入学习的层的行为不同。例如,在训练期间,辍学层随机将输入元素随机设置为零,以帮助防止过度拟合,但在推理期间,丢弃层不会改变输入。

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

小费

为了预测系列网络Dagnetwork.对象,看到预测

例子

d=预测(DLNET.DLX.返回网络输出d在推理期间给定输入数据DLX.和网络DLNET.使用单个输入和单个输出。

d=预测(DLNET.、dlX1 dlXM……)返回网络输出d在推论期间给出了m输入DLX1,...,DLXM和网络DLNET.m输入和单个输出。

[dly1,...,dlyn] =预测(___返回N输出dly1.,......,dlyn.在推论的网络中N使用以前的任何语法输出。

[dly1,...,dlyk] =预测(___,'输出',懒人返回输出dly1.,......,达格尔克在推理指定图层期间使用以前的任何语法。

[___) =预测(___,'加速',加速还指定了在推理期间使用的性能优化,以及前面语法中的输入参数。

[___状态) =预测(___还返回更新的网络状态。

例子

全部收缩

此示例显示如何使用a进行预测dlnetwork.通过将数据拆分为迷你批量来实现对象。

对于大数据集,或者在使用有限内存的硬件上预测时,通过将数据拆分为迷你批次来进行预测。与之预测时系列网络或者Dagnetwork.对象时,预测函数自动将输入数据分成迷你批次。为了dlnetwork.对象,您必须手动将数据拆分为迷你批处理。

加载dlnetwork.目的

装训练dlnetwork.对象和相应的类。

s = load(“digitscustom.mat”);dlnet = s.dlnet;classes = s.casses;

加载预测数据

加载数字数据进行预测。

digitdatasetpath = fullfile(matlabroot,'工具箱''nnet''nndemos'......'nndatasets''digitdataset');imds = imageageataStore(DigitDatasetPath,......'insertumbfolders',真的);

作出预测

循环在测试数据的迷你批量上,并使用自定义预测循环进行预测。

小公子处理和管理迷你批次的图像。指定mini批量大小为128.将图像数据存储的读取大小属性设置为迷你批处理大小。

对于每个迷你批处理:

  • 使用自定义迷你批处理预处理功能Preprocessminibatch.(在该示例的末尾定义)以将数据连接到批处理中并归一化图像。

  • 使用尺寸格式化图像'SSCB'(空间,空间,频道,批量)。默认情况下,小公子对象将数据转换为dlarray.底层类型的对象单身的

  • 如果有可用的话,请在GPU上进行预测。默认情况下,小公子对象将输出转换为aGPUArray.图形处理器是否可用。使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU通金宝app过发布支持(并行计算工具箱)

minibatchsize = 128;imds.readsize = minibatchsize;MBQ = Minibatchqueue(IMDS,......“迷你atchsize”,小匹马,......“minibatchfcn”,@preprocessminibatch,......“minibatchformat”“SSCB”);

循环在数据的小匹匹匹配项中,并使用中的预测预测函数。使用onehotdecode.函数以确定类标签。存储预测的类标签。

numobservations = numel(imds.files);ypred = strings(1,numobservations);预测= [];%循环在迷你批次。尽管Hasdata(MBQ)%读取迷你批次数据。DLX =下一个(MBQ);%使用预测功能进行预测。dlypred =预测(Dlnet,DLX);%确定相应的类。predbatch = onehotdecode(dlypred,classes,1);预测= [预测捕获];结尾

可视化一些预测。

idx = randperm (numObservations 9);数字为了i = 1:9子图(3,3,i)i = imread(imds.files {idx(i)});标签=预测(IDX(i));imshow(i)标题(“标签: ”+字符串(标签)结尾

Mini-Batch预处理功能

Preprocessminibatch.函数使用以下步骤预处理数据:

  1. 从传入单元格数组中提取数据并将数据连接到数字阵列中。在第四维上连接到每个图像的第三维度,用作单例通道维度。

  2. 归一化像素值之间的0.1

功能x = preprocessminibatch(数据)%从单元格和连接中提取图像数据X = CAT(4,数据{:});%标准化图像。X = X / 255;结尾

输入参数

全部收缩

用于自定义培训循环的网络,指定为dlnetwork.目的。

输入数据,指定为格式化数据dlarray.。有关的更多信息dlarray.格式化,看FMT.输入论点dlarray.

图层以从指定为字符串数组或包含图层名称的字符向量的小区数组中提取输出。

  • 如果LayerNames(i)对应于单个输出的层,然后LayerNames(i)是图层的名称。

  • 如果LayerNames(i)对应于具有多个输出的层,然后LayerNames(i)是图层名称后跟角色“/“以及图层输出的名称:'layername / outputname'

性能优化,指定为以下之一:

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

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

默认选项是'汽车'

使用'汽车'加速选项可以提供性能优势,但以增加初始运行时为代价。具有兼容参数的后续调用速度更快。当您计划使用具有相同大小和形状的不同输入数据多次调用函数时,请使用性能优化。

输出参数

全部收缩

输出数据,作为格式化返回dlarray.。有关的更多信息dlarray.格式化,看FMT.输入论点dlarray.

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

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

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

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

  • 价值- 参数值,指定为adlarray.目的。

网络状态包含在迭代之间的网络记住的信息。例如,LSTM和批量归一化层的状态。

更新一个状态dlnetwork.使用状态财产。

兼容性考虑因素

展开全部

R2021A中的行为发生了变化

扩展能力

在R2019B中介绍