数据链路网络
对象此示例演示如何使用数据链路网络
对象,将数据拆分为小批量。
对于大型数据集,或在内存有限的硬件上进行预测时,通过将数据拆分为小批量来进行预测系列网络
或达格网络
对象时,预测
函数自动将输入数据拆分为小批量。对于数据链路网络
对象,则必须手动将数据拆分为小批量。
数据链路网络
对象装载经过训练的货物数据链路网络
对象和相应的类。
s=荷载(“digitsCustom.mat”);dlnet=s.dlnet;classes=s.classes;
加载用于预测的数字数据。
digitDatasetPath=fullfile(matlabroot,“工具箱”,“内特”,“nndemos”,...“数据集”,“DigitDataset”);imd = imageDatastore (digitDatasetPath,...“IncludeSubfolders”,对);
循环测试数据的小批量,并使用自定义预测循环进行预测。
使用minibatchqueue
处理和管理小批量图像。指定一个迷你批处理大小为128。设置镜像数据存储的读大小属性为mini-batch大小。
对于每个小批量:
使用自定义小批量预处理功能预处理小批量
(在本例末尾定义)将数据连接到一个批中并对图像进行规范化。
使用尺寸设置图像格式“SSCB”
(空间、空间、通道、批次)。默认情况下minibatchqueue
对象将数据转换为dlarray
具有基础类型的对象仅有一个的
.
如果GPU可用,则在GPU上进行预测。默认情况下minibatchqueue
对象将输出转换为gpuArray
如果有可用的GPU。使用GPU需要并行计算工具箱™和支持的GPU设备。万博1manbetx有关支持的设备的信息,请参见万博1manbetxGPU版万博1manbetx本支持(并行计算工具箱).
miniBatchSize=128;imds.ReadSize=miniBatchSize;mbq=minibatchqueue(imds,...“最小批量大小”,小批量,...“MiniBatchFcn”,@minibatch,...“迷你批处理格式”,“SSCB”);
循环处理小批量数据,并使用预测
函数。使用onehotdecode
函数确定类标签。存储预测的类标签。
numObservations=numel(imds.Files);YPred=strings(1,numObservations);预测=[];%在小批量上循环。而hasdata(mbq)%读取小批量数据。dlX=下一个(mbq);%使用predict函数进行预测。dlYPred=预测(dlnet,dlX);%确定相应的类别。predBatch = onehotdecode (dlYPred类1);[预测predBatch];终止
想象一些预测。
idx = randperm (numObservations 9);数字对于i=1:9子图(3,3,i)i=imread(imds.Files{idx(i)});label=predictions(idx(i));imshow(i)title(“标签:”+字符串(标签)终止
这个预处理小批量
函数使用以下步骤预处理数据:
从传入的单元格数组中提取数据并连接到数字数组中。在第四维上连接会为每个图像添加第三维,用作单通道维度。
标准化之间的像素值0
和1.
.
函数X = preprocessMiniBatch(数据)%从单元格中提取图像数据并连接X=cat(4,数据{:});%使图像正常化。X = X / 255;终止
dlarray
|数据链路网络
|预测
|minibatchqueue
|onehotdecode