多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测

多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测

目录

    • 多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测
      • 效果一览
      • 基本介绍
      • 模型搭建
      • 程序设计
      • 参考资料

效果一览

1
2
3
4
5
6
7
8

9
10
11
12

基本介绍

MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测。基于贝叶斯(bayes)优化卷积神经网络-长短期记忆网络(CNN-LSTM)多变量时间序列预测,BO-CNN-LSTM/Bayes-CNN-LSTM多变量时间序列预测模型。
1.优化参数为:学习率,隐含层节点,正则化参数。
2.评价指标包括:R2、MAE、MSE、RMSE和MAPE等。
3.运行环境matlab2020b及以上。
4.data为数据集,格式为excel,4个输入特征,1个输出特征,考虑历史特征的影响,多变量时间序列预测,MainBO_CNN_LSTMNTS.m是主程序,其余为函数文件,无需运行;

模型搭建

  • CNN-LSTM模型结合了CNN和LSTM的优点,CNN-LSTM网络模型如图1所示,本文使用的CNN-LSTM模型的第一部分是由卷积层和最大值组成的CNN部分池化层,对原始数据进行预处理并输入CNN卷积层,利用卷积核自适应提取生命特征,卷积层将遍历输入信息,将卷积核权重与局部序列进行卷积运算体管信息得到初步的特征矩阵,比原始序列数据(矩阵)更具表现力。
  • 本文使用的池化层是最大池化层,池化操作对提取的特征进行数据降维,避免模型过拟合,保留主要特征。最大池化层将前一个卷积层得到的特征矩阵作为输入,在这个矩阵上滑动一个池化窗口,在每一次滑动中取池化窗口的最大值,输出一个更具表现力的特征矩阵。
  • 池化后,连接一个 LSTM 层,提取相关向量由CNN构造成一个长期的时间序列作为LSTM的输入数据。卷积层将卷积层的数据展平(Flatten),模型中加入Flatten,将(height,width,channel)的数据压缩成一个长高宽通道的一维数组,然后我们可以添加直接密集层。
  • 对卷积池化数据压缩特征操作,多个卷积特征提取框架提取的特征融合或从输出层融合,全连接层聚合学习到的特征,激活函数使用Relu。
  • 通常,在模型训练过程中需要对超参数进行优化,为模型选择一组最优的超参数,以提高预测的性能和有效性。 凭经验设置超参数会使最终确定的模型超参数组合不一定是最优的,这会影响模型网络的拟合程度及其对测试数据的泛化能力。

8

  • 伪代码
    9

10

  • 通过调整优化算法调整模型参数,学习重复率和贝叶斯优化超参数来调整模型参数。

程序设计

  • 完整程序和数据获取方式1:私信博主,同等价值程序兑换;
  • 完整程序和数据下载方式2(订阅《组合优化》专栏,同时获取《组合优化》专栏收录的所有程序,数据订阅后私信我获取):多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测
%%  优化算法参数设置
%参数取值上界(学习率,隐藏层节点,正则化系数)
%%  贝叶斯优化参数范围
optimVars = [
    optimizableVariable('NumOfUnits', [10, 50], 'Type', 'integer')
    optimizableVariable('InitialLearnRate', [1e-3, 1], 'Transform', 'log')
    optimizableVariable('L2Regularization', [1e-10, 1e-2], 'Transform', 'log')];

%%  贝叶斯优化网络参数
bayesopt(fitness, optimVars, ...    % 优化函数,和参数范围
        'MaxTime', Inf, ...                      % 优化时间(不限制) 
        'IsObjectiveDeterministic', false, ...
        'MaxObjectiveEvaluations', 10, ...       % 最大迭代次数
        'Verbose', 1, ...                        % 显示优化过程
        'UseParallel', false);

%%  得到最优参数
NumOfUnits       = BayesObject.XAtMinEstimatedObjective.NumOfUnits;       % 最佳隐藏层节点数
InitialLearnRate = BayesObject.XAtMinEstimatedObjective.InitialLearnRate; % 最佳初始学习率
L2Regularization = BayesObject.XAtMinEstimatedObjective.L2Regularization; % 最佳L2正则化系数
%% 创建混合CNN-LSTM网络架构
% 输入特征维度
numFeatures  = f_;
% 输出特征维度
numResponses = 1;
FiltZise = 10;
%  创建"CNN-LSTM"模型
    layers = [...
        % 输入特征
        sequenceInputLayer([numFeatures 1 1],'Name','input')
        sequenceFoldingLayer('Name','fold')
        % CNN特征提取
        convolution2dLayer([FiltZise 1],32,'Padding','same','WeightsInitializer','he','Name','conv','DilationFactor',1);
        batchNormalizationLayer('Name','bn')
        eluLayer('Name','elu')
        averagePooling2dLayer(1,'Stride',FiltZise,'Name','pool1')
        % 展开层
        sequenceUnfoldingLayer('Name','unfold')
        % 平滑层
        flattenLayer('Name','flatten')
        % LSTM特征学习
        lstmLayer(50,'Name','lstm1','RecurrentWeightsInitializer','He','InputWeightsInitializer','He')
        % LSTM输出
        lstmLayer(NumOfUnits,'OutputMode',"last",'Name','bil4','RecurrentWeightsInitializer','He','InputWeightsInitializer','He')
        dropoutLayer(0.25,'Name','drop3')
        % 全连接层
        fullyConnectedLayer(numResponses,'Name','fc')
        regressionLayer('Name','output')    ];

    layers = layerGraph(layers);
    layers = connectLayers(layers,'fold/miniBatchSize','unfold/miniBatchSize');

%% CNNLSTM训练选项
% 批处理样本
% 最大迭代次数
%% 训练混合网络
net = trainNetwork(XrTrain,YrTrain,layers,options);

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129036772?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128690229

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年报考CSM敏捷教练认证好不好?含金量高吗?

CSM,Certified Scrum Master,是Scrum联盟发起的Scrum认证。帮助个人从自身、团队和组织层面,学习技能和工具来扩展实践的层面,帮助团队正确使用Scrum,从而提高项目整体成功的可能性。 认证收益 职业能力提升 推动企业…

图神经网络能做什么?

从概念上讲,我们可以将图神经网络的基本学习任务分为 5 个不同的方向: (1)图神 经网络方法; (2)图神经网络的理论理解; (3)图神经网络的可扩展性&#xff1b…

VLAN基础实验

实验要求: 1、PC1和PC3所在接口为Access接口 PC2/4/5/6处于同一网段:其中PC2可以访问PC4/5/6 PC4可以访问PC5,但不能访问PC6 PC5不能访问PC6 2、PC1/3与PC2/4/5/6不再同一网段 3、所有PC通过DHCP获取IP地址,且PC1/3可以正常访问PC2/4/5/6 实…

jenkins——环境变量、节点配置以及节点环境变量的使用

这里写目录标题 一、Jenkins 环境变量1、环境变量分类a、系统内置环境变量b、用户自定义环境变量 2、环境变量的使用3、控制台输出 二、Jenkins 节点配置1、Jenkins的常用节点2、准备工作3、SSH类节点配置4、Java web节点配置5、Java web节点配置详细步骤 三、Jenkins 节点环境…

操作系统八股文知识点汇总

1. 程序编译过程 gcc HelloWorld.c -E -o HelloWorld.i 预处理:加入头文件,替换宏。gcc HelloWorld.c -S -c -o HelloWorld.s 编译:包含预处理,将 C 程序转换成汇编程序。gcc HelloWorld.c -c -o HelloWorld.o 汇编:包…

GEE遥感云大数据在林业中的应用

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

boot-admin整合Quartz实现动态管理定时任务

淄博烧烤爆红出了圈,当你坐在八大局的烧烤摊,面前是火炉、烤串、小饼和蘸料,音乐响起,啤酒倒满,烧烤灵魂的party即将开场的时候,你系统中的Scheduler(调试器),也自动根据…

【操作系统】第一章

文章目录 🌷 一、操作系统的概念1、定义2、功能 和 目标 🌷 二、操作系统的特征1、**并发**2、 **共享**3、 **虚拟**4、 **不确定性** 🌷 三、操作系统的发展与分类1、 手工操作阶段2、 批处理阶段3、 分时操作系统4、 实时操作系统5、 网络…

【移动端网页布局】移动端网页布局基础概念 ④ ( 物理像素 | 物理像素比 | 代码示例 - 100 像素在 PC浏览器 / 移动端浏览器 显示效果 )

文章目录 一、物理像素 / 物理像素比二、代码示例 - 100 像素在 PC浏览器 / 移动端浏览器 显示效果 一、物理像素 / 物理像素比 移动端 网页开发 与 PC 端开发有很多不同之处 , 在图片处理方向需要采用 二倍图 / 三倍图 / 多倍图 方式进行图片处理 ; 图片处理的方式与如下的 物…

4月26号软件更新资讯合集....

Tpflow V7.0.2,PHP 工作流引擎新版发布 ​欢迎使用 Tpflow V7.0.1 工作流引擎 TpFlow 工作流引擎是一套规范化的流程管理系统,基于业务而驱动系统生命力的一套引擎。彻底释放整个信息管理系统的的活力,让系统更具可用性,智能应用型…

一文学会VSCode代码同步至GitHub

一、上手GitHub 1. 了解GitHub 上手GItHub之前首先要了解一下GItHub的关键词,如下: (1) 仓库 (Repository) 仓库是用来存放项目代码,每一项目对应一个仓库。(2) 收藏 (Star) 收藏别人的仓库,方便自己查找。(3) 复制/克隆项目 (…

数据库基础篇 《12.MySQL数据类型精讲》

目录 1. MySQL中的数据类型 2. 整数类型 2.1 类型介绍 2.2 可选属性 2.2.1 M 2.2.2 UNSIGNED 2.2.3 ZEROFILL 2.3 适用场景 2.4 如何选择? 3. 浮点类型 3.1 类型介绍 3.2 数据精度说明 ​编辑 3.3 精度误差说明 4. 定点数类型 4.1 类型介绍 4.2 开发中…

Ingonyama团队的ZKP加速

1. PipeMSM(cloud-ZK):ZKPFPGA Ingonyama团队2022年发表了论文《PipeMSM: Hardware Acceleration for Multi-Scalar Multiplication》,尝试将ZK操作与FPGA结合,并为未来ZK与ASIC(Application Specific Int…

java_集合统计

1.代码实现&#xff1a; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ListUtilEme {public static Map<String,Integer> frequencyOfListElements(List<String> items ) {if (items null…

什么!appium安装不上???快来试试这种方法吧!——appium的手动安装步骤教程

前言 相信你不少软件测试行业小伙伴应该在用npm安装appuim或者是cpm安装appuim途中也碰到下面一些报错吧&#xff0c;接下来小陈教你改为手动安装appium吧。 一、手动下载appium安装包 appuim手动安装包下载链接&#xff1a; appium / Appium.app / Downloads — Bitbucket &a…

< 封装公共导出模块:配合element实现提示 >

封装公共导出模块 &#x1f449; 前言&#x1f449; 一、原理&#x1f449; 二、实现案例&#x1f449; 三、效果演示往期内容 &#x1f4a8; &#x1f449; 前言 在 Vue elementUi 开发中&#xff0c;我们偶尔会遇到需要导出的列表&#xff0c;或者指定位置的导出内容。在一…

瑞萨开发环境搭建

使用keil环境&#xff0c;开发瑞萨renase A4M2 下载MDK 下载MDK&#xff0c;5.37 其它版本 最好使用5.30以上 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5k3XGSK5-1682182139410)(https://secure2.wostatic.cn/static/reEunrWa2vsfrcpVZC1nbo…

【错误:A component required a bean of type ‘xxx‘ that could not be found.解决办法】

在学谷粒商城项目的时候出现了以下问题&#xff1a; *************************** APPLICATION FAILED TO START *************************** Description: A component required a bean of type org.redisson.Redisson that could not be found. Action: Consider defining a…

103. 二叉树的锯齿形层序遍历【191】

难度等级&#xff1a;中等 上一篇算法&#xff1a; 104. 二叉树的最大深度【75】 力扣此题地址&#xff1a; 103. 二叉树的锯齿形层序遍历 - 力扣&#xff08;Leetcode&#xff09; 1.题目&#xff1a;103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root &#xff0c;返回其…

24、LLVM编译流程

一、LLVM 1.1 LLVM概述 LLVM是构架编译器(compiler)的框架系统,以C编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本.LLVM计划启动于2000年,最初由美国…