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不能...