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

下載本文檔

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

文檔簡介

1、BP神經(jīng)網(wǎng)絡(luò)的構(gòu)建與使用一、 函數(shù)逼近:1. 實驗內(nèi)容:選取為測試函數(shù),其中,。構(gòu)造獨立的訓練樣本集和檢驗樣本集,實驗在不同的網(wǎng)絡(luò)規(guī)模、樣本集大小、學習速率等條件下,網(wǎng)絡(luò)的學習能力、推廣能力和性能上的差異。2. 實驗過程:用MATLAB構(gòu)建并使用BP神經(jīng)網(wǎng)絡(luò), 這里網(wǎng)絡(luò)訓練采用Levenberg-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,(i-1)*m+j)=X(i); p(2,(i-1)*m+j

2、)=Y(j); endend%輸出矩陣1*400Z1=zeros(1,m*m);for i=1:m, for j=1:m, Z1(1,(i-1)*m+j)=sin(2*pi*X(i)*sin(2*pi*Y(j); endend%BP神經(jīng)網(wǎng)絡(luò)n=10;%隱層神經(jīng)元數(shù)目%建立BP網(wǎng)絡(luò)結(jié)構(gòu),選擇隱層和輸出層神經(jīng)元傳遞函數(shù)分別為%tansig函數(shù)和purelin函數(shù)%網(wǎng)絡(luò)訓練采用Levenberg-Marquardt算法trainlmnet=newff(minmax(p),n,1,'tansig','purelin','trainlm');%網(wǎng)絡(luò)訓練ne

3、t.trainParam.epochs=50;%訓練時間net.trainParam.goal=0.01;%訓練精度net.trainParam.lr=0.001;%學習速率net=train(net,p,Z1);Z2=sim(net,p);%將Z1和Z2轉(zhuǎn)換成ZZ1(20*20),ZZ2(20*20)ZZ1=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)*m+j); endend%期望輸出的曲面圖subplot(1,2,1)surf(X,Y,ZZ1)ti

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

5、經(jīng)元數(shù)目越多,則BP網(wǎng)絡(luò)逼近非線性函數(shù)的能力越強,而同時網(wǎng)絡(luò)訓練所用的時間相對來說更長一些。2) 樣本集大小40*40(圖4)圖420*20(圖5)圖5比較圖4和圖5,可以看出,樣本集的數(shù)目對于網(wǎng)絡(luò)逼近效果有一定的影響,一般來說,樣本集的數(shù)目越多,網(wǎng)絡(luò)逼近效果越好。3) 學習速率lr=0.001(圖6)圖6lr=0.01(圖7)圖7比較圖6和圖7,可以看出,學習速率對于網(wǎng)絡(luò)逼近效果有一定的影響,一般來說,學習速率越小,網(wǎng)絡(luò)逼近效果越好,但是學習速率過小會造成訓練時間過長。4. BP算法的改進擬牛頓算法圖8Levenberg-Marquardt算法圖9在前饋反向傳播網(wǎng)絡(luò)應用中,對某一特定的問題,

6、很難確定哪種訓練算法最好,因為這取決于問題的復雜性、訓練樣本數(shù)、網(wǎng)絡(luò)權(quán)重和閾值個數(shù)以及期望誤差等許多因素。一般來說,網(wǎng)絡(luò)具有幾百個權(quán)值時,采用Levenberg-Marquardt算法收斂速度最快。如果要求正確訓練時,該算法的優(yōu)點更明顯。二、 分類1. 實驗內(nèi)容:進行Iris數(shù)據(jù)分類實驗,通過實驗選擇具有最佳性能的網(wǎng)絡(luò)結(jié)構(gòu)和訓練參數(shù),并與最近鄰分類器進行性能對比。2. 實驗過程:具體程序:K=3;%類別N=50;%每類的樣本數(shù)目M=4;%樣本的維數(shù)Q=zeros(M,N*K);%定義樣本矩陣%-讀入數(shù)據(jù)-a,b,c,d=textread('iris.txt','%f %

7、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_train=zeros(M,N*K/2);for i=1:K*N/2, for j=1:M, xn_test(j,i)=Q(j,i*2-1); xn_train(j,i)=Q(j,i*2); ende

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

9、 = dn_test; % 真實分類% 設(shè)置網(wǎng)絡(luò)參數(shù)%隱層的傳遞函數(shù)采用tan-sigmoid輸出層采用線性傳遞函數(shù)TF1 = 'tansig'TF2 = 'purelin'%構(gòu)造BP神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)訓練采用Levenberg-Marquardt算法trainlmnet = newff(minmax(p1),NodeNum TypeNum,TF1 TF2,'trainlm');net.trainParam.epochs = Epochs; % 最大訓練次數(shù)net.trainParam.goal = 1e-8; % 最小均方誤差net.trainPa

10、ram.min_grad = 1e-20; % 最小梯度net.trainParam.show = 200; % 訓練顯示間隔%-訓練與測試-net = train(net,p1,t1); % 訓練X = sim(net,P); % 測試 - 輸出為預測值X = full(compet(X) % 競爭輸出%compet:Competitive transfer function%full:Convert sparse matrix to full matrix% 結(jié)果統(tǒng)計Result = sum(abs(X-T) % 正確分類顯示為1Percent = sum(Result)/length(R

11、esult) % 正確分類率3. 實驗結(jié)果及分析:圖10對75組測試樣本進行分類,其中結(jié)果1表示分類正確,0表示分類錯誤。如圖10所示,正確率達到93.33%,說明BP神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)集分類是可行的。4. 最近鄰分類器這里采用了K均值算法對數(shù)據(jù)集iris.txt進行分類。1) K-Means算法描述否開始根據(jù)data得到:K(樣本類別數(shù))、Dimension(樣本維數(shù))、DataNum(樣本數(shù))。HALT(聚類停止標志)=0隨機選取K個樣本,分別作為K個類的初始聚類中心依次計算每個樣本與K個聚類中心的距離,從中選擇最近的聚類,將該樣本加入這個聚類中,修改聚類中心HALT=0?計算每個樣本到新聚類

12、中心的距離,選擇近的距離重新歸類,對于類別改變的樣本,從原簇中刪除該樣本(修改原簇的中心),添加到新簇中(修改新簇的中心)K個類中心是否發(fā)生改變?結(jié)束否是HALT=1是2) SAA類:包裝了KMeans聚類、聚類結(jié)果輸出、正確率統(tǒng)計等創(chuàng)建DATA對象創(chuàng)建SAA對象調(diào)用ReadData("iris.txt")讀取數(shù)據(jù)調(diào)用Compare_right()統(tǒng)計正確率調(diào)用KMeans()進行聚類調(diào)用DisPlay()將聚類結(jié)果輸出到文件3) 工作流程:4) 部分代碼:ü 聚類部分代碼:ü 修改聚類中心的代碼:5) 統(tǒng)計正確率:(因為初始的聚類中心是隨機選取的,所以

13、每次運行的結(jié)果不一樣):圖11如圖11所示,用K均值進行分類的正確率達到90.67%。5. BP神經(jīng)網(wǎng)絡(luò)與最近鄰分類器的性能對比這里的BP神經(jīng)網(wǎng)絡(luò),隱層的傳遞函數(shù)采用tan-sigmoid,輸出層采用線性傳遞函數(shù),網(wǎng)絡(luò)訓練采用Levenberg-Marquardt算法trainlm,隱層節(jié)點20,最小均方誤差1e-8,最小梯度1e-20。最近鄰分類器隨機選取初始聚類中心,最終聚成三類,并對正確率進行統(tǒng)計。(因為結(jié)果只是聚成了三類,并不知道這三類究竟分別是哪一類,可以假設(shè)第一類為Iris-setosa,第二類為Iris-versicolor,第三類為Iris-virginica或者第一類為Iris-versicolor,第二類為Iris-setosa,第三類為Iris-virginica等,一共六種可能,選取其中正確率最高的作為最終結(jié)果)。將iris.txt數(shù)據(jù)分成兩部分(等間距的方式抽取數(shù)據(jù)),一部分用于訓練,一部分用于測試。對測試數(shù)據(jù)集測試五次,得到的正確率如表1所示:12345BP神經(jīng)網(wǎng)絡(luò)0.94670.90670.88000.88000.9333最近鄰分類器0.9066670.5133330.8266670.8133330.913333表1觀察兩組數(shù)據(jù)可以看出,BP神經(jīng)網(wǎng)絡(luò)的

溫馨提示

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

評論

0/150

提交評論