BP算法汇总(1)(2)(3)sigmoid函数(取值在[0,1]之间)的导数对称型Sigmoid函数(取值在[-1,1]之间对称型Sigmoid函数的导数BP算法的实现(初始化)clearin=5;hid=5;out=1;N=2000;w2=rand(hid,in)-;w3=rand(out,hid)-;a=;y(:,1:3)=zeros(1,3);u=2*(rand(1,N)-.5);fork=4:Ny(k)=*(y(k-1)*y(k-2)*y(k-3)*u(k-2)*(y(k-3)-1)+u(k-1))/(1+y(k-2)^2+y(k-3)^2);endBP算法的实现(前向计算)fork=4:Nx1=[y(k-1)y(k-2)y(k-3)u(k-1)u(k-2)];fori=1:hidx2(:,i)=sigmoid2(x1*w2(i,:)');endy1(k)=sigmoid2(x2*w3');e(k)=y(k)-y1(k);e1(k)=e(k)*e(k);mste(k)=sum(e1)/k;disp([kmste(k)]);BP算法的实现(误差反向传播)delt3=e(k)*(1-y1(k))*(1+y1(k))/2;forj=1:hiddelt2(j)=(1+x2(j)).*(1-x2(j))./2.*delt3.*w3(j);w3(j)=w3(j)+a*delt3*x2(j)endforj=1:hidforl=1:inw2(j,l)=w2(j,l)+a*delt2(j)*x1(l);endendend%EndofthetrainBP算法的实现(测试数据产生)fork=1:500u(k)=sin(2*pi*k/250);endfork=501:1000u(k)=*sin(2*pi*k/250)+*sin(2*pi*k/25);endfork=4:1000y(k)=*(y(k-1)*y(k-2)*y(k-3)*u(k-2)*(y(k-3)-1)+u(k-1))/(1+y(k-2)^2+y(k-3)^2);end
bp算法汇总 来自淘豆网m.daumloan.com转载请标明出处.