进行预测dlnetwork
对象
这个例子展示了如何使用dlnetwork
对象,将数据分割为小批。
对于大型数据集,或者在内存有限的硬件上进行预测时,可以通过将数据分成小批进行预测。做预测时SeriesNetwork
或DAGNetwork
对象时,预测
函数自动地将输入数据分成小批。为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
函数使用以下步骤对数据进行预处理:
从传入的单元格数组中提取数据并连接到数字数组中。在第四个维度上的连接为每个图像添加了第三个维度,用作单通道维度。
之间的像素值归一化
0
而且1
.
函数X = preprocessMiniBatch(数据)从单元格中提取图像数据并连接X = cat(4,data{:});规范化图像。X = X/255;结束
另请参阅
dlarray
|dlnetwork
|预测
|minibatchqueue
|onehotdecode