主要内容

使用深度网络设计器创建简单的序列分类网络

这个例子展示了如何使用Deep network Designer创建一个简单的长短期记忆(LSTM)分类网络。

要训练深度神经网络对序列数据进行分类,可以使用LSTM网络。LSTM网络是一种循环神经网络(RNN),它学习序列数据时间步长之间的长期依赖关系。

该示例演示了如何:

  • 加载序列数据。

  • 构建网络架构。

  • 指定培训选项。

  • 培训网络。

  • 预测新数据的标签,计算分类精度。

加载数据

加载日语元音数据集,如中所述[1]而且[2].预测器是包含不同长度序列的单元格数组,特征维为12。这些标签是标签1、2、…、9的分类向量。

[XTrain,YTrain] =日本evowelstraindata;[XValidation,YValidation] =日本evowelstestdata;

查看前几个训练序列的大小。序列是有12行(每个特征一行)和不同数量的列(每个时间步骤一列)的矩阵。

XTrain (1:5)
ans =5×1单元格数组{12×20 double} {12×26 double} {12×22 double} {12×20 double} {12×21 double}

定义网络架构

打开深度网络设计器。

deepNetworkDesigner

暂停上Sequence-to-Label并点击开放.这打开了一个适合于序列分类问题的预构建网络。

深度网络设计器显示预构建的网络。

您可以很容易地为日语元音数据集调整这个序列网络。

选择sequenceInputLayer检查一下InputSize设置为12以匹配特征维度。

选择lstmLayer并设置NumHiddenUnits到100年。

选择fullyConnectedLayer检查一下OutputSize设置为9,类的数量。

检查网络结构

单击,可以查看网络,并查看各层的详细信息分析

导出网络架构

要将网络体系结构导出到工作区,请在设计师选项卡上,单击出口.Deep Network Designer将网络保存为变量layers_1

您还可以通过选择生成代码来构建网络体系结构出口>生成代码

列车网络的

指定训练选项并训练网络。

因为迷你批的数量小,序列短,所以CPU更适合训练。集“ExecutionEnvironment”“cpu”.要在GPU上训练,如果可用,请设置“ExecutionEnvironment”“汽车”(默认值)。

miniBatchSize = 27;选项= trainingOptions(“亚当”...“ExecutionEnvironment”“cpu”...“MaxEpochs”, 100,...“MiniBatchSize”miniBatchSize,...“ValidationData”{XValidation, YValidation},...“GradientThreshold”2,...“洗牌”“every-epoch”...“详细”假的,...“阴谋”“训练进步”);

培训网络。

net = trainNetwork(XTrain,YTrain,layers_1,options);

您还可以使用深度网络设计器和数据存储对象来训练该网络。有关显示如何在深度网络设计器中训练序列到序列回归网络的示例,请参见利用深度网络设计器进行时间序列预测的训练网络

测试网络

对试验数据进行分类,计算分类精度。指定与培训相同的迷你批大小。

YPred =分类(net,XValidation,“MiniBatchSize”, miniBatchSize);acc = mean(YPred == YValidation)
Acc = 0.9405

对于接下来的步骤,您可以尝试通过使用双向LSTM (BiLSTM)层或创建更深的网络来提高准确性。有关更多信息,请参见长短期记忆网络

有关显示如何使用卷积网络对序列数据进行分类的示例,请参见基于深度学习的语音指令识别

参考文献

[1]工藤,美一,富山俊,新保真。“使用穿过区域的多维曲线分类”模式识别信20,没有。11-13(1999年11月):1103-11。https://doi.org/10.1016/s0167 - 8655 (99) 00077 - x。

[2]工藤,美一,富山俊,新保真。日语元音数据集。由UCI机器学习库分发。https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

另请参阅

相关的话题