回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测

目录

    • [回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测](#回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测)

预测效果

基本介绍

CNN-BiGRU-Attention,即卷积神经网络(CNN)结合双向门控循环单元(BiGRU)并融合注意力机制(Attention)的多输入单输出回归预测模型,是一种强大的深度学习架构,特别适用于处理序列数据。以下是对该模型的详细解析:

一、模型组成

卷积神经网络(CNN)

功能:用于提取输入序列的局部特征。

工作方式:通过滑动窗口的方式,将输入序列分成多个子序列,并使用卷积操作提取每个子序列的特征。这些特征可以捕捉到输入序列中的局部模式和结构信息。

双向门控循环单元(BiGRU)

功能:用于捕捉输入序列的上下文信息。

组成:由两个方向的门控循环单元组成,分别从前向和后向对输入序列进行处理。这样可以同时考虑到过去和未来的信息,更好地理解序列中的依赖关系。

特点:具有重置门和更新门,分别有助于捕获序列中的短期和长期依赖关系。

注意力机制(Attention)

功能:增强模型对输入序列的关注度,使模型能够更加关注重要的信息。

工作方式:通过计算输入序列中每个位置的权重,然后将这些权重与对应位置的特征进行加权求和,得到最终的上下文向量。这个上下文向量会被传递给下一个阶段的模型进行进一步处理。

二、模型优势

特征提取能力:CNN能够提取输入序列的局部特征,这些特征对于理解序列数据的结构和模式至关重要。

上下文捕捉能力:BiGRU能够同时处理前向和后向的序列信息,从而捕捉到更全面的上下文信息。

注意力引导:注意力机制使模型能够动态地调整对不同位置信息的重视程度,从而更加准确地捕捉到关键信息。

三、应用场景

CNN-BiGRU-Attention模型适用于各种需要处理序列数据的回归预测任务,如时间序列预测、金融预测、气象预测等。

程序设计

clike 复制代码
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc  

%% 导入数据
data =  readmatrix('day.csv');
data = data(:,3:16);
res=data(randperm(size(data,1)),:);    %此行代码用于打乱原始样本,使训练集测试集随机被抽取,有助于更新预测结果。
num_samples = size(res,1);   %样本个数


% 训练集和测试集划分
outdim = 1;                                  % 最后一列为输出
num_size = 0.7;                              % 训练集占数据集比例
num_train_s = round(num_size * num_samples); % 训练集样本个数
f_ = size(res, 2) - outdim;                  % 输入特征维度


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
numFeatures = size(p_train,1);

lgraph = layerGraph();

% 添加层分支



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

%  训练
tic
net = trainNetwork(vp_train, vt_train, lgraph, options);
toc
%analyzeNetwork(net);% 查看网络结构
%  预测
t_sim1 = predict(net, vp_train); 
t_sim2 = predict(net, vp_test); 

%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
T_train1 = T_train;
T_test2 = T_test;

参考资料

1\] https://blog.csdn.net/kjm13182345320/article/details/128267322?spm=1001.2014.3001.5501 \[2\] https://blog.csdn.net/kjm13182345320/article/details/128234920?spm=1001.2014.3001.5501

相关推荐
yuanyuan2o23 小时前
【深度学习】全连接、卷积神经网络
人工智能·深度学习·cnn
民乐团扒谱机4 小时前
【微实验】机器学习之集成学习 GBDT和XGBoost 附 matlab仿真代码 复制即可运行
人工智能·机器学习·matlab·集成学习·xgboost·gbdt·梯度提升树
Liue612312314 小时前
自卸车多部件识别 _ Mask R-CNN改进模型实现(Caffe+FPN)_1
r语言·cnn·caffe
机器学习之心5 小时前
TCN-Transformer-BiGRU组合模型回归+SHAP分析+新数据预测+多输出!深度学习可解释分析
深度学习·回归·transformer·shap分析
Evand J5 小时前
TDOA(到达时间差)的GDOP和CRLB计算的MATLAB例程,论文复现,附参考文献。GDOP:几何精度因子&CRLB:克拉美罗下界
开发语言·matlab·tdoa·crlb·gdop
爱吃泡芙的小白白8 小时前
深入解析CNN中的BN层:从稳定训练到前沿演进
人工智能·神经网络·cnn·梯度爆炸·bn·稳定模型
机器学习之心HML8 小时前
MATLAB豆渣发酵工艺优化 - 基于响应面法结合遗传算法
matlab
水月wwww18 小时前
【深度学习】卷积神经网络
人工智能·深度学习·cnn·卷积神经网络
摘星编程1 天前
CANN ops-nn Pooling算子解读:CNN模型下采样与特征提取的核心
人工智能·神经网络·cnn
慢半拍iii1 天前
从零搭建CNN:如何高效调用ops-nn算子库
人工智能·神经网络·ai·cnn·cann