主要内容

在Simulink中预测和更新网络状态金宝app

这个例子展示了如何预测Simulink®中训练好的循环神经网络的响应金宝app有状态的预测块。本例使用预训练的长短期记忆(LSTM)网络。

负荷预训练网络

负载JapaneseVowelsNet,一个预先训练的长短期记忆(LSTM)网络,在日语Vowels数据集上训练,如[1]和[2]所述。该网络在按序列长度排序的序列上训练,迷你批大小为27。

负载JapaneseVowelsNet

查看网络结构。

analyzeNetwork(净);

负载测试数据

加载日语元音测试数据。XTest是包含370个不同长度的12维序列的单元格数组。tt是标签“1”,“2”,…“9”,对应9个说话者。

创建时间表数组思敏有时间戳的行和重复的X

[XTest,TTest] =日本evowelstestdata;X = XTest{94};numTimeSteps = size(X,2);simin =时间表(repmat(X,1,4)',“步伐”秒(0.2));

金宝app预测反应的Simulink模型

用于预测金宝app响应的Simulink模型包含一个有状态的预测块预测分数和从工作空间块在时间步骤中加载输入数据序列。

为了在模拟过程中将递归神经网络的状态重置为初始状态,将有状态的预测块中的复位子系统并使用重置控制信号作为触发器。

open_system (“StatefulPredictExample”);

配置仿真模型

的模型配置参数有状态的预测块。

set_param (“StatefulPredictExample /状态预测”“NetworkFilePath”“JapaneseVowelsNet.mat”);set_param (“StatefulPredictExample”“SimulationMode”“正常”);

运行模拟

计算的响应JapaneseVowelsNet网络,运行模拟。预测分数保存在MATLAB®工作空间中。

Out = sim(“StatefulPredictExample”);

绘制预测分数。该图显示了预测分数如何在时间步骤之间变化。

scores = squeeze(out.yPred.Data(:,:,1:numTimeSteps));classNames = string(net.Layers(end).Classes);图线=图(分数’);xlim([1 numTimeSteps])“类”+类名,“位置”“西北”)包含(“时间步”) ylabel (“分数”)标题(“随时间步骤的预测分数”

为正确的班级突出显示随时间步骤的预测分数。

trueLabel = TTest(94);行(trueLabel)。LineWidth = 3;

在条形图中显示最终的时间步长预测。

图栏(scores(:,end))“最终预测分数”)包含(“类”) ylabel (“分数”

参考文献

[1]工藤M.,富山J.,辛波M.。“使用穿过区域的多维曲线分类”模式识别信.第20卷,11-13号,第1103-1111页。

[2]UCI机器学习库:日语元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

另请参阅

|||

相关的话题