使用深度学习序列分类
这个例子展示了如何使用长序列数据分类短期记忆(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”)
准备数据填充
在培训期间,默认情况下,软件将训练数据分为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层,选择);
测试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 +元音
另请参阅
trainNetwork
|trainingOptions
|lstmLayer
|bilstmLayer
|sequenceInputLayer