独家原创 | Matlab实现CNN-Transformer多变量时间序列预测

SCI一区级 | Matlab实现BO-Transformer-GRU多变量时间序列预测

目录

效果一览







基本介绍

1.Matlab实现CNN-Transformer多变量时间序列预测;

2.运行环境为Matlab2023b及以上;

3.data为数据集,输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测,main.m为主程序,运行即可,所有文件放在一个文件夹;

4.命令窗口输出R2、MSE、RMSE、MAE、MAPE、MBE等多指标评价;

传统的 CNN 在图像处理任务中表现出色,能够有效地提取局部特征,并通过层级结构捕捉图像中的抽象特征。然而,CNN 在处理长期依赖关系时可能存在一些限制,这在自然语言处理等序列数据任务中尤为明显。相比之下,Transformer 模型由于自注意力机制能够有效地捕捉序列数据中的长期依赖关系,因此在自然语言处理任务中取得了重要的突破。然而,Transformer 模型对于图像处理任务来说可能过于复杂,因为图像数据通常具有高维度和局部结构,这导致在处理图像时 Transformer 的计算量较大。为了充分利用 CNN 在图像处理中的优势和 Transformer 在捕捉长期依赖关系中的优势,CNN-Transformer 模型将输入数据首先通过 CNN 进行局部特征提取。CNN 层可以有效地捕捉图像中的局部模式和特征。然后,提取的特征被输入到 Transformer 模型中,以便利用其自注意力机制来捕捉全局的长期依赖关系。

程序设计

  • 完整程序和数据下载私信博主回复Matlab实现CNN-Transformer多变量时间序列预测
clike 复制代码
%%  数据集分析
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);

%%  数据平铺
%   将数据平铺成1维数据只是一种处理方式
%   也可以平铺成2维数据,以及3维数据,需要修改对应模型结构
%   但是应该始终和输入层数据结构保持一致
p_train =  double(reshape(p_train, f_, 1, 1, M));
p_test  =  double(reshape(p_test , f_, 1, 1, N));
t_train =  double(t_train)';
t_test  =  double(t_test )';


%%  构造网络结构
layers = [
 imageInputLayer([f_, 1, 1])     % 输入层 输入数据规模[f_, 1, 1]
 
 convolution2dLayer([3, 1], 16)  % 卷积核大小 3*1 生成16张特征图
 batchNormalizationLayer         % 批归一化层
 reluLayer                       % Relu激活层
 
 convolution2dLayer([3, 1], 32)  % 卷积核大小 3*1 生成32张特征图
 batchNormalizationLayer         % 批归一化层
 reluLayer                       % Relu激活层

 dropoutLayer(0.2)               % Dropout层
 fullyConnectedLayer(1)          % 全连接层
 regressionLayer];               % 回归层

参考资料

1\] https://blog.csdn.net/kjm13182345320/article/details/128163536?spm=1001.2014.3001.5502 \[2\] https://blog.csdn.net/kjm13182345320/article/details/128151206?spm=1001.2014.3001.5502

相关推荐
不枯石16 分钟前
Matlab通过GUI实现点云的随机一致性(RANSAC)配准
开发语言·图像处理·算法·计算机视觉·matlab
牛马的人生20 分钟前
MATLAB模块库入门:提升你的工程分析效率
开发语言·其他·matlab
Hcoco_me9 小时前
YOLO入门教程(番外):卷积神经网络—图像卷积
深度学习·yolo·cnn
之墨_13 小时前
【大语言模型】—— Transformer的QKV及多头注意力机制图解解析
人工智能·语言模型·transformer
东方芷兰16 小时前
LLM 笔记 —— 02 大语言模型能力评定
人工智能·笔记·python·神经网络·语言模型·自然语言处理·cnn
不枯石18 小时前
Matlab通过GUI实现点云的Loss配准
图像处理·算法·计算机视觉·matlab
agilearchitect1 天前
MATLAB线性代数函数完全指南
线性代数·其他·决策树·matlab
不枯石1 天前
Matlab通过GUI实现点云的ICP配准
linux·前端·图像处理·计算机视觉·matlab
haing20192 天前
使用matlab进行牛顿迭代求函数极值的方法
开发语言·matlab·牛顿迭代
kernelknight12 天前
MATLAB For循环详解:从入门到精通的完整指南
开发语言·其他·matlab