資源描述:
《BP神經(jīng)網(wǎng)絡(luò)實例含源碼.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、BP神經(jīng)網(wǎng)絡(luò)算法實現(xiàn)一:關(guān)于BP網(wǎng)絡(luò)BP(BackPropagation)神經(jīng)網(wǎng)絡(luò),即誤差反傳誤差反向傳播算法的學習過程,由信息的正向傳播和誤差的反向傳播兩個過程組成。輸入層各神經(jīng)元負責接收來自外界的輸入信息,并傳遞給中間層各神經(jīng)元;中間層是內(nèi)部信息處理層,負責信息變換,根據(jù)信息變化能力的需求,中間層可以設(shè)計為單隱層或者多隱層結(jié)構(gòu);最后一個隱層傳遞到輸出層各神經(jīng)元的信息,經(jīng)進一步處理后,完成一次學習的正向傳播處理過程,由輸出層向外界輸出信息處理結(jié)果。當實際輸出與期望輸出不符時,進入誤差的反向傳播階段。誤差通過輸
2、出層,按誤差梯度下降的方式修正各層權(quán)值,向隱層、輸入層逐層反傳。周而復(fù)始的信息正向傳播和誤差反向傳播過程,是各層權(quán)值不斷調(diào)整的過程,也是神經(jīng)網(wǎng)絡(luò)學習訓(xùn)練的過程,此過程一直進行到網(wǎng)絡(luò)輸出的誤差減少到可以接受的程度,或者預(yù)先設(shè)定的學習次數(shù)為止。BP網(wǎng)絡(luò)主要應(yīng)用于以下方面:函數(shù)逼近、模式識別和分類、數(shù)據(jù)壓縮。BP神經(jīng)網(wǎng)絡(luò)有較強的泛化性能,使網(wǎng)絡(luò)平滑的逼近函數(shù),能合理的響應(yīng)被訓(xùn)練以外的輸入。同時,BP網(wǎng)絡(luò)又有自己的限制與不足,主要表現(xiàn)在:需要較長的訓(xùn)練時間、網(wǎng)絡(luò)訓(xùn)練的結(jié)果可能使得權(quán)值逼近局部最優(yōu)、訓(xùn)練數(shù)據(jù)范圍外的數(shù)據(jù)泛
3、化能力較差。為了避免訓(xùn)練陷入局部最優(yōu)解,本程序采用改進的BP網(wǎng)絡(luò)訓(xùn)練,既加入動量因子,使得網(wǎng)絡(luò)在最優(yōu)解附近有一定的震蕩,跳出局部最優(yōu)的范圍。BP網(wǎng)絡(luò)訓(xùn)練中學習速率與動量因子的選擇很重要,在后面的內(nèi)容中將進行詳細的討論。二:訓(xùn)練的函數(shù)程序中訓(xùn)練的函數(shù)為一個三輸入一輸出的非線性函數(shù),如下所示:,網(wǎng)絡(luò)結(jié)構(gòu)為:3—5—1三:程序及相關(guān)界面(VB)1主界面16代碼:PrivateSubCommand1_Click()form2.Visible=FalseForm3.Visible=TrueEndSubPrivateSub
4、Command2_Click()form2.Visible=FalseForm1.Visible=TrueEndSubPrivateSubCommand3_Click()form2.Visible=FalseForm4.Visible=TrueEndSubPrivateSubCommand4_Click()form2.Visible=FalseForm5.Visible=TrueEndSubPrivateSubCommand5_Click()EndEndSubPrivateSubForm_Load()Comma
5、nd3.Enabled=FalseCommand4.Enabled=FalseEndSub2查看網(wǎng)絡(luò)結(jié)構(gòu)16代碼:PrivateSubCommand1_Click()Form3.Visible=Falseform2.Visible=TrueEndSub3網(wǎng)絡(luò)訓(xùn)練代碼:16PrivateSubCommand1_Click()Form1.Visible=Falseform2.Visible=TrueEndSubPrivateSubCommand2_Click()Label2.Caption="樣本訓(xùn)練中…"Dimi
6、AsInteger,jAsInteger,kAsInteger,pAsInteger,sAsSingleDimMaxx(1To3)AsSingle,Minx(1To3)AsSingle,Meanx(1To3)AsSingleDimx(1To3,1To100)AsSingle,sumx(1To3)AsSingle,TempAsSingleDimDatex(1To3,1To100)AsSingle,inputx(1To3)AsSingle,outputx(1To100)AsSingleDimEx(1To100)As
7、SingleDimtime(1To5000)AsInteger,cishu(1To100)AsIntegerDimDv_1(1To5,1To3)AsSingle,Dw_1(1To5)AsSingleDimRAsSingleDimMaxdAsSingle,MindAsSingleDims1(1To5)AsSingle,y1(1To5,1To100)AsSingle,s2AsSingle,y2(1To100)AsSingleDimdeltW(1To100)AsSingle,deltV(1To5,1To100)AsS
8、ingleDimDw(1To5)AsSingle,Dv(1To5,1To3)AsSingleDimMyIn(1To3)AsSingleDimErrorx(1To5000)AsSingleRandomizeFori=1To3Maxx(i)=0Minx(i)=0Meanx(i)=0NextiTemp=0Maxd=0Mind=0Fori=1To5Forj=1To3Dv_1(i,j)=0v(i