✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
针对传统BP神经网络存在学习效率低、收敛速度慢和容易陷入局部极小值的问题,提出一种基于改进的PSO来优化BP神经网络的方法。实验结果表明,该方法较好地解决了传统BP神经网络易陷入局部极小值的问题,提高了算法的收敛速度和稳定性。
⛄ 部分代码
%%warning('off');% Data Loadingclear;netdata=load('fortest2.mat');netdata=netdata.FinalReady;% Data and Labelnetwork=netdata(:,1:end-1);netlbl=netdata(:,end);% Var Changeinputs = network;targets = netlbl;% Dim SizeInputNum = size(inputs,2);OutputNum = size(targets,2);pr = [-1 1];PR = repmat(pr,InputNum,1);% NN Structure (log-sigmoid transfer function)NH=5; % Number of Hidden Layers (more better)Network1 = newff(PR,[NH OutputNum],{'tansig' 'tansig'});% Train with PSO on Networks WeightsNetwork1 = TrainPSO(Network1,inputs,targets);view(Network1)% Generating Outputs from Our PSO + NN Network Modeloutputs = Network1(inputs');outputs=outputs';% Sizesizenet=size(network);sizenet=sizenet(1,1);% Outputs ErrorMSE=mse(outputs);% Bias Output for Confusion Matrixoutputs=outputs-(MSE*0.1)/2;% Detecting Mislabeled Datafor i=1 : 50if outputs(i) <= 0.9out(i)=0;elseif outputs(i) >= 0.9out(i)=1; end;end;for i=51 : 100if outputs(i) <= 0.9out(i)=0;elseif outputs(i) >= 0.9out(i)=2; end;end;for i=101 : 150if outputs(i) <= 0.9out(i)=0;elseif outputs(i) >= 0.9out(i)=3; end;end;for i=151 : 200if outputs(i) <= 0.9out(i)=0;elseif outputs(i) >= 0.9out(i)=4; end;end;for i=201 : 250if outputs(i) <= 0.9out(i)=0;elseif outputs(i) >= 0.9out(i)=5; end;end;for i=251 : 300if outputs(i) <= 0.9out(i)=0;elseif outputs(i) >= 0.9out(i)=6; end;end;out1=single(out');% PSO Final Accuracypsomse=mse(out1,targets);MSEError=abs(mse(targets)-mse(out1));cnt=0;for i=1:sizenetif out1(i)~= targets(i)cnt=cnt+1;end;end;fin=cnt*100/ sizenet;psoacc=(100-fin)-psomse;
⛄ 运行结果

⛄ 参考文献
[1]杨宝华, 叶生波, 戴前颖,等. 一种基于粒子群算法优化BP神经网络的茶叶存储时间分类方法:, 2019.
⛳️ 代码获取关注我
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料
文章提出了一种用改进的粒子群优化算法(PSO)来解决BP神经网络在学习和收敛速度上的问题,旨在避免局部极小值。实验结果显示,这种方法提高了算法的收敛速度和稳定性,特别适用于茶叶存储时间的分类任务。
589

被折叠的 条评论
为什么被折叠?



