主要内容

使用深度学习序列分类

这个例子展示了如何使用长序列数据分类短期记忆(LSTM)网络。

训练一个深层神经网络分类序列数据,您可以使用一个LSTM网络。LSTM网络允许您输入序列数据转换成一个网络,并根据个人做出预测时间序列数据的步骤。

下面的例子使用了日本元音所描述的数据集在[1]和[2]。这个例子列车LSTM网络识别演讲者给定时间序列数据代表连续两艘日本口语元音。训练数据时间序列数据包含九个扬声器。每个序列都有12个特性和不同长度。数据集包含270个训练观察和370个测试观察。

加载序列数据

日本元音训练数据加载。XTrain是一个单元阵列包含270维度12可变长度的序列。Y是一个分类向量的标签“1”,“2”,……“9”,对应于九个扬声器。的条目XTrain与12矩阵行(每个特性的一行)和不同数量的列(每个时间步一列)。

[XTrain, YTrain] = japaneseVowelsTrainData;XTrain (1:5)
ans =5×1单元阵列{12 x20的双重}{12 x26双}{12将双}{12 x20的双重}{12 x21双}

可视化系列第一次在一个阴谋。每一行对应一个功能。

图绘制(XTrain{1}”)包含(“时间步”)标题(“训练观察1”)numFeatures =大小(XTrain {1}, 1);传奇(“特性”+字符串(1:numFeatures),“位置”,“northeastoutside”)

图包含一个坐标轴对象。坐标轴对象标题训练观察1包含12线类型的对象。这些对象代表功能1、功能2、特性3功能4、5功能,特性,特性7,特性,功能,功能特性特性11日12。

准备数据填充

在培训期间,默认情况下,软件将训练数据分为mini-batches和垫序列,它们有相同的长度。过多的填充会对网络性能有负面影响。

防止训练过程添加太多的填充,可以通过序列长度,对训练数据进行排序和选择mini-batch大小这样在mini-batch序列有一个类似的长度。下图显示了填充序列之前和之后的影响排序的数据。

每个观测得到的序列长度。

numObservations =元素个数(XTrain);i = 1: numObservations = XTrain序列{};sequenceLengths (i) =(序列,2)大小;结束

对数据排序的序列长度。

[sequenceLengths, idx] = (sequenceLengths)进行排序;XTrain = XTrain (idx);YTrain = YTrain (idx);

在条形图中查看排序序列的长度。

图酒吧(sequenceLengths) ylim(30[0])包含(“序列”)ylabel (“长度”)标题(“排序数据”)

图包含一个坐标轴对象。坐标轴标题排序数据对象包含一个类型的对象吧。

选择一个mini-batch 27把训练数据的大小均匀,减少mini-batches填充。下图显示了填充添加到序列。

miniBatchSize = 27个;

定义LSTM网络体系结构

定义LSTM网络体系结构。指定输入大小12码的序列(输入数据的维数)。指定一个双向LSTM隐藏层100单元,和输出序列的最后一个元素。最后,指定9类包括一个完全连接层的9码,其次是softmax层和一层分类。

如果你获得完整的在预测时间序列,然后您可以使用一个双向LSTM层在您的网络。一个双向LSTM层可以从完整的序列在每个时间步。如果你没有获得完整的在预测时间序列,例如,如果预计值或预测一个时间步,然后使用一个LSTM层。

inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= [sequenceInputLayer inputSize bilstmLayer (numHiddenUnits,“OutputMode”,“最后一次”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer]
层x1 = 5层阵列层:1“12维度2序列输入序列输入”BiLSTM BiLSTM 100隐藏单位3“完全连接9完全连接层4”Softmax Softmax crossentropyex 5”分类输出

现在,指定培训选项。指定的能手“亚当”梯度阈值为1,时代的最大数量为100。在mini-batches减少填充,选择一个mini-batch 27的大小。板数据有相同的长度最长的序列,指定序列长度“最长”。确保数据仍按序列长度,指定数据永不洗牌。

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

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

火车LSTM网络

火车LSTM网络通过使用指定的培训选项trainNetwork

网= trainNetwork (XTrain、YTrain层,选择);

图培训进展(26 - 2月- 2022 11:09:16)包含2轴uigridlayout类型的对象和另一个对象。坐标轴对象1包含14块类型的对象,文本行。坐标轴对象2包含14块类型的对象,文本行。

测试LSTM网络

测试集和分类序列加载到扬声器。

日本元音测试数据加载。XTest是一个单元阵列包含370维度12可变长度的序列。欧美是一个分类向量的标签“1”,“2”,…”9”,对应于九个扬声器。

[XTest,欧美]= japaneseVowelsTestData;XTest (1:3)
ans =3×1单元阵列{12 x19双}{12 x17双}{12 x19双}

LSTM网络被训练使用mini-batches相似序列的长度。确保测试数据以同样的方式被组织。排序序列长度的测试数据。

numObservationsTest =元素个数(XTest);i = 1: numObservationsTest序列= XTest{我};sequenceLengthsTest (i) =(序列,2)大小;结束[sequenceLengthsTest, idx] = (sequenceLengthsTest)进行排序;XTest = XTest (idx);欧美=欧美(idx);

测试数据进行分类。减少分类过程引入的填充,mini-batch大小设置为27。应用相同的填充作为训练数据,指定序列长度“最长”

miniBatchSize = 27个;XTest YPred =分类(净,“MiniBatchSize”miniBatchSize,“SequenceLength”,“最长”);

计算预测的分类精度。

acc = (YPred = =欧美)。/元素个数(欧美)
acc = 0.9730

引用

[1]m .奖赏,富山,和m . Shimbo。“多维曲线分类使用通过地区。”模式识别的字母。11 - 13号20卷,第1111 - 1103页。

[2]UCI机器学习库:日本元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese +元音

另请参阅

||||

相关的话题