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神經網路中初始權值和閾值的設定
致愛麗絲星空之夜 神經網路的權值是通過對網路的訓練得到的。如果使用matlab的話不要自己設定,newff之後會自動賦值。也可以手動 net.iw net.bias 一般來說輸入歸一化,那麼w和b取0 1的隨機數就行。神經網路的權值確定的目的是為了讓神經網路在訓練過程中學習到有用的資訊,這意味著引數...
MATLAB神經網路BP,誤差超大,怎樣除錯是誤差更接近目標值?主要除錯哪些引數?謝謝
被推薦的答案倒是沒說錯,基本上和沒說一樣 就好比問怎麼安排時間,回答一個 合理安排時間 誤差大,第一步需要嘗試的是做歸一化處理。有線性歸一化,有對數函式歸一化等等,這個你可以去網上搜尋資料歸一化方法,有相關的 應該。第二部需要做出的改動是隱層節點數量,如果節點數量太多,那麼結果的隨機性就會很大,如果...
matlab中建立bp神經網路的函式newff的引數的
1.newff雖然沒有規定輸入層神經元個數,那輸入層神經元個數是如何確定的?輸入層是根據你讀入資料的維度,自動生成的。2.我現在讀入了10張 把每張 歸一化成了50 20的,並轉換成1 1000的行向量,最後生成了10 1000的二維矩陣,然後,我再用eye 10,10 函式製造了一個單位矩陣,那麼...