BP神經網路的函式逼近功能
阿新 • • 發佈:2019-02-06
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網路函式逼近效果很好。