单目标应用:麻雀搜索算法优化LSTM的权值和阈值(提供MATLAB代码)

176 篇文章 16 订阅
11 篇文章 22 订阅

一、求解思路

LSTM(Long Short Term Memory)是具有记忆长短期信息的能力的神经网络,传统的训练方式采用梯度下降。然而,梯度下降方法容易陷入局部最优,群智能优化算法具有较强的全局搜索能力。本文采用麻雀搜索算法(SSA)直接优化LSTM的权值和阈值,提高LSTM的求解精度。

本文采用的数据集如下:data=3*sin(0:0.02:30);%数据集

在这里插入图片描述

训练集和测试集各占数据集的70%和30%。SSA优化LSTM的目标函数为训练集上真实值和预测值的均方误差(MSE)。

二、实验结果

2.1部分代码

LSTM隐藏层神经元个数可自行修改,数据集可自行替换。

Dim=sum(sum(K(:,1).*K(:,2)));%维度
lb=-5;%下界
ub=5;%上界
fobj=@Fun;%计算训练集上的函数值(真实值与预测值的均方误差MSE)
SearchAgents_no=50; % 种群大小(可以修改)
Max_iteration=100; % 最大迭代次数(可以修改)
[fMin,bestX,SSA_curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,Dim,fobj);  %SSA优化LSTM的权值阈值 bestX是最优权值阈值
o=TestFun(bestX);%在测试集上预测
o1=TrainFun(bestX);%在训练集上预测
save bestX bestX %保留SSA优化LSTM得到的最优参数
save SSA_curve SSA_curve %保留
%% 画出SSA优化LSTM的均方误差随迭代次数的图
figure
semilogy(SSA_curve,'Color','g')
xlabel('Iteration');
ylabel('MSE');
legend('SSA')
%%
display(['The best solution obtained by SSA is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton found by SSA is : ', num2str(fMin)]);%fMin越小说明SSA优LSTM效果越好

2.2求解结果:

训练集上MSE随迭代次数变化的曲线图:

在这里插入图片描述

训练集上真实值和预测值对比图:

在这里插入图片描述

训练集上真实值和预测值绝对误差(MAE):
在这里插入图片描述

测试集上真实值和预测值对比图:
在这里插入图片描述

测试集上真实值和预测值绝对误差(MAE):
在这里插入图片描述

由此可见,SSA优化LSTM不管在训练集上还是测试集上均能达到理想结果,预测值与真实值十分接近。

三、参考代码联系博主

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值