列车网络的使用自定义Mini-Batch序列数据的数据存储
这个例子展示了如何培养深入学习网络使用自定义mini-batch数据存储在内存不足的序列数据。
mini-batch数据存储是数据存储的实现支持批量读取数据。万博1manbetx使用mini-batch数据存储读取内存不足数据或执行特定的预处理操作,当阅读批次的数据。您可以使用一个mini-batch数据存储的培训、验证、测试和预测深度学习应用程序的数据集。
下面的例子使用了自定义mini-batch数据存储sequenceDatastore.m
。你能适应这个数据存储你的数据通过定制数据存储功能。为一个例子,演示如何创建您自己的自定义mini-batch数据存储,明白了开发自定义Mini-Batch数据存储。
负荷训练数据
加载描述的日本元音数据集[1]和[2]。的压缩文件japaneseVowels.zip
包含可变长度的序列。序列分为两个文件夹,火车
和测试
包含训练序列和测试序列,分别。在每一个文件夹,序列分为子文件夹,从编号1
来9
。这些子文件夹的名字标签的名字。每个序列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 +元音
另请参阅
trainNetwork
|trainingOptions
|lstmLayer
|sequenceInputLayer