多输入多输出 | Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络多输入多输出预测
目录
预测效果
基本介绍
Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络多输入多输出预测(完整源码和数据)
1.data为数据集,输入10个特征,输出3个变量。
2.main.m为程序主文件,其他为函数文件无需运行。
3.命令窗口输出MBE、MAE、RMSE、R^2和MAPE,可在下载区获取数据和程序内容。
4.粒子群优化参数为学习率、隐藏层单元数和正则化参数。
注意程序和数据放在一个文件夹,运行环境为Matlab2018及以上。
程序设计
- 完整源码和数据获取方式:私信博主回复Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络多输入多输出预测。
clike
%% 数据平铺
% 将数据平铺成1维数据只是一种处理方式
% 也可以平铺成2维数据,以及3维数据,需要修改对应模型结构
% 但是应该始终和输入层数据结构保持一致
p_train = double(reshape(P_train, 10, 1, 1, M));
p_test = double(reshape(P_test , 10, 1, 1, N));
t_train = double(T_train)';
t_test = double(T_test )';
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 参数设置
options = trainingOptions('adam', ... % ADAM 梯度下降算法
'MiniBatchSize', 30, ... % 批大小,每次训练样本个数30
'MaxEpochs', 100, ... % 最大训练次数 100
'InitialLearnRate', 1e-2, ... % 初始学习率为0.01
'LearnRateSchedule', 'piecewise', ... % 学习率下降
'LearnRateDropFactor', 0.5, ... % 学习率下降因子
'LearnRateDropPeriod', 50, ... % 经过100次训练后 学习率为 0.01 * 0.5
'Shuffle', 'every-epoch', ... % 每次训练打乱数据集
'Plots', 'training-progress', ... % 画出曲线
'Verbose', false);
参考资料
[1] https://blog.csdn.net/kjm13182345320/category_11003178.html?spm=1001.2014.3001.5482
[2] https://blog.csdn.net/kjm13182345320/article/details/117378431
[3] https://blog.csdn.net/kjm13182345320/article/details/118253644