回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测
回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测
目录
- 回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测
- 写在前面
- 效果一览
- 基本描述
- 模型描述
- 程序设计
- 参考资料
写在前面
程序获取 | 机器学习/深度学习程序获取方式,本篇文章程序和数据通过订阅组合优化专栏可以获取,程序和数据订阅后私信我,同时订阅后获取组合优化专栏收录的全部完整程序;也可以直接在机器学习之心资源处下载:MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测完整程序和数据。
效果一览
基本描述
MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测。鲸鱼算法优化参数为隐含层节点数,最大训练代数,初始学习率参数。鲸鱼优化算法(Whale Optimization Algorithm,WOA)本文将介绍一种新的受自然启发的元启发式优化算法——鲸鱼优化算法(WOA),该算法模拟了座头鲸的社会行为,并引入了气泡网狩猎策略。
模型描述
鲸鱼在大脑的某些区域有与人类相似的细胞,这些细胞被称为纺锤形细胞(spindle cells)。这些细胞负责人类的判断、情感和社会行为。换句话说,纺锤形细胞使我们人类有别于其他生物。鲸鱼的这些细胞数量是成年人的两倍,这是它们具有高度智慧和更富情感的主要原因。已经证明,鲸鱼可以像人类一样思考、学习、判断、交流,甚至变得情绪化,但显然,这都只是在一个很低的智能水平上。据观察,鲸鱼(主要是虎鲸)也能发展自己的方言。Bi-LSTM 神经网络结构模型分为 2 个独立的LSTM,输入序列分别以正序和逆序输入至 2 个LSTM 神经网络进行特征提取,将 2个输出向量(即提取后的特征向量)进行拼接后形成的词向量作为该词的最终特征表达。Bi-LSTM 的模型设计理念是使 t 时刻所获得特征数据同时拥有过去和将来之间的信息,实验证明,这种神经网络结构模型对文本特征提取效率和性能要优于单个 LSTM 结构模型。
程序设计
- 完整程序和数据
程序获取 | 机器学习/深度学习程序获取方式,本篇文章程序和数据通过订阅组合优化专栏可以获取,程序和数据订阅后私信我,同时订阅后获取组合优化专栏收录的全部完整程序;也可以直接在机器学习之心资源处下载:MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测完整程序和数据。
%% 主程序 WOA-BiLSTM,鲸鱼算法优化双向长短期记忆神经网络预测
% 预设鲸鱼优化算法的参数 %输入输出数据L = size(output, 1); %样本总数% testNumber = round(L*0.2); %设置四个样本测试testNumber =20; %设置四个样本测试trainNumber = L - testNumber; %训练样本数量% 划分训练集和测试集p_train = input(1:trainNumber, :)';t_train = output(1:trainNumber, :)';% 测试集 p_test = input(trainNumber+1:trainNumber+testNumber,:)';t_test = output(trainNumber+1:trainNumber+testNumber,:)';%% 归一化和元胞数组处理[pn_train ,ps]= mapminmax(p_train);[tn_train, ts] = mapminmax(t_train);%测试集的归一化pn_test = mapminmax('apply', p_test, ps);tn_test = mapminmax('apply', t_test, ts);for i = 1:length(t_train)P_train{i,1} = pn_train(:,i);endfor i = 1:length(t_test)P_test{i,1} = pn_test(:,i);end%% 归一化和元胞数组处理p 4; % 优化的自变量个数 ,依次为BiLSTM的第一和第二隐含层节点数,最大训练代数,初始学习率lb = [1, 1, 0.001]; % 下限ub = [10,20, 0.01]; % 上限% initialize position vector and score for the leader,初始化位置向量和领导者得分Leader_pos=zeros(1,dim);Leader_score=inf; %change this to -inf for maximization problems,将此更改为-inf以获得最大化问题,Inf无穷大%Initialize the positions of search agentsPositions=initialization(popsize,dim,ub,lb);%Positions,存放数个个体的多维位置。Convergence_curve=zeros(1,maxgen);%Convergence_curve收敛曲线t=1;% Loop counter% Main loopwhile t<maxgen+1 % 首先 迭代次数的while循环 为2 也就是鲸鱼群体会进化2代disp(['current iteration is: ', num2str(t)])for i=1:size(Positions,1)%对每个个体一个一个检查是否越界 % 种群规模是2 所以嵌套了2次训练% Return back the search agents that go beyond the boundaries of% the search space,返回超出搜索空间边界的搜索代理Flag4ub=Positions(i,:)>ub;Flag4lb=Positions(i,:)<lb;Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;%超过最大值的设置成最大值,超过最小值的设置成最小值% 评估个体适应度,会调用func.m子函数,把个体位置坐标赋给BiLSTM参数中,执行的训练% Calculate objective function for each search agent,目标函数值的计算[fitness,net]=func(Positions(i,:),p_train,P_train,P_test, tn_train,ts,t_train,t_test);if fitness<Leader_score % Change this to > for maximization disp('WOA优化BiLSTM的结果:')disp(strcat('最优参数: ', num2str([round(Leader_pos(1:2)),Leader_pos(3)])))disp(strcat('最佳适应度: ', num2str(Leader_score)))%% 将WOA优化后的参数赋给BiLSTM神经网络 while循环结束之后 优化完的最佳参数付给BiLSTM 再次训练% 参数设置numFeatures = size(p_train, 1); %输入层节点numHiddenUnits1 = round(Leader_pos(1)); % 第一隐含层节点numResponses = 1; %全连接层节点(等于标签的数量)%% 创建网络layers = [ ...sequenceInputLayer(numFeatures)bilstmLayer(numHiddenUnits1,'OutputMode','last','name','hidden1')dropoutLayer(0.2,'name','dropout_1') %隐藏层1权重丢失率,防止过拟合fullyConnectedLayer(numResponses,'name','fullconnect')regressionLayer('name','out')]; % %回归层%% 参数设定%指定训练选项,求解器设置为adamoptions = trainingOptions('adam', ... %优化算法'MaxEpochs',round(Leader_pos(2)), ... %遍历样本最大循环数'GradientThreshold',1, ... %梯度阈值'InitialLearnRate',Leader_pos(3), ... %初始学习率'LearnRateSchedule','piecewise', ... %学习率计划'LearnRateDropPeriod',100, ... %50个epoch后学习率更新'LearnRateDropFactor',0.01, ... % 通过乘以因子 0.1 来降低学习率'MiniBatchSize',100,... % 批处理样本大小'Verbose',1, ... %命令控制台是否打印训练过程'Plots','training-progress');%% 训练BiLSTM
% net = trainNetwork(P_train,tn_train',layers,options);net = net1;%% 测试集预测testn_simu = predict(net,P_test);test_simu= mapminmax('reverse',testn_simu', ts);disp(' ')disp('WOA-BiLSTM神经网络预测性能分析:')
[e, ape]=caculate_perf(t_test, test_simu);rmse=sqrt(mean( (test_simu - t_test).^2));%% 作图分析
%%真实值与预测值误差比较
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
figure
bar((test_simu - t_test))
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/127993418
[2] https://blog.csdn.net/kjm13182345320/article/details/127545080
回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测相关推荐
- 回归预测 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络多输入单输出回归预测
回归预测 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络多输 ...
- 回归预测 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多输入单输出
回归预测 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多输入单输出 目录 回归预测 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多输入单输出 ...
- 回归预测 | MATLAB实现WOA-GRU鲸鱼算法优化门控循环单元多输入单输出回归预测
回归预测 | MATLAB实现WOA-GRU鲸鱼算法优化门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现WOA-GRU鲸鱼算法优化门控循环单元多输入单输出回归预测 写在前面 效果 ...
- 回归预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆神经网络多输入单输出回归预测
回归预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆神经网络多输入单输出回归预测 ...
- 回归预测 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络多输入单输出回归预测
回归预测 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络多输入单输出回归预测 ...
- 回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出
回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出 目录 回归预测 | MATLAB实现Bayes-LSTM(贝叶斯优化长短期记忆神经网络)多输入单输出 基 ...
- 回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出
回归预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多输入单输出 目录 回归预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多输入单输出 基本介绍 模型背景 C ...
- 多维时序 | MATLAB实现TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)多输入单输出
多维时序 | MATLAB实现TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)多输入单输出 目录 多维时序 | MATLAB实现TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)多输 ...
- 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测
分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 ...
最新文章
- 开源桌面系统及设计图、下载地址
- CSS学习摘要-数值和单位及颜色
- kali BEEF-XSS启动报错解决
- 排序集锦(各种排序算法的特点及性能分析)
- mysql查询报错: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_by
- mysql查询删除重复数据
- C语言-ATT拓展内联汇编(ATT/GCC)
- 字典添加数据_【Python基础学习】4. 数据类型之字典及其操作
- 运动:延伸你的美丽(图)
- 养肝粥,用电脑过度人群必备! - 健康程序员,至尚生活!
- wp-autoblog_AutoBlog简介
- 【2022最新Java面试宝典】—— Java集合面试题(52道含答案)
- 给机器学习面试者的十项建议 | 面试官角度
- 《MLB棒球创造营》:走近棒球运动·纽约大都会队
- 2021世界人工智能大会(WAIC2021):深思考人工智能获颁工信部人工智能产业创新“揭榜优胜单位”!
- 禁用U盘,不影响其他设备的使用
- 今日恐慌与贪婪指数为22 恐慌程度有所缓解
- 网络系统高可用是几个9?
- iOS开发苹果支持中文字体,和使用字体
- 设计神经网络的基本原则,神经网络设计与实现