分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测

分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测

目录

    • 分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测
      • 分类效果
      • 基本介绍
      • 模型描述
      • 程序设计
      • 参考资料

分类效果

分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测_第1张图片
分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测_第2张图片
分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测_第3张图片
分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测_第4张图片
分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测_第5张图片
分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测_第6张图片

基本介绍

MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测。建立了基于门控循环单元网络的辨识模型。利用模拟器获取操纵数据并建立数据集,模型经过训练后,能够有效利用数据的时序特征,成功识别不同状态,模型的识别准确率到达100%。

模型描述

长短期记忆网络(简称LSTM)引入了门控机制调节信息流,成功解决了循环神经网络存在的梯度消失等问题。然而,LSTM 模型结构复杂,需要较长的训练时间。2014 年CHO 等人针对优化LSTM的结构提出了GRU 网络,结构如图1 所示。GRU 在处理与时序高度相关的问题上是其他神经网络无法媲美的。

分类预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测_第7张图片

MATLAB实现BO-GRU贝叶斯优化门控循环单元多特征分类预测。建立了基于门控循环单元网络的辨识模型。贝叶斯优化参数为隐藏层节点、初始学习率、正则化系数。

程序设计

  • 完整程序和数据私信博主。
%%  设置网络结构
opt.layers = [ ...
    sequenceInputLayer(inputSize)                             % 输入层

    gruLayer(optVars.NumOfUnits, 'OutputMode', 'last')        % GRU层
    reluLayer                                                 % Relu激活层

    fullyConnectedLayer(numResponses)                         % 全连接层
    softmaxLayer                                              % 损失函数层
    classificationLayer];                                     % 分类层

%%  设置网络参数
opt.options = trainingOptions('adam', ...             % 优化算法Adam
    'MaxEpochs', 800, ...                             % 最大训练次数
    'GradientThreshold', 1, ...                       % 梯度阈值
    'InitialLearnRate', optVars.InitialLearnRate, ... % 初始学习率
    'LearnRateSchedule', 'piecewise', ...             % 学习率调整
    'LearnRateDropPeriod', 700, ...                   % 训练700次后开始调整学习率
    'LearnRateDropFactor',0.2, ...                    % 学习率调整因子
    'L2Regularization', optVars.L2Regularization, ... % 正则化参数
    'ExecutionEnvironment', 'cpu',...                 % 训练环境
    'Verbose', 0, ...                                 % 关闭优化过程
    'Plots', 'none');                                 % 不画出曲线

%%  训练网络
net = trainNetwork(p_train, t_train, opt.layers, opt.options);

%%  得到网络预测值
t_sim1 = predict(net, p_train); 

%%  计算误差
T_sim1 = vec2ind(t_sim1');
valError = 1 - sum((T_sim1' == double(t_train))) / length(t_train);

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128364159?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128358983?spm=1001.2014.3001.5501

你可能感兴趣的:(分类预测,BO-GRU,贝叶斯优化,门控循环单元,多特征分类预测)