到精度要求满足,满足则训练结束;不满足,则返回步骤2)Р实验过程Р基于matlab的BP算法编程如下:(采用二级网络)Р%BP网络(自适应调节学习率)Рtic%记录运行时间РclearРh=10; %隐层数量Рv=rand(1,h); %隐层权矩阵Рw=rand(h,1); %输出层权矩阵Рwo=rand(1,1); %初始化阈值Рvo=rand(1,h); Рa=0.9; %初始学习率Рpre=0.005; %精度控制Рloop=50000; %最大循环次数Рn=50; %样本数量Рdelta=2/n;%步长Рx=zeros(1,n); %输入初始化Рy=zeros(1,n); %期望输出初始化Рyout=zeros(1,n); %拟合输出初始化Рyhid=zeros(1,h); %隐层输出初始化Рcount=1; %循环次数Рer2=0;aa=1.05;bb=0.95;%改进:自适应调节学习率Р%训练Рwhile count<loopР sum=0;%累计误差Р for p=1:nР x(p)=(p-1)*delta-1;Р y(p)=x(p)^2;Р yhid=zeros(1,h); %隐层输出Р for j=1:hР net_j=v(1,j)*x(p)-vo(1,j);Р yhid(1,j)=1/(1+exp(-net_j)); Р endР net=yhid*w-wo;Р o=1/(1+exp(-net));yout(p)=o; %系统输出Р e=0.5*(y(p)-o).^2 ; %输出误差Р sum=sum+e;Р errout=(y(p)-o)*(1-o)*o; %输出层误差信号Р errhid=zeros(1,h);Р for j=1:hР errhid(1,j)=w(j,1)*errout*(1-yhid(1,j))*yhid(1,j); %隐层误差信号