主要内容

预测

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

描述

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

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

提示

为预测SeriesNetwork而且DAGNetwork对象,看到预测

例子

Y=预测(X返回网络输出。Y在推理过程中给定输入数据X和网络只有一个输入和一个输出。

Y=预测(, X1,…,XM)返回网络输出。Y在推理过程中输入X1,…,XM和网络输入和单一输出。

(日元…,YN) =预测(___返回N输出日元、……YN在网络的推断过程中N使用前面任何语法的输出。

(日元…,YK] = predict(___“输出”,layerNames返回输出日元、……在使用任何前面的语法对指定层进行推理时。

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

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

例子

全部折叠

这个例子展示了如何使用dlnetwork对象,将数据分割为小批。

对于大型数据集,或者在内存有限的硬件上进行预测时,可以通过将数据分成小批进行预测。做预测时SeriesNetworkDAGNetwork对象时,预测函数自动地将输入数据分成小批。为dlnetwork对象时,必须手动将数据分割为小批量。

负载dlnetwork对象

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

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

预测负荷数据

加载数字数据进行预测。

digitDatasetPath = fullfile (matlabroot,“工具箱”“nnet”“nndemos”...“nndatasets”“DigitDataset”);imd = imageDatastore (digitDatasetPath,...“IncludeSubfolders”,真正的);

作出预测

遍历测试数据的小批,并使用自定义预测循环进行预测。

使用minibatchqueue处理和管理小批量的图像。指定小批处理大小为128。将图像数据存储的读取大小属性设置为小批处理大小。

为每个mini-batch:

  • 使用自定义的小批量预处理功能preprocessMiniBatch(在本例末尾定义)将数据连接到一个批处理中并规范化图像。

  • 用尺寸格式化图像“SSCB”(空间,空间,渠道,批处理)。默认情况下,minibatchqueue对象将数据转换为dlarray具有基础类型的对象

  • 在可用的GPU上进行预测。默认情况下,minibatchqueue对象将输出转换为gpuArray如果有可用的GPU。使用GPU需要并行计算工具箱™和支持的GPU设备。有关支持的设备的信息,请参见GPU计算的需求(并行计算工具箱)

miniBatchSize = 128;洛桑国际管理发展学院。ReadSize = miniBatchSize;兆贝可= minibatchqueue (imd,...“MiniBatchSize”miniBatchSize,...“MiniBatchFcn”@preprocessMiniBatch,...“MiniBatchFormat”“SSCB”);

遍历小批数据并使用预测函数。使用onehotdecode函数确定类标签。存储预测的类标签。

numObservations =元素个数(imds.Files);YPred =字符串(1、numObservations);预测= [];在小批量上循环。hasdata(兆贝可)读取小批数据。dlX =下一个(兆贝可);使用predict函数进行预测。dlYPred =预测(dlnet dlX);确定相应的类。predBatch = onehotdecode (dlYPred类1);forecasts = [forecasts predBatch];结束

想象一些预测。

idx = randperm (numObservations 9);数字i = 1:9 subplot(3,3,i) i = imread(imds.Files{idx(i)});标签=预测(idx (i));imshow (I)标题(”的标签:“+字符串(标签)结束

Mini-Batch预处理功能

preprocessMiniBatch函数使用以下步骤对数据进行预处理:

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

  2. 之间的像素值归一化0而且1

函数X = preprocessMiniBatch(数据)从单元格中提取图像数据并连接X =猫(4、数据{:});规范化图像。X = X / 255;结束

输入参数

全部折叠

这个参数可以表示以下任何一种:

要修剪一个深度神经网络,你需要深度学习工具箱™模型量化库支持包。此支持包是一个免费的附加组件,您可以使用附加组件资源管理器下载。另外,看到深度学习工具箱量化模型库

输入数据,指定为格式化的dlarray.有关dlarray格式,请参见fmt输入参数的dlarray

要从中提取输出的层,指定为字符串数组或包含层名的字符向量单元格数组。

  • 如果layerNames(我)那么,对应于具有单个输出的层layerNames(我)是层的名称。

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

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

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

  • 墨西哥人的—编译并执行MEX函数。该选项仅在使用GPU时可用。输入数据或网络可学习参数必须存储为gpuArray对象。使用GPU需要并行计算工具箱™和支持的GPU设备。有关支持的设备的信息,请参见GPU计算的需求(并行计算工具箱)如果并行计算工具箱或合适的GPU不可用,则软件返回一个错误。

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

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

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

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

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

墨西哥人的选项有以下限制:

  • 状态不支持输出参数。

  • 只有精密的支持。输入数据或网络可学习参数必须具有基础类型

  • 不支持输入未连接到输入层的网络。

  • 追踪dlarray不支持对象。这意味着墨西哥人的的调用内部不支持dlfeval

  • 并非所有层都受支持。有关受支持层的列表,请参见支持层(GPU编码器)

  • 你不能使用MATLAB编译器™来部署您的网络墨西哥人的选择。

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

输出参数

全部折叠

输出数据,返回为格式化的dlarray.有关dlarray格式,请参见fmt输入参数的dlarray

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

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

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

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

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

层状态包含在层操作期间计算的信息,这些信息将被保留,以便在层的后续转发中使用。例如,LSTM层的单元状态和隐藏状态,或批处理规范化层中的运行统计信息。

对于循环层,如LSTM层,使用HasStateInputs属性设置为1(true),则状态表不包含该层的状态项。

更新的状态dlnetwork使用状态财产。

扩展功能

版本历史

介绍了R2019b

全部展开

Baidu
map