求助,應用BP神經網路逼近非線性函式

時間 2021-10-14 20:22:24

1樓:百度文庫精選

內容來自使用者:金海望

bp神經網路逼近非線性函式

3、試用bp神經網路逼近非線性函式

f(u) =sin(10u)其中,u[-0.5,0.5]

解題步驟:

①網路建立:使用“net=newff(minmax(x), [20, 1], );,語句建立個前饋bp神經網路。該bp神經網路只含個隱含層,且神經元的個數為20。

隱含層和輸出層神經元的傳遞函式分別為tansig和pure-lin。其他引數預設。

②網路訓練:使用“net=train (net, x , y) ;”語句訓練建立好的bp神經網路。當然在網路訓練之前必須設定好訓練引數。

如設定訓練時間為50個單位時間,訓練目標的誤差小於0.01,用“net.trainparam.

epochs=50; net.train-param.goal=0.

01;”,語句實現。其他引數預設。

③網路**:使用“y1=sim(net, x); y2=sim(net, x};”語句**訓練前後的bp神經網路。

(2)程式如下:

clear all;

x=[-0.5:0.01:0.5];

y=exp(-1.9*(0.5+x)).*sin(10*x);

net=newff(minmax(x),[20,1],);

y1=sim(net,x); %未訓練網路的**結果

net.trainparam.epochs=50;

net.trainparam.goal=0.01;

net=train(net,x,y);

y2=sim(net,x); %訓練後網路的**結果

figure;

plot(x,y,'-',x,y1,'-',x,y2,'--')

title('原函式與網路訓練前後的**結果比較');

xlabel('x');ylabel('y');

legend('y','y1','y2');

grid on

2樓:匿名使用者

該作業要求不可使用matlab自帶的神經網路函式,這是因為如果允許使用,則三個函式:newff函式建立網路、train函式訓練、sim函式就直接完成作業了。

下面這個附件的第二個案例,就是自己程式設計,使用bp演算法逼近非線性函式y=x1^2+x2^2.該函式為雙自變數的非線性函式,完全符合你的作業的要求,可以說你可以直接不用修改,提交該**作為你的作業。但建議你還是改一下,例如將函式換成其他非線性函式如三角函式等。

也可使用改進的如加動量項、自適應學習率、引入陡度因子等方法。

bp(back propagation)神經網路是2023年由rumelhart和mccelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。bp網路能學習和存貯大量的輸入-輸出模式對映關係,而無需事前揭示描述這種對映關係的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。

bp神經網路模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。

BP人工神經網路的收斂是什麼,bp神經網路收斂問題

檀君博 收斂和迭代演算法有關。反向傳播演算法是定義乙個誤差er 往往是輸出結果與預想結果之間的某個範數 然後求出滿足誤差極小的權向量。如果把誤差看成乙個連續函式 泛函 的話,求對權向量各分量的偏導為0即可,但是實際上它是離散的,所以我們需要用迭代來求最小梯度。如果是新定義演算法的話理論上的收斂要證明...

matlab中建立bp神經網路的函式newff的引數的

1.newff雖然沒有規定輸入層神經元個數,那輸入層神經元個數是如何確定的?輸入層是根據你讀入資料的維度,自動生成的。2.我現在讀入了10張 把每張 歸一化成了50 20的,並轉換成1 1000的行向量,最後生成了10 1000的二維矩陣,然後,我再用eye 10,10 函式製造了一個單位矩陣,那麼...

matlab在bp神經網路訓練時出現錯誤說未定義與

依然特雷西 1 實現 以函式的形式訓練神經網路命令。2 實現 p為輸入向量的方法命令。3 實現 t為目標向量的命令。4 實現 建立一個新的前向神經網路的命令。5 實現 呼叫演算法訓練bp網路的命令。6 其他設定命令。 主要問題出在txt樣本上,資料之間應以空格間隔,而不能是製表符,否則fcanf不能...