EI级 | Matlab实现VMD-TCN-LSTM-MATT变分模态分解卷积长短期记忆神经网多头注意力多变量时间序列预测

EI级 | Matlab实现VMD-TCN-LSTM-MATT变分模态分解卷积长短期记忆神经网多头注意力多变量时间序列预测

目录

    • EI级 | Matlab实现VMD-TCN-LSTM-MATT变分模态分解卷积长短期记忆神经网多头注意力多变量时间序列预测
      • 预测效果
      • 基本介绍
      • 程序设计
      • 参考资料

预测效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本介绍

1.Matlab实现VMD-TCN-LSTM-MATT变分模态分解卷积长短期记忆神经网多头注意力多变量时间序列预测;

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

3.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测;

4.data为数据集,main1-VMD.m、main2-VMD-TCN-LSTM-MATT.m为主程序,运行即可,所有文件放在一个文件夹;

5.命令窗口输出R2、MSE、MAE、MAPE和RMSE多指标评价;

多头自注意力层 (Multihead-Self-Attention):Multihead-Self-Attention多头注意力机制是一种用于模型关注输入序列中不同位置相关性的机制。它通过计算每个位置与其他位置之间的注意力权重,进而对输入序列进行加权求和。注意力能够帮助模型在处理序列数据时,对不同位置的信息进行适当的加权,从而更好地捕捉序列中的关键信息。在时序预测任务中,注意力机制可以用于对序列中不同时间步之间的相关性进行建模.
首先,VMD技术用于对原始时间序列数据进行预处理。通过VMD,可以将复杂的时间序列信号分解为若干个模态分量,从而提取出原始数据中的有用信息和特征。这有助于降低数据的复杂性,并使得后续的特征提取和预测过程更加高效。

接下来,TCN用于进一步提取时间序列数据中的局部特征。TCN具有扩张因果卷积结构,能够捕捉序列中的长期依赖关系,并通过卷积操作提取出重要的局部特征。这些特征对于后续的预测过程至关重要。

然后,LSTM网络被引入以处理序列数据中的短期和长期依赖关系。能够充分利用序列数据的时序信息。通过将TCN提取的特征输入到LSTM网络中,可以进一步提高模型的预测能力。

最后,多头注意力机制(MATT)被整合到模型中,以进一步提高预测精度。MATT允许模型对序列的不同部分进行注意力运算,从而更准确地捕捉关键信息。通过将独立的注意力输出串联起来并线性地转化为预期维度,MATT能够帮助模型更好地理解输入序列的复杂结构和依赖关系。

程序设计

  • 完整程序和数据获取方式私信博主回复Matlab实现VMD-TCN-LSTM-MATT变分模态分解卷积长短期记忆神经网多头注意力多变量时间序列预测
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行%%  导入数据
res =xlsread('data.xlsx');%%  数据分析
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);f_ = size(P_train, 1);                  % 输入特征维度%%  数据归一化
layer = sequenceInputLayer(f_,Normalization="rescale-symmetric",Name="input");
lgraph = layerGraph(layer);outputName = layer.Name;for i = 1:numBlocksdilationFactor = 2^(i-1);layers = [convolution1dLayer(filterSize,numFilters,DilationFactor=dilationFactor,Padding="causal",Name="conv1_"+i)layerNormalizationLayerdropoutLayer(dropoutFactor) % spatialDropoutLayer(dropoutFactor)convolution1dLayer(filterSize,numFilters,DilationFactor=dilationFactor,Padding="causal")layerNormalizationLayerreluLayerdropoutLayer(dropoutFactor) additionLayer(2,Name="add_"+i)];% Add and connect layers.lgraph = addLayers(lgraph,layers);lgraph = connectLayers(lgraph,outputName,"conv1_"+i);% Skip connection.if i == 1% Include convolution in first skip connection.layer = convolution1dLayer(1,numFilters,Name="convSkip");lgraph = addLayers(lgraph,layer);lgraph = connectLayers(lgraph,outputName,"convSkip");lgraph = connectLayers(lgraph,"convSkip","add_" + i + "/in2");elselgraph = connectLayers(lgraph,outputName,"add_" + i + "/in2");end% Update layer output name.outputName = "add_" + i;
endtempLayers = flattenLayer("Name","flatten");
lgraph = addLayers(lgraph,tempLayers);

参考资料

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 开源到商业(一):Sun 公司收购了 MySQL AB

2008 年 1 月 27 日,开源数据库 MySQL 之父 Monty 在博客上高调宣布 Sun 公司收购了 MySQL AB。在这篇博客里面 Monty 分享了对于开源项目出路的思考,以及作为一个开源骇客对大公司收购的看法。目前国内开源项目正在爆发,而对开源的思考也在逐…

动手写sql 《牛客网80道sql》

第1章:SQL编写基础逻辑和常见问题 基础逻辑 SELECT语句: 选择数据表中的列。FROM语句: 指定查询将要从哪个表中检索数据。WHERE语句: 过滤条件,用于提取满足特定条件的记录。GROUP BY语句: 对结果进行分组。HAVING语句: 对分组后的结果进行条件过滤。O…

【STM32】嵌入式实验二 GPIO 实验 (前三个设计)

1. 按键亮灯 设计 GPIO 实验项目 1,功能:当按键 KB1 按下时,实验板上全彩发光二极管周边 的发光二极管全亮,当按键 KB2 按下时跑马灯 D0 闪亮。 实验要求基于寄存器的GPIO配置,所以需要手动操作寄存器来配…

2024年4月13日美团春招实习试题【第一题:好子矩阵】-题目+题解+在线评测【模拟】

2024年4月13日美团春招实习试题【第一题:好子矩阵】-题目题解在线评测【模拟】 题目描述:输入描述输出描述样例 解题思路一:模拟解题思路二:思路二解题思路三:直接判断 题目描述: 塔子哥定义一个矩阵是”好矩阵”&…

联想小新Air14-2019锐龙版更换硬盘

首先打下D面所有螺丝(内六角螺丝,需要准备螺丝刀),然后从下方翘起整个D面打开如下图 原装为2280长度的海力士硬盘,有空余的2242长度硬盘位 更换前断电,建议拆下电池(扣下电池排线后不好安装&am…

密码学 | 多重签名:基本概念

目录 摘要 1 什么是多重签名? 2 多重签名的作用 2.1 联名账户 2.2 提高安全性 2.3 秘钥备份 3 比特币的多重签名 3.1 对比一 3.2 对比二 3.2.1 线性性 3.2.2 不可延展性 3.2.3 安全性证明 3.2.4 效率高、占用空间少 ⚠️原文:多…

每日OJ题_完全背包④_力扣279. 完全平方数(一维和二维)

目录 力扣279. 完全平方数 问题解析 解析代码 优化代码(相同子问题分析和滚动数组) 力扣279. 完全平方数 279. 完全平方数 难度 中等 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值…

百科不全书之 docker记录

docker记录 1 参考文件2. Docker简介与虚拟机的区别 1 参考文件 参考视频:B站【GeekHour】30分钟Docker入门教程: link 2. Docker简介 Docker是一个用于构建运行 传送 应用程序的平台。 与虚拟机的区别 虚拟机使用了一种叫做虚拟化的技术。每台虚拟机需要占…

固定测斜仪:工程观测的精密利器

在工程观测测量领域,固定测斜仪扮演着至关重要的角色。固定测斜仪,凭借其耐冲击型倾斜传感器、出色的可靠性、快速稳定的特点,以及简洁的安装和智能识别功能,已成为行业内重要工具。其输出信号为RS485数字量,可直接显示…

使用electron打包vuecli创建的项目

下面是我打包的时候才过的所有的坑💣: 首先创建一个vue2的空项目,如果全局安装的vue-cli版本太低,低于3就无法使用vue create命令,必须使用uninstall将之前的卸载掉,在重现安装,之后的就是最近…

握手问题(蓝桥杯)

文章目录 握手问题【问题描述】答案:1204解题思路模拟 握手问题 【问题描述】 小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手&#…

Scrapy框架内存泄漏问题及解决

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、问题背景及原因 官方文档:Debugging memory leaks — Scrapy 2.11.1 documentation Scrapy是一款功能强大的网络爬虫框…

SpringMVC 常用注解介绍

Spring MVC 常用注解介绍 文章目录 Spring MVC 常用注解介绍准备1. RequestMapping1.1 介绍2.2 注解使用 2. 请求参数2.1 传递单个参数2.2 传递多个参数2.3 传递对象2.4 传递数组 3. RequestParam3.1 注解使用3.2 传入集合 4. RequestBody5. PathVariable6. RequestPart7. Rest…

Oracle虚拟列测试

1、新建虚拟列 alter table t_ext add t_viral generated always as (user_id*10) virtual; exec dbms_stats.gather_table_stats( ownname >zxb, tabname >t_ext) 2、查看虚拟列 SELECT TABLE_NAME,COLUMN_NAME, DATA_TYPE, HIDDEN_COLUMN, DATA_DEFAULT FROM USER_…

k8s使用harbor私有仓库镜像 —— 筑梦之路

官方文档: Secret | Kubernetes ImagePullSecrets的设置是kubernetes机制的另一亮点,习惯于直接使用Docker Pull来拉取公共镜像,但非所有容器镜像都是公开的。此外,并不是所有的镜像仓库都允许匿名拉取,也就是说需要身份认证&…

23 种设计模式

设计模式 1、工厂方法 消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、建造者模式 建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一…

【electron3】electron将数据写入本地数据库

安装 yarn add sqlite3 --save连接并调用数据库,创建表 createDB.ts文件内容 const sqlite3 require(sqlite3) const NODE_ENV process.env.NODE_ENV const path require(path) const { app } require(electron) let DB_PATH path.join(app.getAppPath(), /…

【Linux学习】Linux指令(四)

文章标题 🚀zip/unzip指令:🚀tar指令(重要):🚀uname –r指令:🚀关机指令🚀几个常用操作 🚀zip/unzip指令: zip 与 unzip的安装 yum i…

Spring-dataSource事务案例分析-使用事务嵌套时,一个我们容易忽略的地方

场景如下: A_Bean 中的方法a()中调用B_Bean的b();方法都开启了事务,使用的默认的事务传递机制(即:属于同一事务); 如下两种场景会存在较大的差异: 在b()方法中出现了异常,在b()中进…

Android 原生功能与 Vue 交互实现

前端用 Android webview 嵌入 vue 地址,如何在vue 页面中显示 Android 版本号 一.要在vue页面中显示Android版本号 从Android中将该信息传递给Vue应用程序。可以通过使用WebView的Java Bridge来实现此目的。这里是一些可能有用的步骤: 在你的Android代…