使用深度学习Sequence-to-Sequence分类
这个例子展示了如何分类序列数据使用的每个时间步长短期记忆(LSTM)网络。
训练一个深神经网络分类每个时间步的序列数据,您可以使用一个sequence-to-sequence LSTM网络。一个sequence-to-sequence LSTM网络使您能够做出不同的预测序列数据的每个时间步。
这个示例使用传感器数据来自智能手机戴在身体。火车的例子一个LSTM网络识别使用者的活动给时间序列数据代表加速度计读数在三个不同的方向。训练数据时间序列数据包含了七人。每个序列有三个特性和不同长度。数据集包含六个训练观察和一个测试观察。
加载序列数据
人类活动识别数据加载。传感器数据的数据包含七个时间序列来自智能手机戴在身体。每个序列有三个特性和不同长度。这三个特征对应于加速度计读数在三个不同的方向。
负载HumanActivityTrainXTrain
XTrain =6×1单元阵列{3×64480双}{3×53696双}{3×56416双}{3×50688双}{3×51888双}{3×54256双}
想象一个训练序列图。情节首先训练序列的第一个特征和颜色情节根据相应的活动。
X = XTrain {1} (1:);类=类别(YTrain {1});图为j = 1:元素个数(类)标签=类(j);idx =找到(YTrain{1} = =标签);持有在情节(idx X (idx))结束持有从包含(“时间步”)ylabel (“加速”)标题(“训练序列1,功能1”)传说(类,“位置”,“西北”)
定义LSTM网络体系结构
定义LSTM网络体系结构。指定输入序列的大小3(功能的输入数据的数量)。指定一个LSTM隐藏层200单元,输出完整的序列。最后,指定五类包括一个完全连接层大小5,其次是softmax层和一层分类。
numFeatures = 3;numHiddenUnits = 200;numClasses = 5;层= […sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”,“序列”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];
指定培训选项。将解算器“亚当”
。训练60时代。防止爆炸的梯度,梯度阈值设置为2。
选择= trainingOptions (“亚当”,…“MaxEpochs”现年60岁的…“GradientThreshold”2,…“详细”0,…“阴谋”,“训练进步”);
火车LSTM网络选项指定的培训使用trainNetwork
。每个mini-batch包含整个训练集,情节是每个时代更新一次。序列很长,所以它可能需要一些时间来处理每个mini-batch和更新。
网= trainNetwork (XTrain、YTrain层,选择);
测试LSTM网络
负载测试数据和分类活动在每个时间步。
载入人类活动测试数据。XTest
包含一个序列的维度3。欧美
是包含序列的分类标签对应活动在每个时间步。
负载HumanActivityTest图绘制(XTest{1}”)包含(“时间步”)传说(“特性”+ (1:numFeatures))标题(“测试数据”)
分类测试数据使用分类
。
YPred =分类(网络,XTest {1});
或者,你可以预测一个时间步使用classifyAndUpdateState
。这是有用的,当你有时间的值到达流的步骤。通常是更快的做出预测全序列相比,预测一个时间步。为一个例子,演示如何预测未来时间步骤通过更新网络之间单一的时间步的预测,明白了使用深度学习时间序列预测。
计算预测的准确性。
acc =总和(YPred = =次{1})。/元素个数(欧美{1})
acc = 0.9998
比较预测与测试数据通过使用一个阴谋。
图绘制(YPred,“。”)举行在情节(欧美{1})从包含(“时间步”)ylabel (“活动”)标题(“预测活动”)传说([“预测”“测试数据”])
另请参阅
trainNetwork
|trainingOptions
|lstmLayer
|sequenceInputLayer