使用深度网络设计器创建简单的序列分类网络
这个例子展示了如何使用Deep network Designer创建一个简单的长短期记忆(LSTM)分类网络。
为了训练深度神经网络对序列数据进行分类,可以使用LSTM网络。LSTM网络是一种循环神经网络(RNN),它学习序列数据的时间步间的长期依赖关系。
该示例演示了如何:
加载序列数据。
构建网络架构。
指定培训选项。
训练网络。
预测新数据的标签,计算分类精度。
加载数据
加载日语元音数据集,如中所述[1]而且[2].预测器是包含不同长度序列的单元阵列,特征维数为12。标签是标签1、2、…、9的分类向量。
[XTrain,YTrain] = japevowelstraaindata;[XValidation,YValidation] = japevowelstestdata;
查看前几个训练序列的大小。序列是矩阵,有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,类的数量。
检查网络架构
若要检查网络并查看各层的更多详细信息,请单击分析.
导出网络架构
要将网络体系结构导出到工作空间,请在设计师选项卡上,单击出口.深度网络设计器将网络保存为变量layers_1
.
您还可以通过选择生成代码来构造网络体系结构出口>生成代码.
列车网络的
指定培训选项,培训网络。
因为小批次的序列较短,CPU更适合训练。集“ExecutionEnvironment”
来“cpu”
.在GPU上训练,如果可用,设置“ExecutionEnvironment”
来“汽车”
(默认值)。
miniBatchSize = 27;options = trainingOptions(“亚当”,...“ExecutionEnvironment”,“cpu”,...“MaxEpochs”, 100,...“MiniBatchSize”miniBatchSize,...“ValidationData”{XValidation, YValidation},...“GradientThreshold”2,...“洗牌”,“every-epoch”,...“详细”假的,...“阴谋”,“训练进步”);
训练网络。
net = trainNetwork(XTrain,YTrain,layers_1,options);
您还可以使用深度网络设计器和数据存储对象来训练这个网络。有关演示如何在深度网络设计器中训练序列到序列回归网络的示例,请参见基于深度网络设计器的时间序列预测训练网络.
测试网络
对试验数据进行分类,计算分类精度。指定与培训时相同的小批大小。
YPred = class (net,XValidation,“MiniBatchSize”, miniBatchSize);acc =平均值(YPred == YValidation)
Acc = 0.9405
对于接下来的步骤,您可以尝试通过使用双向LSTM (BiLSTM)层或创建更深的网络来提高准确性。有关更多信息,请参见长-短时记忆网络.
有关演示如何使用卷积网络对序列数据进行分类的示例,请参见用深度学习训练语音指令识别模型.
参考文献
[1]工藤,美一,富山俊,Shimbo Masaru。“利用穿过区域的多维曲线分类”。模式识别字母20,no。11-13(1999年11月):1103-11。https://doi.org/10.1016/s0167 - 8655 (99) 00077 - x。
[2]工藤,美一,富山俊,Shimbo Masaru。日语元音数据集。由UCI机器学习库发布。https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels