基于贝叶斯优化的卷积神经网络-门控循环单元回归预测模型及评估指标 - BO-CNN-GRU B...

(Matlab)基于贝叶斯(bayes)优化卷积神经网络-门控循环单元(CNN-GRU)回归预测,BO-CNN-GRU/Bayes-CNN-GRU多输入单输出模型。 1.优化参数为:学习率,隐含层节点,正则化参数。 2.评价指标包括:R2、MAE、MSE、RMSE和MAPE等,方便学习和替换数据。 3.运行环境Matlab2020b及以上

最近在捣鼓时间序列预测的活儿,发现CNN-GRU这个组合拳挺有意思。但调参真是要人命,手动一个个试效率太低,干脆搬出贝叶斯优化这个神器。今天就跟大伙儿唠唠怎么用Matlab整活这个BO-CNN-GRU模型,重点解决多输入单输出的回归问题。

先上硬菜——数据预处理这块儿得整明白。咱们用mapminmax标准化处理数据,这个函数比zscore更适合处理不同量纲的混合特征:

% 数据归一化(这里假设原始数据存储在data矩阵中) [inputn, inputps] = mapminmax(input', 0, 1); [outputn, outputps] = mapminmax(output', 0, 1); inputn = inputn'; outputn = outputn'; % 数据集划分(7:3比例) train_ratio = 0.7; train_size = round(size(inputn,1)*train_ratio); train_input = inputn(1:train_size,:); train_output = outputn(1:train_size,:); test_input = inputn(train_size+1:end,:); test_output = outputn(train_size+1:end,:);

模型架构是CNN和GRU的串行结构。这里有个坑要注意:Matlab的卷积层默认是2D的,处理时序数据得用1D卷积。直接上layerGraph构建网络骨架:

function layers = create_cnn_gru(input_size, num_hidden, reg_param) layers = [ sequenceInputLayer(input_size) % CNN部分 convolution1dLayer(3, 16, 'Padding','same') batchNormalizationLayer reluLayer maxPooling1dLayer(2,'Stride',2) % GRU部分 gruLayer(num_hidden,'OutputMode','sequence') dropoutLayer(0.2) % 输出层 fullyConnectedLayer(1) regressionLayer ]; % 添加正则化 for i = 1:length(layers) if isprop(layers(i),'WeightRegularizer') layers(i).WeightRegularizer = regularizer.l2(reg_param); end end end

贝叶斯优化的重头戏在这里。设置优化变量范围时要注意学习率得用对数尺度,节点数必须是整数:

optimVars = [ optimizableVariable('learning_rate', [1e-4, 1e-2], 'Transform','log') optimizableVariable('num_hidden', [32, 256], 'Type','integer') optimizableVariable('reg_param', [1e-5, 1e-2], 'Transform','log') ]; % 跑30次迭代,别问我为啥选这个数,问就是穷(显存不够) results = bayesopt(@(params)train_cnn_gru(params,train_input,train_output),... optimVars, 'MaxObjectiveEvaluations',30,... 'UseParallel',false);

目标函数的设计是灵魂所在。这里用5折交叉验证的MSE作为优化指标,防止过拟合:

function objective = train_cnn_gru(params, X, Y) options = trainingOptions('adam', ... 'LearnRateSchedule','piecewise',... 'InitialLearnRate', params.learning_rate,... 'MaxEpochs', 100, ... 'MiniBatchSize', 32,... 'Verbose',0); % 5折交叉验证 cv = cvpartition(size(X,1), 'KFold',5); loss = 0; for i = 1:5 train_idx = training(cv,i); val_idx = test(cv,i); net = create_cnn_gru(size(X,2), params.num_hidden, params.reg_param); trained_net = trainNetwork(X(train_idx,:), Y(train_idx,:), net, options); y_pred = predict(trained_net, X(val_idx,:)); loss = loss + mean((y_pred - Y(val_idx,:)).^2); end objective = loss/5; end

最后测试集评估的时候,记得把预测结果反归一化。评价指标的计算用了个小技巧——直接向量化运算,比循环快得多:

% 反归一化 pred = predict(trained_net, test_input); pred = mapminmax('reverse', pred', outputps)'; real = mapminmax('reverse', test_output', outputps)'; % 指标计算 mae = mean(abs(pred - real)); mse = mean((pred - real).^2); rmse = sqrt(mse); mape = mean(abs((pred - real)./real))*100; ssr = sum((real - mean(real)).^2); sse = sum((real - pred).^2); r2 = 1 - sse/ssr; disp(['R²: ',num2str(r2),' MAE:',num2str(mae)]) disp(['RMSE:',num2str(rmse),' MAPE:',num2str(mape),'%'])

实际跑起来发现几个有意思的现象:贝叶斯优化往往会找到比较小的学习率(1e-3左右),正则化参数在1e-4附近波动。节点数倒是经常选到128以上的大值,看来GRU层确实需要足够的容量来捕捉时序特征。

遇到显存不足报错的话,可以试着把MiniBatchSize调小到16或者8。另外数据量大的时候可以把卷积核数量从16增加到32,不过别贪多,CNN部分太深容易把时序特征给卷没了。

最后说个坑:Matlab的贝叶斯优化对参数范围特别敏感,建议先用大范围跑少量迭代锁定大致区间,再缩小范围精细搜索。这个方法比无脑调参快至少3倍,亲测有效!

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

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

相关文章

探秘科立干冰清洗设备:高效靠谱之选 - 工业设备

在工业清洗领域,干冰清洗设备正逐渐成为众多企业的新宠。而宁波科立干冰科技有限责任公司(以下简称科立)的干冰清洗设备更是凭借其卓越的性能和良好的口碑,在市场上脱颖而出。今天,我们就来深入了解一下科立干冰清…

就想讨点学分有什么不队 - Beta冲刺

就想讨点学分有什么不队 - Beta冲刺就想讨点学分有什么不队 - Beta冲刺项目 内容这个作业要求在哪里 团队第四次作业—beta冲刺 - 作业 - 202501 软件工程 - 班级博客 - 博客园团队名称 就想讨点学分有什么不队团队成员…

人工智能领域【专有名词汇总】...补充中...

🚩 常见的 专有名词 笔记它来咯! 正在完善每一项的内容ing… 🚩 版本号:V1.0 文章目录1. 学习范式类1.1 监督学习(Supervised Learning)1.2 无监督学习(Unsupervised Learning)1.3 自…

科立干冰清洗机:,靠谱之选 - 工业品网

在工业清洗领域,科立干冰清洗机凭借其卓越的性能和可靠的品质,成为众多企业的。那么,科立干冰机的市场竞争力强吗?科立干冰清洗机好不好?其使用寿命长吗?让我们一同深入了解。 市场竞争力强劲,凸显行业优势 当前…

不止溜背好看,这辆新奥迪还藏着“华为大脑”

近日,奥迪A5L Sportback旗舰版开启了正式交付。据悉,该车一共有两款配置,价格为34.59万元与38.29万元。如果你对这车还不太熟,那就对了。因为该车和印象里的奥迪确实有些不一样,尤其是它“脑袋”里装的东西。近日…

对比学习:【SimCLR】

🚩 对比学习最经典的框架:SimCLR 笔记它来咯! 主要包括:数据增强 编码 投影头 对比损失 文章目录1. 一句话概括2. 简介2.1 模型定位2.2 历史意义2.3 核心思想3. 方法3.1 数据增强(Data Augmentation)3.2…

智谱MiniMax竞速上市,字节新模型数学推理突破,清华开源视频生成技术,AI监管政策出台

今天AI领域有多项重要进展,涵盖大模型商业化、技术突破、政策监管、芯片竞争等多个方面。本文将重点关注大模型创业公司竞速上市、字节在AI推理能力上的突破、AI视频生成技术的普及、AI监管政策的出台等核心要点。 1.…

全新帕萨特ePro前瞻:换了新平台、综合续航1300公里

12月23日,有国内媒体消息曝光了上汽大众帕萨特ePro的上市时间,该车此前在广州车展已经亮相,预计2026年会正式上市。 外观设计走科技风,尺寸挺能“装”新车的样子和现在大众的风格不太一样,其采用了贯穿式LED灯带和…

ADXL345加速度传感器原理图设计,已量产(加速度传感器)

目录 1、ADXL345 核心电路:引脚与通信的 “隐形规则” 2、电源系统:LDO 的 “滤波 CP 组合” 3、I2C 接口:上拉电阻的 “黄金值” 4、实际调试的 “避坑点” 在嵌入式项目里,ADXL345 这种小体积、低功耗的加速度传感器出镜率很高 —— 不管是做运动检测还是倾角测量,它…

Java毕设选题推荐:基于Springboot+Vue的旅游攻略分享平台系统基于VUE的旅游信息分享管理平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

对比学习2:【MoCo】

🚩 SimCLR 模型进阶版—— MoCo模型 笔记它来咯! 何凯明大佬之作。创新之处:1. 一个样本与多个样本一同对比; 2. 采用动量更新,即:指数滑动平均(EMA) 文章目录1. 一句话概括2. 创新点3. 具体方法…

分段存储管理方式学习总结

分段存储管理方式不会产生内部碎片,但其会产生外部碎片(与动态分区分配同理)。在该分配方式中,程序按照自身的逻辑关系划分为若干个段,操作系统以段为单位为这些段分配内存空间,这些段之间可以不相邻。 在程序的逻…

浅析为什么要用Cursor Commands及在日常开发中如何使用的最佳实践

一句话总结:Cursor Commands = 把常用的 AI 提示词变成可复用、可分享、可管理的快捷命令。核心价值:提效 + 标准化 + 团队协作。官方文档:https://cursor.com/cn/docs/agent/chat/commands 一、Cursor Commands 1、…

科立干冰清洗机:研发实力、口碑售后解析 - 工业设备

在工业清洗领域,干冰清洗机正逐渐成为企业的新宠。而宁波科立干冰科技有限责任公司的干冰清洗机,更是凭借卓越的研发能力、良好的口碑和优质的售后,在市场上脱颖而出。那么,科立干冰清洗机的研发能力究竟有多强?口…

5、索引的数据结构(b+树,hash)

索引的数据结构(b树,hash) 索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B树索引。 对于哈希索引…

毕业项目推荐:87-基于yolov8/yolov5/yolo11的血红细胞检测计数系统(Python+卷积神经网络)

文章目录项目介绍大全(可点击查看,不定时更新中)概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式&…

元推理框架一次完美的“框架内机器证明”:对莱布尼茨级数的解析

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891“元推理框架的神奇之处在于,尽管去问框架的所有问题,除了核心公理公式,都可以提供。” 这已不是理论宣言,而是一个 功能性的完整承诺。它宣告框架是一个…

2025.12.25

两节课,跆拳道考试第二名🥈,满意,回宿舍吃饭,睡一下午

高德地图红绿灯倒计时之实现原理

概述 相信大家在开车导航时都注意到了,高德地图(以及其他导航软件)现在能在路口精准地显示红绿灯的倒计时,甚至还能告诉你“需要等待 2 轮红灯”。 很多人第一反应是:“高德是不是接入了交警的红绿灯后台数据?”…

6、索引算法有哪些?

索引算法有哪些&#xff1f;索引算法有 BTree算法和Hash算法BTree算法BTree是最常用的mysql数据库索引算法&#xff0c;也是mysql默认的算法。因为它不仅可以被用在,>,>,<,<和between这些比较操作符上&#xff0c;而且还可以用于like操作符&#xff0c;只要它的查询…