基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

LSTM:

GRU

2.算法运行软件版本

matlab2022a

3.部分核心程序

复制代码
%构建GRU网络模型
layers = [ ...
    sequenceInputLayer(N_feature)
    gruLayer(N_hidden)
    fullyConnectedLayer(N_Rpes)
    regressionLayer
    ]; 
% 定义训练选项
options = trainingOptions('adam', ...
    'MaxEpochs',250, ...
    'GradientThreshold',1, ...
    'InitialLearnRate',0.005, ...
    'MiniBatchSize',50, ...
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',90, ...
    'LearnRateDropFactor',0.2, ...
    'Verbose',false, ...
    'Plots','training-progress');    


% 初始化RMSE、MAE和MAPE
Rmse2 = [];
Mae2  = [];
Mape2 = [];
 

XTestIp          = TT(1:Num_dats+1);
% 训练GRU网络模型
net              = trainNetwork([XTrainIp(1:end-1);XTestIp(1:end-1)],XTestIp(2:end),layers,options); 
% 使用训练好的模型进行预测
[net,YPred]      = predictAndUpdateState(net,[XTrainIp(end);XTestIp(end)]);
numTimeStepsTest = numel(YTestIp);
for i = 2:numTimeStepsTest                                                
    [net,YPred(:,i)] = predictAndUpdateState(net,[YTrainIp(i-1);YPred(:,i-1)],'ExecutionEnvironment','cpu');
end                                                                        
% 对预测结果进行反归一化
YPred   = (Vmax2-Vmin2)*YPred + Vmin2;                                             
YTest   = YTestIp(1:end);
YTest   = (Vmax2-Vmin2)*YTest + Vmin2;           
% 计算RMSE、MAE和MAPE
Rmse2   = (sqrt(mean((YPred-YTest).^2)))*100/(max(YTest))
Mae2    = mean(abs(YPred-YTest))
Mape2   = mean(abs((YPred(YTest~=0)-YTest(YTest~=0)))./YTest(YTest~=0))*100         
% 计算MAPE绝对误差
mape1   =((YPred(YTest~=0)-YTest(YTest~=0))./YTest(YTest~=0));
% 反归一化测试集输入数据
XTestIp = (Vmax2-Vmin2)*XTestIp + Vmin2;  
51

4.算法理论概述

门控循环单元(Gated Recurrent Unit,简称GRU)是一种用于序列建模和预测的递归神经网络(RNN)变体。GRU通过引入门控机制,克服了传统RNN在处理长序列时的梯度消失问题,并在许多任务中取得了优异的性能。下面将详细介绍GRU的原理、数学公式以及其在时间序列预测中的应用。GRU是一种在长序列上具有较好表现的递归神经网络,通过门控机制有效地捕捉序列中的长距离依赖关系。与长短时记忆网络(LSTM)相比,GRU使用更少的门控单元,因此参数较少,更易于训练。

GRU的核心在于两个门控单元:重置门(Reset Gate)和更新门(Update Gate)。

  • 重置门(r_trt)用于控制是否将过去的信息纳入当前状态的计算中。
  • 更新门(z_tzt)用于控制过去状态和当前输入之间的权重。

GRU的状态更新公式如下:

GRU在时间序列预测中具有广泛应用,它可以根据过去的观测值来预测未来的值。通过对序列数据进行训练,GRU可以学习到数据中的模式和趋势,并用于预测时间序列的下一个步骤。例如,在股票价格预测、天气预测、自然语言处理等领域中,GRU被用来捕捉序列数据中的关键信息,从而进行准确的预测。

总结: GRU是一种门控循环神经网络,通过引入更新门和重置门的机制,有效地解决了传统RNN的梯度消失问题,能够捕捉序列数据中的长距离依赖关系。它在时间序列预测等任务中表现优异,为处理序列数据提供了强大的工具。

5.算法完整程序工程

OOOOO

OOO

O

相关推荐
啊哈哈哈哈哈啊哈哈1 小时前
R3打卡——tensorflow实现RNN心脏病预测
人工智能·深度学习·学习
知来者逆2 小时前
计算机视觉——深度学习图像处理中目标检测平均精度均值(mAP)与其他常用评估指标
图像处理·深度学习·目标检测·计算机视觉·map
KangkangLoveNLP2 小时前
深度探索:策略学习与神经网络在强化学习中的应用
人工智能·深度学习·神经网络·学习·机器学习·自然语言处理
徐行tag3 小时前
DIA——边缘检测
深度学习·计算机视觉·cnn
橙色小博3 小时前
GPT:Transformer的专精产品
人工智能·python·gpt·深度学习·神经网络·transformer
pythonSuperman3 小时前
Correlation Matrix of Model Logits
人工智能·深度学习·机器学习
神经星星3 小时前
在线教程丨字节开源 InfiniteYou 图像生成框架,实现高保真面部特征迁移
人工智能·深度学习·机器学习
ayiya_Oese3 小时前
[环境配置] 2. 依赖库安装
人工智能·python·深度学习·神经网络·目标检测·机器学习·计算机视觉
kaka.liulin -study5 小时前
Multi Agents Collaboration OS:数据与知识协同构建数据工作流自动化
人工智能·python·深度学习·数据分析
思陌Ai算法定制5 小时前
图神经网络+多模态:视频动作分割的轻量高效新解法
人工智能·深度学习·神经网络·机器学习·音视频·医学影像