1. 程式人生 > >BP神經網路的函式逼近功能

BP神經網路的函式逼近功能

BP網路有很強的對映能力,主要用於模式識別和函式逼近。可以採用BP網路函式逼近的能力來求解數學式難以表達的函式。下面是一個三層BP網路,看它如何逼近一個正旋函式的。 在matlab中採用tansig函式和purelin函式,BP網路未訓練時(初始化的網路),輸出曲線與正旋曲線相差很大,沒有逼近功能。因為newff函式建立網路時,權值和閥值都是隨即初始化的。網路輸出結果很差。達不到逼近目的。 k=1; p=[-1:.05:1]; t=sin(k*pi*p); n=10; net=newff(minmax(p),[n,1],{'tansig' 'purelin'},'trainlm'); y1=sim(net,p); plot(p,t,'-',p,y1,'--'); xlabel('時間'); ylabel('函式值'); title('未訓練的BP網路逼近效果'); legend('要逼近的正旋函式曲線','未訓練的BP網路逼近曲線'); <?xml:namespace prefix = v />

<?xml:namespace prefix = o /> 下面對網路訓練。設定訓練時間為1000,訓練精度為0.01。其餘為預設值帶動量梯度下降改進型訓練函式traingdm訓練得到的誤差變化和函式逼近效果如下。 net=newff(minmax(p),[n,1],{'tansig' 'purelin'},'traingdm'); net.trainParam.epochs=1000; net.trainParam.goal=0.01; net=train(net,p,t); y2=sim(net,p); plot(p,t,'-',p,y1,'--',p,y2,'.'); legend('要逼近的正旋函式曲線','未訓練的BP網路逼近曲線','訓練後的BP網路逼近曲線'); xlabel('時間'); ylabel('
函式值');

          可見,帶動量梯度下降改進型訓練函式traingdm訓練得到BP網路函式逼近效果很好。