文档

开发自定义Mini-Batch数据存储

一个mini-batch数据存储是一个数据存储的实现支持批量读取数据。万博1manbetx您可以使用一个mini-batch数据存储的培训、验证、测试和预测数据集深学习使用神经网络工具箱™的应用程序。

您可以使用一个内置mini-batch数据存储执行特定的图像预处理操作当阅读批次的数据。例如,一个augmentedImageDatastore预处理mini-batches通过应用的随机组合调整,旋转,反射,剪切,翻译转换。内置mini-batch的完整列表和他们的典型的应用程序中,数据存储先进的图像预处理。如果你不想读图片批量,然后您可以使用一个ImageDatastore来存储你的训练、验证、测试和预测图像。

完全的灵活性预处理图像,构建自己的mini-batch数据存储使用这里描述的框架。你可以选择添加支持功能,如移动训练期间,调度并万博1manbetx行和multi-GPU培训,和背景。

概述

使用自定义数据存储构建您的自定义数据存储接口类和对象。然后,使用自定义数据存储将数据引入MATLAB®

定制mini-batch数据存储的设计涉及到继承的数据存储MiniBatchable类,并实现所需的属性和方法。您可以选择继承额外的类的任意组合,以满足您的处理需求。

处理需求

Mini-batch培训数据存储、验证、测试和预测数据集在神经网络工具箱

数据存储MiniBatchable

看到实现MiniBatchable数据存储

培训期间Mini-batch数据存储支持洗牌万博1manbetx

数据存储,MiniBatchable,Shuffleable

看到添加对洗万博1manbetx牌的支持

Mini-batch数据存储支持并行和multi-G万博1manbetxPU培训(需要并行计算工具箱™)

数据存储,MiniBatchable,PartitionableByIndex

看到添加支持万博1manbetx并行和Multi-GPU培训

Mini-batch数据存储支持背景调度(预取)在训万博1manbetx练、预测、分类、和验证(需要并行计算工具箱)

数据存储,MiniBatchable,BackgroundDispatchable

看到支持后台万博1manbetx调度

定义一个自定义mini-batch数据存储的一个例子,看到vdsrImagePatchDatastore.m万博1manbetx支持文件单一图像超分辨率使用深度学习(图像处理工具箱)。这个mini-batch数据存储创建批upsampled低分辨率补丁和相应的剩余补丁,培训期间支持洗牌。万博1manbetx

实现MiniBatchable数据存储

实现一个自定义mini-batch数据存储MyDatastore,创建一个脚本MyDatastore.m。该脚本必须在MATLAB路径和应包含的代码继承自适当的类,并定义了所需的方法。的代码创建一个mini-batch数据存储的培训、验证、测试、和预测数据集在神经网络工具箱必须:

除了这些步骤,您可以定义其他属性或方法,你需要处理和分析你的数据。

请注意

如果你是网络和训练trainingOptions指定:

这个例子展示了如何创建一个自定义mini-batch数据存储称为一个相关的图像数据存储,使两图像数据存储同步。每个图像在一个数据存储是搭配了一个特定的图像数据存储。保存一个文件中的脚本调用associatedImageDatastore.m

步骤 实现

  1. 定义你的课开始。从基类继承数据存储MiniBatchable类。

  2. 定义属性。

    • 重新定义MiniBatchSizeNumObservations属性。你可以选择可以附加的财产属性分配给属性。有关更多信息,请参见属性的属性(MATLAB)。

    • 您还可以定义属性定制mini-batch独有的数据存储。

  3. 定义方法。

    • 实现自定义mini-batch数据存储的构造函数。

    • 实现hasdata方法。

    • 实现方法,它必须返回数据表。

    • 实现重置方法。

    • 实现进步方法。

    • 您还可以定义定制mini-batch独有的数据存储方法。

  4. 结束classdef部分。

classdefassociatedImageDatastore < matlab.io。数据存储和matlab.io.datastore.MiniBatchable属性MiniBatchSize结束属性NumObservations (SetAccess =保护)结束属性(访问=私人)从数据存储%这个属性是遗传的CurrentFileIndex%两ImageDatastores这些自定义属性存储的副本InputImds OutputImds结束方法函数ds = associatedImageDatastore (inputImds outputImds miniBatchSize)%建立一个associatedImageDatastore对象ds。InputImds = (InputImds)复印件;ds。OutputImds = (OutputImds)复印件;ds.InputImds。ReadSize = miniBatchSize;ds.OutputImds。ReadSize = miniBatchSize;ds。NumObservations =长度(inputImds.Files); ds.MiniBatchSize = miniBatchSize; ds.CurrentFileIndex = 1;结束函数tf = hasdata (ds)%返回true,如果更多的数据是可用的tf = hasdata (ds.InputImds);结束函数(数据、信息)=阅读(ds)%读取一批数据inputImageData =阅读(ds.InputImds);outputImageData =阅读(ds.OutputImds);data =表(inputImageData outputImageData);信息。batchSize =大小(数据,1);ds。CurrentFileIndex = ds。CurrentFileIndex+ info.batchSize; info.currentFileIndex = ds.CurrentFileIndex;结束函数重置(ds)%开始重置数据重置(ds.InputImds);重置(ds.OutputImds);ds。CurrentFileIndex = 1;结束结束方法(隐藏= true)函数压裂=进步(ds)%的比例确定数据读取数据存储压裂= (ds.CurrentFileIndex-1) / ds.NumObservations;结束结束结束%结束类定义

添加对洗万博1manbetx牌的支持

要添加对洗牌的万博1manbetx支持,首先按照说明实现MiniBatchable数据存储然后更新您的实现代码MyDatastore.m:

这个示例代码添加洗牌支持万博1manbetxassociatedImageDatastore类。垂直椭圆表明你应该复制代码的地方associatedImageDatastore实现。

步骤 实现

  1. 更新也继承的类定义Shuffleable类。

  2. 添加的定义洗牌对现有方法部分。

classdefassociatedImageDatastore < matlab.io。数据存储和matlab.io.datastore.MiniBatchable&matlab.io.datastore.Shuffleable%之前定义的属性方法%之前定义的方法函数dsnew = shuffle (ds) dsnew = (ds)复印件;shuffledIndexOrder = randperm (ds.NumObservations);dsnew.InputImds。文件= dsnew.InputImds.Files (shuffledIndexOrder);dsnew.OutputImds。文件= dsnew.OutputImds.Files (shuffledIndexOrder);结束结束结束

添加支持万博1manbetx并行和Multi-GPU培训

添加支持并行处万博1manbetx理与并行计算工具箱,首先遵循的指令实现MiniBatchable数据存储然后更新您的实现代码MyDatastore.m:

这个示例代码添加了支持并行处理万博1manbetxassociatedImageDatastore类。垂直椭圆表明你应该复制代码的地方associatedImageDatastore实现。

步骤 实现

  1. 更新也继承的类定义PartitionableByIndex类。

  2. 添加的定义partitionByIndex对现有方法部分。

classdefassociatedImageDatastore < matlab.io。数据存储和matlab.io.datastore.MiniBatchable&matlab.io.datastore.PartitionableByIndex%之前定义的属性方法%之前定义的方法函数dsnew = partitionByIndex (ds,指数)dsnew = (ds)复印件;dsnew.InputImds。文件= dsnew.InputImds.Files(指标);dsnew.OutputImds。文件= dsnew.OutputImds.Files(指标);结束结束结束

支持后台万博1manbetx调度

添加支持背景调万博1manbetx度(预取)在训练,预测,分类,和验证,首先遵循的指令实现MiniBatchable数据存储然后更新您的实现代码MyDatastore.m:

对于一个示例实现,遵循这些步骤。这个示例代码添加支持预取万博1manbetxassociatedImageDatastore类。垂直椭圆表明你应该复制代码的地方associatedImageDatastore实现。

步骤 实现

  1. 更新也继承的类定义BackgroundDispatchable类。

  2. 添加的定义readByIndex对现有方法部分。

classdefassociatedImageDatastore < matlab.io。数据存储和matlab.io.datastore.MiniBatchable&matlab.io.datastore.BackgroundDispatchable%之前定义的属性方法%之前定义的方法函数(数据、信息)= readByIndex (ds,指数)inputImdsNew = (ds.InputImds)复印件;outputImdsNew = (ds.OutputImds)复印件;inputImdsNew。文件= inputImdsNew.Files(指标);outputImdsNew。文件= outputImdsNew.Files(指标);X = readall (inputImdsNew);Y = readall (outputImdsNew);data =表(X, Y);信息。CurrentReadIndices = indices;结束结束结束

验证自定义Mini-Batch数据存储

如果你跟随本文提供的指令,然后定制mini-batch数据存储的实现完成。之前使用这个数据存储,使用提出的指导方针测试指南自定义数据存储(MATLAB)。

另请参阅

|||||

相关的话题

这个主题有帮助吗?