主要内容

matlab.io.datastore.MiniBatchableclass

包:matlab.io.datastore

添加mini-batch支持数金宝app据存储

描述

matlab.io.datastore.MiniBatchable是一个抽象的mixin类,增加了支持mini-batches定制数据存储用金宝app于深度学习工具箱™。mini-batch数据存储包含训练和测试数据集用于深度学习工具箱训练,预测和分类。

要使用这个mixin类,您必须继承matlab.io.datastore.MiniBatchable类除了继承matlab.io.Datastore基类。输入以下语法作为类定义的第一行文件:

classdefMyDatastore< matlab.io。数据存储&……matlab.io.datastore.MiniBatchable…结束

添加支持min金宝appi-batches数据存储:

  • 从另外一个类继承matlab.io.datastore.MiniBatchable

  • 定义两个附加属性:MiniBatchSizeNumObservations

为更多的细节和步骤来创建定制mini-batch数据存储在培训,优化性能预测和分类,看看开发自定义Mini-Batch数据存储

属性

全部展开

每一批的观察返回的数量,或调用的函数。培训、预测、分类、MiniBatchSize中定义的属性设置为mini-batch大小trainingOptions

属性:

文摘 真正的
访问 公共

观察总数包含在数据存储中。这个数的观察的长度是一个培训的时代。

属性:

文摘 真正的
SetAccess 受保护的
ReadAccess 公共

属性

文摘 真正的
密封

类属性的信息,请参阅类属性

复制语义

句柄。学习如何处理类影响复制操作,明白了复制对象

例子

全部折叠

这个例子展示了如何培养深入学习网络改造,结合数据存储内存不足的序列数据。

改变了数据存储转换或过程从底层数据存储读取数据。您可以使用一个转换数据存储的培训、验证、测试和预测深度学习应用程序的数据集。使用转换数据存储读取内存不足数据或执行特定的预处理操作,当阅读批次的数据。当你有单独的数据存储包含预测和标签,您可以把它们,这样你就可以将数据输入到一个深度学习网络。

当训练网络,软件创建mini-batches序列长度相同的填充,删除,或分割输入数据。内存数据的trainingOptions函数提供了选项板和截断输入序列,然而,对于内存不足数据,您必须手动垫和截断序列。

负荷训练数据

加载描述的日本元音数据集[1]和[2]。的压缩文件japaneseVowels.zip包含可变长度的序列。序列分为两个文件夹,火车测试包含训练序列和测试序列,分别。在每一个文件夹,序列分为子文件夹,从编号19。这些子文件夹的名字标签的名字。每个序列MAT文件表示。每个序列是一个矩阵12行,每一行特性,不同列数,每个时间步一列。序列维的行数和列数是序列长度。

解压缩序列数据。

文件名=“japaneseVowels.zip”;outputFolder = fullfile (tempdir,“japaneseVowels”);解压缩(文件名,outputFolder);

训练预测,数据存储创建一个文件并指定阅读功能负载函数。的负载函数,从MAT-file加载数据到一个结构数组。读文件培训文件夹,子文件夹的设置“IncludeSubfolders”选项真正的

folderTrain = fullfile (outputFolder,“训练”);fdsPredictorTrain = fileDatastore (folderTrain,“ReadFcn”@load,“IncludeSubfolders”,真正的);

预览数据存储。返回的结构包含一个序列从第一个文件。

预览(fdsPredictorTrain)
ans =结构体字段:X(12×20双):

的标签,创建一个文件数据存储并指定阅读功能readLabel函数,定义的例子。的readLabel函数提取子文件夹名称的标签。

一会=字符串(1:9);fdsLabelTrain = fileDatastore (folderTrain,“ReadFcn”@(文件名)readLabel(文件名,类名),“IncludeSubfolders”,真正的);

预览数据存储。输出对应于第一个文件的标签。

预览(fdsLabelTrain)
ans =分类1

变换和组合数据存储

输入序列数据存储的数据预测的深度学习网络的mini-batches序列必须具有相同的长度。转换数据存储使用padSequence函数定义的数据存储,垫或截断序列长度20。

sequenceLength = 20;tdsTrain =变换(fdsPredictorTrain @(数据)padSequence(数据、sequenceLength));

预览转换后的数据存储。输出对应的顺序从第一个文件。

X =预览(tdsTrain)
X =1×1单元阵列{12×20双}

输入预测和标签从数据存储到一个深学习网络,结合使用结合函数。

cdsTrain =结合(tdsTrain fdsLabelTrain);

预览合并后的数据存储。数据存储返回1×2单元阵列。第一个元素对应于预测。第二个元素对应的标签。

预览(cdsTrain)
ans =1×2单元阵列{12×20双}{[1]}

定义LSTM网络体系结构

定义LSTM网络体系结构。指定输入数据的数量特征作为输入的大小。指定一个LSTM隐藏层100单元和输出序列的最后一个元素。最后,指定一个完全连接层与输出尺寸等于类的数量,其次是softmax层和一层分类。

numFeatures = 12;numClasses =元素个数(类名);numHiddenUnits = 100;层= [sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”,“最后一次”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];

指定培训选项。将解算器“亚当”“GradientThreshold”2。设置mini-batch大小27和设置时代的最大数量为75。数据存储不支持洗牌,所以集金宝app“洗牌”“永远”

因为mini-batches小短序列,CPU更适合培训。集“ExecutionEnvironment”“cpu”。火车在GPU,如果可用,集“ExecutionEnvironment”“汽车”(默认值)。

miniBatchSize = 27个;选择= trainingOptions (“亚当”,“ExecutionEnvironment”,“cpu”,“MaxEpochs”,75,“MiniBatchSize”miniBatchSize,“GradientThreshold”2,“洗牌”,“永远”,“详细”0,“阴谋”,“训练进步”);

火车LSTM网络培训指定的选项。

网= trainNetwork (cdsTrain层,选项);

测试网络

创建一个包含了转换数据存储测试数据为训练数据使用相同的步骤。

folderTest = fullfile (outputFolder,“测试”);fdsPredictorTest = fileDatastore (folderTest,“ReadFcn”@load,“IncludeSubfolders”,真正的);tdsTest =变换(fdsPredictorTest @(数据)padSequence(数据、sequenceLength));

网络上使用训练的测试数据做出预测。

tdsTest YPred =分类(净,“MiniBatchSize”,miniBatchSize);

计算测试数据的分类精度。测试集的标签,创建一个文件数据存储和读取功能readLabel并指定包含子文件夹。指定的输出是垂直concatenateable通过设置“UniformRead”选项真正的

fdsLabelTest = fileDatastore (folderTest,“ReadFcn”@(文件名)readLabel(文件名,类名),“IncludeSubfolders”,真的,“UniformRead”,真正的);欧美= readall (fdsLabelTest);
精度=意味着(YPred = =次)
精度= 0.9351

功能

readLabel函数提取类别的标签从指定的文件名一会

函数标签= readLabel(文件名,一会)filepath = fileparts(文件名);[~,标签]= fileparts (filepath);标签=分类(字符串(标签),类名);结束

padSequence垫或序列截断函数data.X有指定的序列长度在1×1细胞并返回结果。

函数序列= padSequence(数据、sequenceLength)序列= data.X;[C, S] =大小(序列);如果年代< sequenceLength填充= 0 (C, sequenceLength-S);序列=(序列填充);其他的序列=序列(:1:sequenceLength);结束序列={序列};结束

兼容性的考虑

全部展开

不推荐在R2019a开始

引用

[1]奖赏,M。,J. Toyama, and M. Shimbo. "Multidimensional Curve Classification Using Passing-Through Regions."模式识别的字母。20卷,11 - 13号,第1103 - 1111页。

[2]奖赏,M。,J. Toyama, and M. Shimbo.日本元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese +元音

介绍了R2018a