在Simulink中分类和更新网络状态
这个例子展示了如何在Simulink®中对训练过的循环神经网络的数据进行分类有状态的分类
块。这个例子使用了预训练的长短时记忆(LSTM)网络。
负载Pretrained网络
负载JapaneseVowelsNet
在[1]和[2]中描述的日语元音数据集上训练的预训练长短期记忆(LSTM)网络。该网络训练的序列按序列长度排序,小批大小为27。
负载JapaneseVowelsNet
查看网络架构。
analyzeNetwork(净);
负载测试数据
加载日语元音测试数据。XTest
是包含370个长度不等的12维序列的单元格数组。tt
是标签“1”,“2”,…“9”,对应9位说话者。
创建时间表数组思敏
带有时间戳的行和重复的副本X
。
(XTest, tt) = japaneseVowelsTestData;X = XTest {94};numTimeSteps =大小(X, 2);思敏=时间表(repmat (X 1 4)”,“步伐”秒(0.2));
Simulink数据分类模型
用于数据分类的Simulink模型包含一个有状态的分类
块来预测标签和从工作空间
块在时间步骤中加载输入数据序列。
若要在模拟过程中将循环神经网络的状态重置为初始状态,请将有状态的分类
块内复位子系统
并使用重置
控制信号作为触发器。
open_system (“StatefulClassifyExample”);
配置仿真模型
的模型配置参数有状态的分类
块。
set_param (“StatefulClassifyExample /状态分类”,“NetworkFilePath”,“JapaneseVowelsNet.mat”);set_param (“StatefulClassifyExample”,“SimulationMode”,“正常”);
运行仿真
计算响应JapaneseVowelsNet
网络,运行模拟。预测标签保存在MATLAB®工作区中。
= sim卡(“StatefulClassifyExample”);
将预测的标签绘制在阶梯图中。该图表显示了预测在时间步骤之间的变化。
标签=挤压(out.YPred.Data (1: numTimeSteps, 1));图楼梯(标签,“o”xlabel([1 numTimeSteps])“时间步”) ylabel (“预测阶级”)标题(“随时间步骤的分类”)
将预测与真实标签进行比较。画一条水平线显示观察的真实标签。
trueLabel =双(tt (94));持有在线([1 numTimeSteps], [trueLabel trueLabel),...“颜色”,“红色”,...“线型”,“——”)传说([“预测”“真正的标签”)轴([1 numTimeSteps+1 0 9]);
参考文献
[1]工藤先生,富山先生,Shimbo先生。“利用穿过区域的多维曲线分类”。模式识别的字母。第20卷第11-13期,第1103-1111页。
[2]UCI机器学习库:日语元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels