主要内容

进行预测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。将图像数据存储的读取大小属性设置为小批处理大小。

对于每个小批次:

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

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

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

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);使用predict函数进行预测。dlYPred = predict(dlnet,dlX);确定相应的类。predBatch = onehotdecode(dlYPred,classes,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)标题(”的标签:“+字符串(标签)结束

小批量预处理功能

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

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

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

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

另请参阅

||||

相关的话题

Baidu
map