多输入多输出 | Matlab实现SMA-BP黏菌算法优化BP神经网络多输入多输出预测
目录
预测效果
基本介绍
多输入多输出 | Matlab实现SMA-BP黏菌算法优化BP神经网络多输入多输出预测
1.data为数据集,10个输入特征,3个输出变量。
2.main.m为主程序文件。
3.命令窗口输出MBE、MAE和R2,可在下载区获取数据和程序内容。
程序设计
- 完整程序和数据下载方式资源处下载多输入多输出 | Matlab实现SMA-BP黏菌算法优化BP神经网络多输入多输出预测。
%% 数据归一化
[p_train, ps_input] = mapminmax(P_train,0,1);
p_test = mapminmax('apply',P_test,ps_input);
[t_train, ps_output] = mapminmax(T_train,0,1);
t_test = mapminmax('apply',T_test,ps_output);
%% 节点个数
inputnum = size(p_train, 1); % 输入层节点数
hiddennum = 15; % 隐藏层节点数
outputnum = size(t_train, 1); % 输出层节点数
%% 构建网络
net = newff(p_train, t_train, hiddennum);
%% 设置训练参数
net.trainParam.epochs = 50; % 训练次数
net.trainParam.goal = 1e-4; % 目标误差
net.trainParam.lr = 0.01; % 学习率
net.trainParam.showWindow = 0; % 关闭窗口
%% 参数设置
fun = @getObjValue; % 目标函数
dim = inputnum * hiddennum + hiddennum * outputnum + ...
hiddennum + outputnum; % 优化参数个数
lb = -1 * ones(1, dim); % 优化参数目标下限
ub = 1 * ones(1, dim); % 优化参数目标上限
pop = 20; % 数量
Max_iteration = 20; % 最大迭代次数
%% 优化算法
[Best_score,Best_pos,curve] = SSA(pop, Max_iteration, lb, ub, dim, fun);
%% 把最优初始阀值权值赋予网络预测
w1 = Best_pos(1 : inputnum * hiddennum);
B1 = Best_pos(inputnum * hiddennum + 1 : inputnum * hiddennum + hiddennum);
w2 = Best_pos(inputnum * hiddennum + hiddennum + 1 : inputnum * hiddennum + hiddennum + hiddennum*outputnum);
B2 = Best_pos(inputnum * hiddennum + hiddennum + hiddennum * outputnum + 1 : ...
inputnum * hiddennum + hiddennum + hiddennum * outputnum + outputnum);
往期精彩
MATLAB实现RBF径向基神经网络多输入多输出预测
MATLAB实现BP神经网络多输入多输出预测
MATLAB实现DNN神经网络多输入多输出预测
参考资料
标签:输出,inputnum,hiddennum,BP,net,输入 From: https://blog.csdn.net/kjm13182345320/article/details/142330326[1] https://blog.csdn.net/kjm13182345320/article/details/116377961
[2] https://blog.csdn.net/kjm13182345320/article/details/127931217
[3] https://blog.csdn.net/kjm13182345320/article/details/127894261