比较节点个数不同时bp网络训练的误差效果及时间 %比较不同节点时网络训练的误差效果 %time用于存储计算的时间 time=[]; %err用于存储计算tr.perf值 err=[]; for i=1:5 %分别进行取S1= 1 - 5节点时的网络训练 %起始CPU时间 t(i)=cputime; %初始值 P=[0 0 1 1;0 1 0 1]; %目标值 T=[0 1 1 0]; %创建两层前向BP网络 net=newcf(minmax(P),[i,1],{'tansig' 'purelin'},'traingd' ); % 设置相关参数 net.trainParam.show = 50; %每50次显示一次结果 net.trainParam.lr = 0.05; %学习速率参数 net.trainParam.epochs = 300; %最大循环次数参数 [net,tr]=train(net,P,T); %训练网络 %计算输出结果 Y=sim(net,P); %计算出tr.perf的值,每个tr.perf为1×301个元素,对应300个步骤 %将每次的结果组合到一个数组内,最后err大小为5×301 err=[err;tr.perf]; time(i)=cputime-t(i); %计算程序运行时间 end %做出以上5个网络的训练误差图 plot(err(1,:),'r.'); hold on plot(err(2,:),'r'); plot(err(3,:),'g-'); plot(err(4,:),'g:'); plot(err(5,:),'b:'); hold off %显示每次所需时间,看出时间并不是很有规律,并不是点越多时间越长,挺随机, % 这是因为神经网络体现的就是随机的过程 figure(2); plot(time);