主要内容

预测

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

自从R2019b

描述

一些层深度学习在训练和推理上的表现也不同(预测)。例如,在培训期间,辍学层随机输入元素设置为零,防止过度拟合,但在推理,辍学层不改变输入。

计算网络输出推理,使用预测函数。计算网络输出培训,使用向前函数。为预测SeriesNetworkDAGNetwork对象,看到预测

提示

为预测SeriesNetworkDAGNetwork对象,看到预测

例子

Y=预测(,X)返回网络输出Y在推理给出输入数据X和网络有一个输入和一个输出。

Y=预测(,X1,…, XM)返回网络输出Y在推理的输入X1,…, XM和网络输入和一个输出。

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

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

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

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

例子

全部折叠

这个例子展示了如何使用作出预测dlnetwork对象数据分割到mini-batches。

对于大型的数据集,或者当预测硬件有限的内存,将数据分拆为mini-batches作出预测。进行预测时SeriesNetworkDAGNetwork对象时,预测函数自动将输入数据分为mini-batches。为dlnetwork对象,您必须手动将数据分成mini-batches。

负载dlnetwork对象

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

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

负荷预测的数据

负荷预测的数字数据。

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

作出预测

循环的mini-batches测试数据并作出预测使用自定义预测循环。

使用minibatchqueue处理和管理mini-batches图像。指定一个mini-batch大小为128。设置读取图像数据存储的大小属性mini-batch大小。

为每个mini-batch:

  • 使用自定义mini-batch预处理功能preprocessMiniBatch(在这个例子中定义)将数据合并到一个批处理和图像正常化。

  • 格式的图像尺寸“SSCB”(空间、空间、通道、批)。默认情况下,minibatchqueue把数据转换为对象dlarray对象与基本类型

  • 对GPU如果一个可用作预测。默认情况下,minibatchqueue将输出转换为对象gpuArray如果一个GPU是可用的。使用GPU需要并行计算工具箱™和支持GPU设备。万博1manbetx支持设备的信息,请参阅万博1manbetxGPU计算的需求(并行计算工具箱)

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

循环的minibatches数据并作出预测使用预测函数。使用onehotdecode函数来确定类标签。存储预测类标签。

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

可视化的一些预测。

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. 标准化之间的像素值01

函数X = preprocessMiniBatch(数据)%从细胞中提取图像数据和连接X =猫(4、数据{:});%图像正常化。X = X / 255;结束

输入参数

全部折叠

这个论点可以代表这两种:

修剪深神经网络,你需要深度学习工具箱™模型量化图书馆万博1manbetx支持包。这种支持包万博1manbetx是一个免费的插件,你可以下载使用附加Explorer。另外,看到深度学习工具箱量化模型库

输入数据,指定为一个格式化的dlarray。更多信息dlarray格式,请参见fmt输入参数的dlarray

层提取输出,指定为字符串数组或单元阵列特征向量包含图层名称。

  • 如果layerNames(我)对应于一层和一个输出,然后layerNames(我)层的名称。

  • 如果layerNames(我)对应于一层具有多个输出layerNames(我)是图层名称后面的性格”/”,输出层的名称:“layerName / outputName”

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

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

  • 墨西哥人的——编译和执行一个墨西哥人的功能。此选项仅在使用GPU可用。输入数据必须存储或网络可学的参数gpuArray对象。使用GPU需要并行计算工具箱™和支持GPU设备。万博1manbetx支持设备的信息,请参阅万博1manbetxGPU计算的需求(并行计算工具箱)如果并行计算工具箱或合适的GPU不可用,那么软件返回一个错误。

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

默认的选项是“汽车”。如果“汽车”MATLAB是指定的,®将大量的兼容优化。如果你使用“汽车”选项,MATLAB不生成一个墨西哥人的功能。

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

墨西哥人的选项生成并执行一个墨西哥人函数基于网络和参数在函数调用中使用。你可以有几个墨西哥人函数与一个网络。结算网络变量也清除任何墨西哥人功能与网络有关。

墨西哥人的选项仅当你使用GPU。你必须有一个C / c++编译器安装和GPU编码器™界面深度学习支持包。万博1manbetx安装包使用MATLAB中万博1manbetx的扩展浏览器的支持。设置说明,请参阅墨西哥人设置(GPU编码器)。GPU编码器不是必需的。

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

  • 状态不支持输出参数。万博1manbetx

  • 只有精密的支持。万博1manbetx输入数据或网络可学的参数必须基本类型

  • 网络不连接到输入不支持输入层。万博1manbetx

  • 追踪dlarray不支持对象。万博1manbetx这意味着墨西哥人的选项不支持内部调用万博1manbetxdlfeval

  • 并不是所有层都受支持。万博1manbetx支持层的列表,请参阅万博1manbetx万博1manbetx支持层(GPU编码器)

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

量化网络的墨西哥人的选择需要CUDA®使英伟达®GPU计算能力6.1、6.3或更高版本。

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

输出参数

全部折叠

输出数据,返回一个格式化的dlarray。更多信息dlarray格式,请参见fmt输入参数的dlarray

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

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

  • ——层名称指定为一个字符串标量。

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

  • 价值——指定为一个状态参数值dlarray对象。

层状态包含信息计算层操作期间被保留用于后续向前传球的层。例如,LSTM层的细胞状态和隐藏状态,或在批处理运行统计数据归一化层。

对复发性层,例如LSTM层,HasStateInputs属性设置为1(真正的),状态表不包含条目的状态的层。

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

算法

全部折叠

再现性

提供最佳的性能,深度学习在MATLAB中使用GPU不能保证是确定的。根据您的网络体系结构,在一些情况下你可能会得到不同的结果在使用GPU训练两个相同的网络或有两个预测使用相同的网络和数据。

扩展功能

版本历史

介绍了R2019b

全部展开