主要内容

使用数据链路网络对象

此示例演示如何使用数据链路网络对象,将数据拆分为小批量。

对于大型数据集,或在内存有限的硬件上进行预测时,通过将数据拆分为小批量来进行预测系列网络达格网络对象时,预测函数自动将输入数据拆分为小批量。对于数据链路网络对象,则必须手动将数据拆分为小批量。

负载数据链路网络对象

装载经过训练的货物数据链路网络对象和相应的类。

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(“标签:”+字符串(标签)终止

Mini-Batch预处理功能

这个预处理小批量函数使用以下步骤预处理数据:

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

  2. 标准化之间的像素值01..

函数X = preprocessMiniBatch(数据)%从单元格中提取图像数据并连接X=cat(4,数据{:});%使图像正常化。X = X / 255;终止

另见

||||

相关的话题