当前位置: 首页 > news >正文

多层多输入的CNN-LSTM时间序列回归预测(卷积神经网络-长短期记忆网络)——附代码

目录

摘要:

卷积神经网络(CNN)的介绍:

长短期记忆网络(LSTM)的介绍:

CNN-LSTM:

 Matlab代码运行结果:

本文Matlab代码+数据分享: 


摘要:

本文使用CNN-LSTM混合神经网络对时间序列数据进行回归预测。本模型的输入数据个数可以自行选择,可以为多输入、也可以为单输入,使用Matlab自带的数据集进行训练,可以轻松的更换数据集以实现自己的功能。首先使用CNN网络对输入数据进行深度特征提取,然后将提取到的抽象特征进行压缩,将压缩后的数据输入后续的LSTM网络进行回归预测。相比一般的单层网络结构,本文所提出的CNN-LSTM包含了三层CNN和三层LSTM网络,因此本文网络预测的准确度有了一定的提升。

本文代码结构清晰,实现效果很好,出图美观,适合初学者进行模仿学习或用于数学建模方面。

有关于CNN-LSTM进行多输入特征分类的代码,可以看我之前发的文章。

卷积神经网络(CNN)的介绍:

卷积神经网络(ConvolutionalNeuralNetworks,CNN)能有效的提取二维图像和高维数据的特征。卷积神经网络具有减少内存占用、减少网络参数、缓解过拟合问题等优势,因此基于卷积神经网络时间序列预测模型。

卷积神经网络由输入层、隐含层和输出层组成,其中隐含层又分为卷积层、池化层和全连接层。结构如图:

(1)输入层:

输入层的作用是预处理输入的图像或数据。预处理方法能够减少数据量纲的差异对模型的影响,可以提高模型的学习效率。

(2)隐含层:

隐含层包括卷积层、池化层、全连接层,作用是完成特征的提取和学习。

(a)卷积层:卷积层中最重要的是卷积核。卷积核的个数、大小和形状,需要根据数据或图像的实际情况确定。一维卷积通常用来处理一维、二维数据或图像,二维卷积常用于二维数据矩阵的卷积操作,三维卷积常用于医学及视频处理领域的三维数据。步长是指进行卷积计算时,每次移动的格数。即步长为几时,卷积核每次向右移动几个格子。在模型训练时,可以根据需要改变步长、卷积核的大小和数量。卷积操作的具体步骤以图举例说明。图中左侧的4×4的矩阵代表输入,中间3×3的矩阵为卷积核,步长设为1,则右侧的矩阵为特征结果图。卷积操作过程为:将卷积核在输入数据或图像上每次先向右平移一个步长,将卷积核矩阵和输入数据对应位置矩阵进行内积计算,输出一个数值,放在特征结果图的对应位置上。水平方向完成卷积计算后再向下移动一个步长,重复卷积计算步骤,最终得到输入数据或图像的特征结果图,

(b)池化层:池化层也称采样层,主要作用是采样降维,即在不改变数据或图像特征的前提下,将数据的维数尽可能地降低。通过池化函数,将特征图某点替换为其相邻输出的全局特征。按照滤波器映射范围内像素点取值的不同,可分为平均池化和最大池化。平均池化:计算所有非零数据的平均值并用作输出。以2×2池化为例,左侧为卷积操作后得到的特征结果图,池化滤波器在特征结果图上每次平移两个步长,得到特征结果图被划分成四部分,分别计算非零像素点的平均值,并作为该位置的输出。

(c)全连接层:全连接层的作用是将特征映射到样本标记空间。通过全连接层将神经元权重连接,并向下一层网络传递数据信息。即通过矩阵乘法对特征向量加权求和计算,并通过激活函数得到全连接层的输出

(3)输出层:

增加一层回归层,并将全连接层的输出值输入到回归层中,得到神经网络的最后输出,即神经网络非线性映射的非线性变换结果。

长短期记忆网络(LSTM)的介绍:

LSTM和循环神经网络都是链式结构,其特殊性在于LSTM加入门结构来存储细胞的状态。因为门结构的存在,随着迭代层数的增加,激活函数的反向误差仍能向下传递,避免长期依赖问题

LSTM是RNN的一种变形,隐含层加入忘记门、输入门和输出门使其不仅能接受上一层神经元的输出,还能通过门结构选择性的保留历史时刻的有用信息。

LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为它可以记忆不定时间长度的数值,区块中有一个gate能够决定input是否重要到能被记住及能不能被输出output。

最左边函数依情况可能成为区块的input,右边三个会经过gate决定input是否能传入区块,左边第二个为inputgate,如果这里产出近似于零,将把这里的值挡住,不会进到下一层。左边第三个是forgetgate,当这产生值近似于零,将把区块里记住的值忘掉。第四个也就是最右边的input为outputgate,他可以决定在区块记忆中的input是否能输出。

CNN-LSTM:

考虑到CNN和LSTM分别在提取高维数据特征信息和处理时间序列数据方面的优势,设计CNN-LSTM模型来预测实现序列。

卷积神经网络特有的卷积核池化操作能很好的提取数据的特征信息,而长短期记忆神经网络具有很强的记忆性,对序列化数据处理效果较好。基于两种神经网络模型的优势考虑,将两种模型组合。

 Matlab代码运行结果:

 

本文Matlab代码+数据分享: 

相关文章:

多层多输入的CNN-LSTM时间序列回归预测(卷积神经网络-长短期记忆网络)——附代码

目录 摘要: 卷积神经网络(CNN)的介绍: 长短期记忆网络(LSTM)的介绍: CNN-LSTM: Matlab代码运行结果: 本文Matlab代码数据分享: 摘要: 本文使用CNN-LSTM混合神经网…...

mybatis中获取参数的两种方式:${}和#{}

目录 1.#{} 2.${} 3.总结 1.#{} 本质是占位符赋值 示例及执行结果: 结论:通过执行结果可以看到,首先对sql进行了预编译处理,然后再传入参数,有效的避免了sql注入的问题,并且传参方式也比较简单&#xf…...

复制带随机指针的复杂链表

目录一、题目题目链接二、题目分析三、解题思路四、解题步骤4.1 复制结点并链接到对应原节点的后面4.2 处理复制的结点的随机指针random4.3 分离复制的链表结点和原链表结点并重新链接成为链表五、参考代码六、总结一、题目题目链接 ​​​​ ​ 题目链接:https://…...

【基于协同过滤算法的推荐系统项目实战-2】了解协同过滤推荐系统

本文目录1、推荐系统的关键元素1.1 数据1.2 算法1.3 业务领域1.4 展示信息2、推荐算法的主要分类2.1 基于关联规则的推荐算法基于Apriori的算法基于FP-Growth的算法2.2 基于内容的推荐算法2.3 基于协同过滤的推荐算法3、推荐系统常见的问题1、冷启动2、数据稀疏3、不断变化的用…...

线程安全(重点)

文章目录一.线程安全的概念1.1 线程安全的概念1.2 线程不安全的原因1.3 解决线程不安全二.synchronized-monitor lock(监视器锁)2.1 synchronized的特性(1)互斥(2)刷新内存(3)可重入2.2 synchronied使用方法1.直接修饰普通方法:2.修饰静态方法:3.修饰代码块:三.死锁3.1死锁的情…...

软件测试面试找工作你必须知道的面试技巧(帮助超过100人成功通过面试)

目录 问题一:“请你自我介绍一下” 问题二:“谈谈你的家庭情况” 问题三:“你有什么业余爱好?” 问题四:“你最崇拜谁?” 问题五:“你的座右铭是什么?” 问题六:“谈谈你的缺点” 问题七&#xff…...

Python快速入门:类、文件操作、正则表达式

类、文件操作、正则表达式1. 类2. 文件操作3. 正则表达式1. 类 类是用来描述具有相同的属性和方法的集合,定义了该集合中每个对象共有的属性和方法,对象是类的实例,可以调用类的方法。 定义类时,如有父类,则写在类名…...

java-day01

程序就是有序指令的集合 cmd执行java程序,javac Test.java,java Test java技术平台: javaSE标准版,javaEE企业版,javaME小型版 java语言面向对象的(oop),java跨平台性的(…...

玩转 Node.js 集群

一、介绍 Node 在 v0.8 时直接引入了 cluster 模块,用以解决多核 CPU 的利用率问题,同时也提供了较完善的 API,用以处理进程的健壮性问题。 cluster 模块调用 fork 方法来创建子进程,该方法与 child_process 中的 fork 是同一个…...

Day909.MySQL 不同的自增 id 达到上限以后的行为 -MySQL实战

MySQL 不同的自增 id 达到上限以后的行为 Hi,我是阿昌,今天学习记录的是关于MySQL 不同的自增 id 达到上限以后的行为的内容。 MySQL 里有很多自增的 id,每个自增 id 都是定义了初始值,然后不停地往上加步长。 虽然自然数是没有…...

JVM学习.01 内存模型

1、前言对于C、C程序员来说,在内存管理领域,他们拥有对象的“所有权”。从对象建立到内存分配,不仅需要照顾到对象的生,还得照顾到对象的消亡。背负着每个对象生命开始到结束的维护和管理责任。对于JAVA程序来说,因为J…...

R+VIC模型应用及未来气候变化模型预测

RVIC模型融合实践技术应用及未来气候变化模型预测在气候变化问题日益严重的今天,水文模型在防洪规划,未来预测等方面发挥着不可替代的重要作用。目前,无论是工程实践或是科学研究中都存在很多著名的水文模型如SWAT/HSPF/HEC-HMS等。虽然&…...

搞懂vue 的 render 函数, 并使用

render函数是什么 简单的说,在vue中我们使用模板HTML语法组建页面的,使用render函数我们可以用js语言来构建DOM 因为vue是虚拟DOM,所以在拿到template模板时也要转译成VNode(虚拟节点)的函数,而用render函数构建DOM,vu…...

【Linux】GDB的安装与使用

安装安装gdb的具体步骤如下:1、查看当前gdb安装情况rpm -qa | grep gdb如果有,则可以先删除:rpm -e --nodeps 文件名如果没有,则进行下一步。2、下载gdb源码包或者直接apt安装。apt命令安装:sudo apt install gdb源码包…...

MySQL索引特性

文章目录为什么要有索引?认识磁盘磁盘的结构磁盘的盘片结构定位扇区磁盘随机访问 (Random Access)与连续访问 (Sequential Access)MySQL与磁盘交互索引的理解测试主键索引索引的原理索引结构是否可以使用其他数据结构B树 vs B树聚簇索引 vs 非聚簇索引为什么要有索引…...

Python 面向对象编程——类定义与对象

<类定义与对象声明> 面向对象最重要的概念就是类&#xff08;Class&#xff09;和实例&#xff08;Instance&#xff09;&#xff0c;必须牢记类是抽象的模板&#xff0c;比如Student类&#xff0c;而实例是根据类创建出来的一个个具体的“对象”&#xff0c;每个对象都拥…...

基于 Apache Flink 的实时计算数据流业务引擎在京东零售的实践和落地

摘要&#xff1a;本文整理自京东零售-技术研发与数据中心张颖&闫莉刚在 ApacheCon Asia 2022 的分享。内容主要包括五个方面&#xff1a; 京东零售实时计算的现状实时计算框架场景优化&#xff1a;TopN场景优化&#xff1a;动线分析场景优化&#xff1a;FLINK 一站式机器学…...

【JavaEE】如何将JavaWeb项目部署到Linux云服务器?

写在前面 大家好&#xff0c;我是黄小黄。不久前&#xff0c;我们基于 servlet 和 jdbc 完善了博客系统。本文将以该系统为例&#xff0c;演示如何将博客系统部署到 Linux 云服务器。 博客系统传送门&#xff1a; 【JavaEE】前后端分离实现博客系统&#xff08;页面构建&#…...

Mysql常用命令

mysql连接&#xff1a; [roothost]# mysql -u root -p Enter password:******创建数据库&#xff1a; CREATE DATABASE 数据库名&#xff1b; 删除数据库&#xff1a; drop database 数据库名; 使用mysqladmin删除数据库&#xff1a; [roothost]# mysqladmin -u root -p dr…...

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(4)

目录 写在前面&#xff1a; 题目&#xff1a;P1149 [NOIP2008 提高组] 火柴棒等式 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 解题思路&#xff1a; …...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...