多维时序 | MATLAB实现GRU多变量时间序列预测

多维时序 | MATLAB实现GRU多变量时间序列预测

目录

    • 多维时序 | MATLAB实现GRU多变量时间序列预测
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

1
2

3

4

基本介绍

本次运行测试环境MATLAB2020b,MATLAB实现GRU多变量时间序列预测,门控循环单元。GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。实际中很多序列的变化规律都会受到其他序列的影响,比如在研究居民的人均消费序列时,由于消费会受收入的影响,如果能把收入也纳入研究范围,就能得到更精确的消费模型,这就涉及多元时间序列分析。

程序设计

  • 完整程序私信博主。
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% define the Deeper GRU networks
numFeatures= 1;%输入节点
numResponses = 1;%输出节点
numHiddenUnits = 500;%隐含层神经元节点数 
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%构建GRU网络 
layers = [sequenceInputLayer(numFeatures)
 gruLayer(numHiddenUnits) %GRU函数 
dropoutLayer(0.2)%丢弃层概率 
 reluLayer('name','relu')% 激励函数 RELU 
fullyConnectedLayer(numResponses)
regressionLayer];
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
XTrain=XTrain';
YTrain=YTrain';
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% GRU结构参数 
options = trainingOptions('adam', ... % adam优化算法 自适应学习率 
'MaxEpochs',500,...% 最大迭代次数 
'MiniBatchSize',5, ...%最小批处理数量 
'GradientThreshold',1, ...%防止梯度爆炸 
'InitialLearnRate',0.005, ...% 初始学习率 
'LearnRateSchedule','piecewise', ...
 'LearnRateDropPeriod',125, ...%125次后 ,学习率下降 
'LearnRateDropFactor',0.2, ...%下降因子 0.2
'ValidationData',{XTrain,YTrain}, ...
 'ValidationFrequency',5, ...%每五步验证一次 
'Verbose',1, ...
 'Plots','training-progress');
%% 训练GRU网络 
net = trainNetwork(XTrain,YTrain,layers,options);
%% 测试样本标准化处理 
dataTestStandardized = (data_Test - mu) / sig;
XTest = dataTestStandardized(1:end-1,:)%测试输入 
YTest = data_Test(2:end,:);%测试输出 
————————————————
版权声明:本文为CSDN博主「机器学习之心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

参考资料

[1] https://blog.csdn.net/kjm13182345320/category_10914353.html?spm=1001.2014.3001.5482
[2] https://blog.csdn.net/kjm13182345320/article/details/127601808

你可能感兴趣的:(时间序列,GRU,多变量时间序列,时间序列预测)