主要内容

列车网络的使用自定义Mini-Batch序列数据的数据存储

这个例子展示了如何培养深入学习网络使用自定义mini-batch数据存储在内存不足的序列数据。

mini-batch数据存储是数据存储的实现支持批量读取数据。万博1manbetx使用mini-batch数据存储读取内存不足数据或执行特定的预处理操作,当阅读批次的数据。您可以使用一个mini-batch数据存储的培训、验证、测试和预测深度学习应用程序的数据集。

下面的例子使用了自定义mini-batch数据存储sequenceDatastore.m。你能适应这个数据存储你的数据通过定制数据存储功能。为一个例子,演示如何创建您自己的自定义mini-batch数据存储,明白了开发自定义Mini-Batch数据存储

负荷训练数据

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

解压缩序列数据。

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

创建自定义Mini-Batch数据存储

创建一个自定义mini-batch数据存储。的mini-batch数据存储sequenceDatastore读取数据从一个文件夹和子文件夹名称的标签。先用这个数据存储,保存文件sequenceDatastore.m的路径。

创建一个包含序列数据使用的数据存储sequenceDatastore

folderTrain = fullfile (outputFolder,“训练”);dsTrain = sequenceDatastore (folderTrain)
dsTrain = sequenceDatastore属性:数据存储:[1×1 matlab.io.datastore。FileDatastore]标签(270×1分类):NumClasses: 9 SequenceDimension: 12 MiniBatchSize: 128 NumObservations: 270

定义LSTM网络体系结构

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

inputSize = dsTrain.SequenceDimension;numClasses = dsTrain.NumClasses;numHiddenUnits = 100;层= [sequenceInputLayer inputSize lstmLayer (numHiddenUnits,“OutputMode”,“最后一次”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];

指定培训选项。指定“亚当”解算器和“GradientThreshold”为1。设置mini-batch大小27和设置时代的最大数量为75。确保数据存储创建mini-batches的大小trainNetwork函数预期,也将mini-batch数据存储的大小设置为相同的值。

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

miniBatchSize = 27个;选择= trainingOptions (“亚当”,“ExecutionEnvironment”,“cpu”,“MaxEpochs”,75,“MiniBatchSize”miniBatchSize,“GradientThreshold”,1“详细”0,“阴谋”,“训练进步”);dsTrain。MiniBatchSize = MiniBatchSize;

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

网= trainNetwork (dsTrain层,选项);

测试网络

从测试数据创建一个序列数据存储。

folderTest = fullfile (outputFolder,“测试”);dst = sequenceDatastore (folderTest);

测试数据进行分类。指定相同的mini-batch训练数据的大小。确保数据存储创建mini-batches的大小分类函数预期,也将mini-batch数据存储的大小设置为相同的值。

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

计算预测的分类精度。

欧美= dsTest.Labels;acc = (YPred = =欧美)。/元素个数(欧美)
acc = 0.9432

引用

[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 +元音

另请参阅

|||

相关的话题