主要内容

使用预测dlnetwork对象

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

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

负载dlnetwork对象

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

S =负载(“digitsCustom.mat”);Dlnet = s.dlnet;Classes = s.classes;

预测负荷数据

加载数字数据进行预测。

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

作出预测

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

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

对于每个小批量:

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

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

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

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

对小批数据进行循环,并使用预测函数。使用onehotdecode函数来确定类标签。存储预测的类标签。

numObservations = numel(imds.Files);YPred = strings(1,numObservations);预测= [];在小批上循环。hasdata(兆贝可)读取小批数据。dlX = next(mbq);使用预测函数进行预测。dlYPred =预测(dlnet,dlX);确定相应的类。predBatch = onehotdecode(dlYPred,classes,1);预测=[预测预批次];结束

想象一些预测。

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

小批量预处理功能

preprocessMiniBatch函数按照以下步骤对数据进行预处理:

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

  2. 规范化之间的像素值0而且1

函数X = preprocessMiniBatch(数据)从单元格和拼接中提取图像数据X = cat(4,data{:});将图像规范化。X = X/255;结束

另请参阅

||||

相关的话题