【MATLAB第21期】基于matlab的MWOA-LSTM-Attention注意力机制结合的回归预测模型

简介: 【MATLAB第21期】基于matlab的MWOA-LSTM-Attention注意力机制结合的回归预测模型

【MATLAB第21期】基于matlab的MWOA-LSTM-Attention注意力机制结合的回归预测模型


运行环境:


matlab2020a,cpu


数据:


本文采用600行6输入1输出数据样本,其中前500(90%训练,10%验证),后100进行测试。

为了简化数据 ,对下图数据缩小100倍值 。

思路:

LSTM_Attention的代码网上基本有售卖,本文在基础上进行优化,即通过嵌入Circle映射和逐维小孔成像反向学习的鲸鱼优化算法(MWOA)以及普通鲸鱼优化算法WOA优化LSTM_Attention模型的3个超参数,分别为隐含层神经元数量、最小批处理数量,最大训练次数,目标函数选用测试集的1-R2作为评价指标,3个超参数上下限为:

lb = [20 5 5 ];%三个参数的下限    隐含层神经元数量  最小批样本处理数量  最大训练次数 
ub = [90 20 40 ];%三个参数的上限

参数设置:

%LSTM结构参数
LearnRateDropFactor = 0.9;%学习率下降因子
LearnRate = 0.01;%初始学习率
LearnRatestep=5;%每5轮更新学习率
executionEnvironment = "auto";%运行环境为自动
validatasize=10%;%训练过程中验证集比例为10%
validationFrequency = 10;%每10次训练验证1次
gradientDecayFactor = 0.9;%梯度衰减因子为0.9
squaredGradientDecayFactor = 0.999;%平方梯度衰减因子为0.999
gradientThreshold = 6;%梯度阈值为6
loss = mse;%训练过程中损失函数为mse函数 
%WOA参数
SearchAgents_no = 5; % 种群数量  5
Max_iteration = 5; % 迭代次数   5

注意力机制部分代码:

%% 输入部分
% Lstm_Y   LSTM输出序列(CBT)
% Train_Y  训练样本标签
% params   训练权重参数
% state    状态变量
%% 需要学习的参数
weight = params.cnn.weight;
recurrentWeights = params.lstm.recurrentWeights;
bias = params.lstm.bias;
%% 不同批次间传递的参数(这里假设每一轮epoch中,不同Batch间的state是传递的,但不学习;
%   不同epoch之间的state重置)
h0 = state.lstm.h0;
c0 = state.lstm.c0;
[Lstm_Y,h0,c0] = lstm(Train_X,h0,c0,weight,recurrentWeights,bias);
%% Attention
Attentionweight  = params.attention.weight; % 计算得分权重
Ht = Lstm_Y(:,:,end);       % 参考向量
%% Attention输出
weight1 = params.attenout.weight1;
bias1 = params.attenout.bias1;
weight2 = params.attenout.weight2;
bias2 = params.attenout.bias2;
Hthat = fullyconnect(Vt,weight1,bias1) + fullyconnect(Ht,weight2,bias2);
%% 全连接层前置层(降维)
LastWeight = params.fullyconnect.weight1;
LastBias = params.fullyconnect.bias1 ;
FullyconnectInput = fullyconnect(Hthat,LastWeight,LastBias);
FullyconnectInput = relu(FullyconnectInput);
%% Fullyconnect输入参数
fullyweight = params.fullyconnect.weight2;
fullybias = params.fullyconnect.bias2;
output_Y = fullyconnect(FullyconnectInput,fullyweight,fullybias);
output_Y = squeeze(output_Y);
output_Y = relu(output_Y);

预测结果:

优化前超参数设置为【50,10,10】即神经元50个,训练次数及最小批为10.

WOA优化后为【64 6 11】

MWOA优化后为【30 9 18】

分析:

案例数据精度仍存在一些不足,除了超参数范围对结果的影响,进化算法选取及参数设置以外,数据的选择,目标函数的选择以及运行环境(CPU/GPU)对结果影响也较大。 研究发现,通过试验发现GPU的精度要明显高一些,其次,选择1-R2作为目标函数比选择RMSE均方根误差作为目标函数的精度高一些。

代码获取:

代码有偿。有意向后台(非评论区)私聊回复“注意力机制”,即可获得下载链接。创作不易,感谢理解。



相关文章
|
4天前
|
算法 调度
电网两阶段鲁棒优化调度模型(含matlab程序)
电网两阶段鲁棒优化调度模型(含matlab程序)
|
2天前
|
算法
MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型
这段内容介绍了一个使用改进的麻雀搜索算法优化CNN-BiLSTM模型进行多输入单输出预测的程序。程序通过融合正余弦和柯西变异提升算法性能,主要优化学习率、正则化参数及BiLSTM的隐层神经元数量。它利用一段简单的风速数据进行演示,对比了改进算法与粒子群、灰狼算法的优化效果。代码包括数据导入、预处理和模型构建部分,并展示了优化前后的效果。建议使用高版本MATLAB运行。
|
3天前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
摘要: 本文介绍了使用matlab2022a中优化后的算法,应用于时间序列回归预测,结合CNN、LSTM和Attention机制,提升预测性能。GWO算法用于优化深度学习模型的超参数,模拟灰狼社群行为以求全局最优。算法流程包括CNN提取局部特征,LSTM处理序列依赖,注意力机制聚焦相关历史信息。GWO的灰狼角色划分和迭代策略助力寻找最佳解。
|
4天前
|
算法 计算机视觉 异构计算
基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于肤色检测算法的摘要:使用MATLAB 2022a和Vivado 2019.2进行测试和仿真,涉及图像预处理、RGB到YCbCr转换、肤色模型(基于阈值或概率)以及人脸检测。核心程序展示了如何读取图像数据并输入到FPGA处理,通过`tops`模块进行中值滤波、颜色空间转换及人脸检测,最终结果输出到"face.txt"。
|
4天前
|
数据安全/隐私保护
matlab程序, 脉冲波合成与提取,滑冲效应、方向性效应,自定义脉冲模型,提取脉冲波
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
4天前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
|
4天前
|
算法 调度 SoC
电动汽车充放电V2G模型(Matlab代码)
电动汽车充放电V2G模型(Matlab代码)
|
4天前
|
算法
考虑区域多能源系统集群协同优化的联合需求侧响应模型(matlab代码)
考虑区域多能源系统集群协同优化的联合需求侧响应模型(matlab代码)
|
4天前
|
供应链 算法
市场模式下光伏用户群的电能共享与需求响应模型(matlab代码)
市场模式下光伏用户群的电能共享与需求响应模型(matlab代码)
|
4天前
|
调度
储能参与调峰调频联合调度模型(matlab代码)
储能参与调峰调频联合调度模型(matlab代码)

热门文章

最新文章