dlnetwork.
目的此示例显示如何使用a进行预测dlnetwork.
通过将数据拆分为迷你批量来实现对象。
对于大数据集,或者在使用有限内存的硬件上预测时,通过将数据拆分为迷你批次来进行预测。与之预测时系列网络
或Dagnetwork.
对象时,预测
函数自动将输入数据分成迷你批次。为了dlnetwork.
对象,您必须手动将数据拆分为迷你批处理。
dlnetwork.
目的装训练dlnetwork.
对象和相应的类。
s = load(“digitscustom.mat”);dlnet = s.dlnet;classes = s.casses;
加载数字数据进行预测。
digitdatasetpath = fullfile(matlabroot,“工具箱”那'nnet'那'nndemos'那......'nndatasets'那'digitdataset');imd = imageDatastore (digitDatasetPath,......“IncludeSubfolders”,真的);
循环在测试数据的迷你批量上,并使用自定义预测循环进行预测。
用minibatchqueue
处理和管理小批映像。指定小批处理大小为128。将镜像数据存储的read size属性设置为mini-batch大小。
对于每个迷你批处理:
使用自定义迷你批处理预处理功能Preprocessminibatch.
(在该示例的末尾定义)以将数据连接到批处理中并归一化图像。
使用尺寸格式化图像'SSCB'
(空间,空间,频道,批量)。默认情况下,minibatchqueue
对象将数据转换为dlarray.
底层类型的对象单身的
。
如果有可用的话,请在GPU上进行预测。默认情况下,minibatchqueue
对象将输出转换为aGPUArray.
图形处理器是否可用。使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU通金宝app过发布支持(并行计算工具箱)。
minibatchsize = 128;imds.readsize = minibatchsize;MBQ = Minibatchqueue(IMDS,......“迷你atchsize”,小匹马,......“MiniBatchFcn”,@preprocessminibatch,......“minibatchformat”那“SSCB”);
循环在数据的小匹匹匹配项中,并使用中的预测预测
功能。使用onehotdecode.
函数以确定类标签。存储预测的类标签。
numobservations = numel(imds.files);ypred = strings(1,numobservations);预测= [];%循环在迷你批次。而Hasdata(MBQ)%读取迷你批次数据。DLX =下一个(MBQ);%使用预测功能进行预测。dlypred =预测(Dlnet,DLX);%确定相应的类。predBatch = onehotdecode (dlYPred类1);predictions = [predictions predBatch];结尾
可视化一些预测。
idx = randperm (numObservations 9);数字为了i = 1:9子图(3,3,i)i = imread(imds.files {idx(i)});标签=预测(IDX(i));imshow(i)标题(“标签: ”+字符串(标签)结尾
这Preprocessminibatch.
函数使用以下步骤预处理数据:
从传入单元格数组中提取数据并将数据连接到数字阵列中。在第四维上连接到每个图像的第三维度,用作单例通道维度。
归一化像素值之间的0.
和1
。
函数X = preprocessMiniBatch(数据)%从单元格和连接中提取图像数据X = CAT(4,数据{:});%标准化图像。X = X / 255;结尾
dlarray.
|dlnetwork.
|minibatchqueue
|onehotdecode.
|预测