负荷预测 | Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测

目录

效果一览


基本介绍

1.Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测;

2.单变量时间序列数据集,采用前12个时刻预测未来96个时刻的数据;

3.excel数据方便替换,运行环境matlab2023及以上,展示最后96个时间步的预测对比图,评价指标MAE、MAPE、RMSE、MSE、R2;

4.程序语言为matlab,程序可出预测效果图,迭代优化图,相关分析图;

5.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。

TCN-BiGRU-Attention是一种用于时间序列多步预测的深度学习模型,它结合了Temporal Convolutional Networks (TCN)、双向门控循环单元 (BiGRU) 和注意力机制 (Attention) 的特性。

在这个模型中,输入是一个时间序列,并且预测是多步的,也就是说,我们希望通过给定的历史时间序列数据来预测未来的多个时间步。以下是该模型的一般流程:

输入编码层 (Input Encoding): 首先,原始的时间序列数据经过一个编码层,可以使用一维卷积神经网络 (Conv1D) 或者 TCN 来提取特征。这一步旨在捕捉时间序列中的局部和全局模式。

双向门控循环单元 (BiGRU): 编码层的输出被传递给一个双向门控循环单元 (BiGRU) 层。BiGRU 可以学习时间序列中的时序依赖性和长期依赖关系。

注意力机制 (Attention): BiGRU 层的输出被输入到一个注意力机制中,以便模型可以自动关注时间序列中最相关的部分。注意力机制有助于模型更好地理解输入序列中的重要时间步。

解码层 (Decoding): 注意力机制的输出被传递到解码层,解码层可以是一个全连接层或者其他适合预测任务的层。解码层将注意力机制的输出转换为多个时间步的预测结果。

整个模型的训练过程通常使用监督学习的方法,即使用已知的输入和对应的目标输出来训练模型。损失函数可以选择适合多步预测任务的损失函数,例如均方误差 (Mean Squared Error)。

需要注意的是,这只是TCN-BiGRU-Attention模型的一种可能实现方式,实际上可以根据具体问题的需求进行修改和调整。

程序设计

  • 完整程序和数据获取方式:私信博主回复Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测
python 复制代码
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);

P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
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);

%  格式转换
for i = 1 : M 
    vp_train{i, 1} = p_train(:, i);
    vt_train{i, 1} = t_train(:, i);
end

for i = 1 : N 
    vp_test{i, 1} = p_test(:, i);
    vt_test{i, 1} = t_test(:, i);
end
lgraph = connectLayers(lgraph,outputName,"flatten");
lgraph = connectLayers(lgraph,"flatten","gru1");
lgraph = connectLayers(lgraph,"flatten","flip3");
lgraph = connectLayers(lgraph,"gru1","concat/in1");
lgraph = connectLayers(lgraph,"gru2","concat/in2");


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

参考资料

1\] http://t.csdn.cn/pCWSp \[2\] https://download.csdn.net/download/kjm13182345320/87568090?spm=1001.2014.3001.5501 \[3\] https://blog.csdn.net/kjm13182345320/article/details/129433463?spm=1001.2014.3001.5501

相关推荐
西西弗Sisyphus8 天前
从零实现Transformer:第 4 部分 - Residual Connection的两种实现 Pre-LN 和 Post-LN
transformer·attention·unsqueeze·self-attention·残差·residual·squeeze
西西弗Sisyphus8 天前
从零实现Transformer:第 9 部分 - 推理(Inference )
transformer·attention·注意力机制·注意力·decoder·self-attention
机器学习之心8 天前
多工况车速数据集训练BiLSTM-Attention用于车速预测,输出未来多个时间步车速,MATLAB代码
matlab·attention·bilstm·车速预测
机器学习之心14 天前
CNN-xLSTM-Attention 回归模型:从原理到 SHAP 可解释性全解析
回归·cnn·attention·cnn-xlstm
庞轩px18 天前
Transformer的核心思想——Attention机制直观理解
人工智能·rnn·深度学习·transformer·attention·q-k-v
索木木19 天前
Flash Attention反向梯度优化显存
人工智能·机器学习·大模型·attention·训练·显存优化·aiinfra
西西弗Sisyphus19 天前
从零实现Transformer:第 4 部分 - 残差连接、层归一化与前馈网络(Add & Norm, Feed-Forward)
resnet·transformer·attention·注意力机制·注意力
西西弗Sisyphus21 天前
从零实现Transformer:第 2 部分 - 缩放点积注意力(Scaled Dot-Product Attention)
transformer·attention·注意力机制·注意力
西西弗Sisyphus23 天前
Transformer 架构里关于 Attention 概念的澄清
transformer·attention·注意力机制·注意力·self-attention
空巢青年_rui1 个月前
【翻译】现代LLM中注意力变体的可视化指南:从MHA和GQA到MLA、稀疏注意力机制和混合架构
llm·attention·mha·gqa·dsa·mla·swa