BP神經(jīng)網(wǎng)絡的構建與使用_第1頁
BP神經(jīng)網(wǎng)絡的構建與使用_第2頁
BP神經(jīng)網(wǎng)絡的構建與使用_第3頁
BP神經(jīng)網(wǎng)絡的構建與使用_第4頁
BP神經(jīng)網(wǎng)絡的構建與使用_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、BP神經(jīng)網(wǎng)絡的構建與使用一、函數(shù)逼近:1. 實驗內(nèi)容:選取d二sin(2二x)sin(2二y)為測試函數(shù),其中x 0,1 , y 0,1。構造獨立的訓練樣本集和檢驗樣本集,實驗在不同的網(wǎng)絡規(guī)模、樣本集大小、學 習速率等條件下,網(wǎng)絡的學習能力、推廣能力和性能上的差異。2. 實驗過程:用MATLAB構建并使用BP神經(jīng)網(wǎng)絡,這里網(wǎng)絡訓練采用Leve nberg-Marquardt 算法。具體程序:k=0.05;%隨機數(shù)據(jù)的選取精度m=1.0/k;%矩陣的行或列的數(shù)據(jù)個數(shù)X=k:k:1;Y=k:k:1;%輸入矩陣2*400p=zeros(2,m*m);for i=1:m,for j=1:m,p(1,(

2、i-1)*m+j)=X(i);p(2,(i-1)*m+j)=Y(j);endend%輸出矩陣1*400Z1=zeros(1,m*m);for i=1:m,for j=1:m,Z1(1,(i-1)*m+j)=si n(2*pi*X(i)*s in (2*pi*Y(j);endend%BP神經(jīng)網(wǎng)絡n=10;%隱層神經(jīng)元數(shù)目%建立BP網(wǎng)絡結構,選擇隱層和輸出層神經(jīng)元傳遞函數(shù)分別為%tansig函數(shù)和purelin 函數(shù)%網(wǎng)絡訓練采用 Levenberg-Marquardt 算法 trainlmnet=n ewff( minm ax(p), n,1,'ta nsig','pur

3、eli n','tra ini m');%網(wǎng)絡訓練n et.tra in Param.epochs=50;%訓練時間n et.trai nParam.goal=0.01;%訓練精度n et.trai nParam.lr=0.001;%學習速率n et=trai n(n et,p,Z1);Z2=sim(net,p);%將 Z1 和 Z2 轉換成 ZZ1(20*20),ZZ2(20*20)ZZ仁zeros(m,m);ZZ2=zeros(m,m);for i=1:m,for j=1:m,ZZ1(i,j)=Z1(1,(i-1)*m+j);ZZ2(i,j)=Z2(1,(i-1)*

4、m+j);endend%期望輸出的曲面圖subplot(1,2,1)surf(X,Y,ZZ1)title(' 期望輸出');%實際輸出的曲面圖subplot(1,2,2)surf(X,Y,ZZ2)title(' 實際輸出);3. 實驗結果及分析:運行后,我們得到期望輸出和實際輸出的曲面圖(圖1),經(jīng)過比較,原曲面圖和非線性函數(shù)的曲面圖很接近,這說明,經(jīng)過訓練,BP網(wǎng)絡對非線性函數(shù)的逼近效果相當好。下面對網(wǎng)絡規(guī)模、樣本集大小、學習速率等條件進行修改并觀察結果,分析這些因素對網(wǎng)絡的學習能力、推廣能力和性能上的影響。1) 神經(jīng)元數(shù)目n變化n=5 (圖 2)圖2n=10 (圖

5、3)圖3比較圖2和圖3,可以看出,隱層神經(jīng)元的數(shù)目對于網(wǎng)絡逼近效果有一定的影響,一般來說,隱層神經(jīng)元數(shù)目越多,則BP網(wǎng)絡逼近非線性函數(shù)的能力越強,而同時網(wǎng)絡訓練所用的時間相對來說更長一些。2)樣本集大小40*40 (圖 4)圖420*20 (圖 5)圖5比較圖4和圖5,可以看出,樣本集的數(shù)目對于網(wǎng)絡逼近效果有一定的影響,一般來說,樣本集的數(shù)目越多,網(wǎng)絡逼近效果越好。3)學習速率lr=0.001 (圖 6)圖6lr=0.01 (圖 7)圖7比較圖6和圖7,可以看出,學習速率對于網(wǎng)絡逼近效果有一定的影響,一般來說,學 習速率越小,網(wǎng)絡逼近效果越好,但是學習速率過小會造成訓練時間過長。4. BP算法

6、的改進擬牛頓算法圖8Levenberg-Marquardt 算法圖9在前饋反向傳播網(wǎng)絡應用中, 對某一特定的問題, 很難確定哪種訓練算法最好, 因為這 取決于問題的復雜性、訓練樣本數(shù)、網(wǎng)絡權重和閾值個數(shù)以及期望誤差等許多因素。一般來說,網(wǎng)絡具有幾百個權值時, 采用Levenberg-Marquardt 算法收斂速度最快。 如果要求正確 訓練時,該算法的優(yōu)點更明顯。分類1.實驗內(nèi)容:進行Iris數(shù)據(jù)分類實驗,通過實驗選擇具有最佳性能的網(wǎng)絡結構和訓練參數(shù),并與最近鄰分類器進行性能對比。2.實驗過程:具體程序:K=3;%類別N=50;%每類的樣本數(shù)目M=4;%樣本的維數(shù)Q=zeros(M,N*K);

7、%定義樣本矩陣%讀入數(shù)據(jù)a,b,c,d=textread('iris.txt','%f %f %f %f %*s', 'delimiter',','); %放入4*150的矩陣中,每一列為一個樣本for i=1:N*K,Q(1,i)=a(i);Q(2,i)=b(i);Q(3,i)=c(i);Q(4,i)=d(i);end%將數(shù)據(jù)分成兩部分,一部分用于訓練,一部分用于測試%等間距的方式抽取數(shù)據(jù)xn_test=zeros(M,N*K/2);xn_trai n=zeros(M,N*K/2);for i=1:K*N/2,for j=1:M

8、,xn_test(j,i)=Q(j,i*2-1);xn_train (j,i)=Q(j,i*2);endend%訓練目標,測試目標,三類,分別是1 0 0,0 1 0,0 0 1dn_test=zeros(K,N*K/2);dn_trai n=zeros(K,N*K/2);for j=1:K,for i=1:N/2,dn_trai n(j,(j-1)*N/2+i)=1; dn_test(j,(j-1)*N/2+i)=1;endend%隱層節(jié)點數(shù)%輸出維數(shù)%訓練輸入%訓練輸出%訓練次數(shù)%函數(shù)接口賦值NodeNum = 20;TypeNum = 3; pl = xn_train; t1 = dn

9、_trai n;Epochs = 1000;P = xn test;%測試輸入T = dn _test;%真實分類%設置網(wǎng)絡參數(shù)%隱層的傳遞函數(shù)采用tan-sigmoid輸出層采用線性傳遞函數(shù)TF1 = 'tan sig'TF2 = 'pureli n'%構造BP神經(jīng)網(wǎng)絡,網(wǎng)絡訓練采用Levenberg-Marquardt算法trainlm%最大訓練次數(shù)%最小均方誤差%最小梯度%訓練顯示間隔net = newff(mi nmax(p1),NodeNum TypeNum,TF1 TF2,'trai nlm');n et.tra in Param.e

10、pochs = Epochs;n et.tra in Param.goal = 1e-8;n et.tra in Param. min _grad = 1e-20;n et.tra in Param.show = 200;%訓練與測試net = train(n et,p1,t1);X = sim( net,P);X = full(compet(X)%訓練%測試-輸出為預測值%競爭輸出%compet:Competitive tran sfer function %full:C onvert sparse matrix to full matrix%正確分類顯示為1%正確分類率%結果統(tǒng)計Resul

11、t = sum(abs(X-T)Percent = sum(Result)/le ngth(Result)3.實驗結果及分析:Result1 throuEh 1416thriguchCo Juuis29throwhCflllTBlTLSi'hTflTIgh5?Colunns57七肛口 ugh1.Colunns71thrauzhPercent =0.9333圖10對75組測試樣本進行分類, 其中結果1表示分類正確,0表示分類錯誤。如圖10所示, 正確率達到93.33%,說明BP神經(jīng)網(wǎng)絡對數(shù)據(jù)集分類是可行的。4.最近鄰分類器這里采用了 K均值算法對數(shù)據(jù)集iris.txt進行分類1) K-M

12、eans算法描述2) SAA類:包裝了 KMeans聚類、聚類結果輸出、正確率統(tǒng)計等class SAA<public:struct DataType</對樣本數(shù)據(jù)董新包裝 double;int Father;dnuble *uncle;/到兩個類中心的距離 ;struct Clui5terType</.中心double *center; int sonnum;;int DataNun; int Dimension; int K: int HALT; DATA data;SAA(DATA data);void KMeans();/K均値聚類 訕(1 Display后魁輙據(jù)鞭蚩d

13、ouble Cor»pare_right() 7"統(tǒng)計正碩率 void GetUalue(double *str1.double *str2,int dim);/M值 int FindFather(doutole *p,int 10:"指定更離最近的Father double SquareOistancfdouble *str! .double *str2 ,int dim) ;/丿計算距離 int Compare(double *p1 .double *p2,int din);"比較是否是同一個祥末藪據(jù) uoid GetDatasetfDataTpe

14、*p1.DATA p2,int datanun,int din);"添加新類時,新類中心改變uoid NewCenterReduce(ClusterType *pi jint trouble *p2rint din);void NewCenterPlus(ClusterType *p1,int tfdoubl& *p2fint dim); bool judge(int i,double *pos);/判斷該樣本是不是類中心"從原類中刪除時,原類中心改變protected: double Temp; DataType *DataMenber, *KResultF*Cu

15、rrentstatus,*NewSttus; ClusterType * Clusterllember,*NewClustert*Currentcluster;4)部分代碼:聚類部分代碼:"開始耒類.直到黍類申丄環(huán)再發(fā)主支化逐個修改,uhileONALT)"衣影日S坷、仁宣新歸無 沢修壩賣中心黑;昭翳杲否完Hwg類if (CDnpdre(DldClu5tfr j center iClusterHciiiber j .匸entrr ,Diiwesi(jn”"各十類的類中心是否岌牛改變hrpAli:HfllT=1;殳龍則聚類完咸Far(i-G;i<DataNun

16、i;i+ + ) for(j-0;j<K;j*)DataHembpri J,unclej J=SquareDistance(DataMeraberi.data匕丄ustEFMpntiEFL j J.centerinensian); fo-DatdHenberi,father;=FindFatheir(DataMenber| i .uncle,K£KClii5terMeinterfa | ,onnuin>1)papDatateniberfl | .Fattier;CluEtPrMDiTiberpa .sonnuiT>-=1從原夬中刪観該莊pb=Ddtahtemiibe

17、t'i «Fatlier=FLndFather (DtaMmber i « uncle f K|; Liusternenit)errpDi.sQnnui=i;/jo§lii¥7T 的新類中黃CetUaLue(01dCLusterj.center,Cl(JsterHenberj.center+Oinension);修改聚類中心的代碼:"添加到新決時,新類中心改變uoid Sfifl:NewCenterPlus(ClusterType *p1Rint t,double *p2,int dim)int 1;For(l=0;i<dim;:

18、i+ + pl t J .centerii=pl t J .center 1 + (pzl j-pl t .centeriJ)/(pi t J .sDnnumj ;>void SAfi: NeviCen ter Reduce (Cluster Tipe *p1 ,int ttdouble *p2 f int diin)"從原類巾刪除時,原類中心改變int i;for(i=0;i<dim;i+)p1t.centeri = p1t.centeri + (p1t.centeri-p2i)/(p1t .sonnun);5)統(tǒng)計正確率:(因為初始的聚類中心是隨機選取的,所以每次運行 的結果不一樣): E:M' B P km ea n & De b u g k m ea n s. exe1 .叵 1"正確率;眄/蹣師7Press anv kev to continue圖11如圖11所示,用K均值進行分類的正確率達到90.67%。5. BP神經(jīng)網(wǎng)絡與最近鄰分類器的性能對比這里的BP神經(jīng)網(wǎng)絡,隱層的傳遞函數(shù)采用tan-sigmoid ,輸出層采用線性傳遞函數(shù),網(wǎng)絡訓練采用 Levenberg-Marquardt算法trainlm ,隱層節(jié)點20,最小

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論