回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(不调用工具箱函数)

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(不调用工具箱函数)

文章目录

    • [回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(不调用工具箱函数)](#回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(不调用工具箱函数))

预测效果





基本介绍

GRU神经网络是LSTM神经网络的一种变体,LSTM 神经网

络是在RNN的基础上发展起来的。RNN是一种成熟的机器学习方法,在处理时序数列方面具有着很大优势。RNN中包含信号反馈结构,能将t时刻的输出信息与t时刻之前的信息相关联,具有动态特征和记忆功能。

  • RNN结构包括输入层、隐藏层和输出层,其中隐藏层包含反馈结构;
  • t时刻的输出值是该时刻及其之前时刻的输入信息共同作用的结果;
  • RNN能够有效地分析和处理较短的时序数列,但不能分析和处理维
    度过长的时序数列,否则会产生"梯度消失"或"梯度爆炸"的现象。
  • 针对这一问题,H等提出了一种RNN改进结构LSTM神经网络,其隐藏层结构如图示。
  • LSTM神经网络基于隐藏层中的记忆单元(遗忘门、输入门和输出门)实现时序上的记忆可控,改善了RNN长期记忆力不足的问题,但其隐藏层的结构过于复杂,样本训练需要花费大量的时间。
  • 基于LSTM神经网络,cho等提出了GRU神经网络,利用重置门和更新门代替LSTM神经网络中的遗忘门、输入门和输出门。LSTM神经网络和GRU神经网络在隐藏层内具有相似的数据流,但GRU神经网络中没有单独的存储单元,因此样本训练效率更高。
  • GRU神经网络的隐藏层结构示意图。由图可见:更新门控制前一时刻的信息对当前时刻的影响程度,更新门的值越大,前一时刻的信息对当
    前时刻的影响越小;重置门控制对前一时刻信息的接收百分比,重置门的值越大,对前一时刻的信息接收的越多。

程序设计

  • 完整源码和数据获取方式1:私信博主回复** MATLAB实现GRU(门控循环单元)多输入单输出(不调用工具箱函数)**获取。
  • 完整源码和数据获取方式2:订阅《GRU门控循环单元》专栏,订阅后两天内私信博主获取程序和数据,专栏外只能获取该程序。
clike 复制代码
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
%-------------------------------------------------------------------------------------
%%  导入数据
res = xlsread('data.xlsx');

%%  划分训练集和测试集
temp = randperm(103);

P_train = res(temp(1: 80), 1: 7)';
T_train = res(temp(1: 80), 8)';
M = size(P_train, 2);
%-------------------------------------------------------------------------------------
P_test = res(temp(81: end), 1: 7)';
T_test = res(temp(81: end), 8)';
N = size(P_test, 2);
%-------------------------------------------------------------------------------------
%%  数据归一化
[P_train, ps_input] = mapminmax(P_train, 0, 1);
P_test = mapminmax('apply', P_test, ps_input);

[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);

%  MAE
mae1 = sum(abs(T_sim1' - T_train)) ./ M ;
mae2 = sum(abs(T_sim2' - T_test )) ./ N ;

disp(['训练集数据的MAE为:', num2str(mae1)])
disp(['测试集数据的MAE为:', num2str(mae2)])

%  MBE
mbe1 = sum(T_sim1' - T_train) ./ M ;
mbe2 = sum(T_sim2' - T_test ) ./ N ;

disp(['训练集数据的MBE为:', num2str(mbe1)])
disp(['测试集数据的MBE为:', num2str(mbe2)])

参考资料

1 https://blog.csdn.net/kjm13182345320/article/details/129252252

2 https://blog.csdn.net/kjm13182345320/article/details/128172453

相关推荐
维克兜率天1 天前
【维克】均值回归:跌多了会涨,涨多了会跌
开发语言·笔记·python·算法·均值算法·回归·量化
我是章汕呐9 天前
地级市能源消耗量及消耗强度数据【2006-2023年】平衡面板
人工智能·经验分享·算法·回归
智码看视界10 天前
第4篇:循环神经网络及其变体 LSTM/GRU 实战
python·自然语言处理·gru·lstm·循环神经网络·情感分析·梯度消失
我要见SA姐113 天前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
能源革命14 天前
DeepAR(概率自回归模型)介绍
人工智能·数据挖掘·回归
在所不辞兄17 天前
【零基础学智能仿真-16】循环神经网络与LSTM/GRU——学习力学响应的历史记忆
人工智能·rnn·神经网络·gru·lstm·工程技术·工程仿真
不要生病了19 天前
扩散语言模型的“灵活性陷阱”:为什么训练时反而应该按自回归顺序探索?
人工智能·语言模型·回归
统计学小王子20 天前
数学建模国赛倒计时1天——《统计模型精讲(岭回归R语言实战篇)》
数学建模·回归·r语言
泛联新安20 天前
FPGA仿真加速:AccEmu正式亮相,一周的回归,一天跑完
机器学习·fpga开发·数据挖掘·回归·自动化·嵌入式软件·代码漏洞扫描
SimpleLearingAI21 天前
DFL:分布焦点损失——让框回归“学分布“,而不只是“猜数字“
人工智能·数据挖掘·回归