LabVIEW中BP神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)及應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
LabVIEW是美國(guó)NI公司開(kāi)發(fā)的高效圖形化虛擬儀器開(kāi)發(fā)平臺(tái),它的圖形化編程具有直觀、簡(jiǎn)便、快速、易于開(kāi)發(fā)和維護(hù)等優(yōu)點(diǎn),在虛擬儀器設(shè)計(jì)和測(cè)控系統(tǒng)開(kāi)發(fā)等相關(guān)領(lǐng)域得到了日益廣泛的應(yīng)用,它無(wú)需任何文本程序代碼,而是把復(fù)雜、繁瑣的語(yǔ)言編程簡(jiǎn)化成圖形,用線條把各種圖形連接起來(lái)。BP神經(jīng)網(wǎng)絡(luò)屬于前饋神經(jīng)網(wǎng)絡(luò),它廣泛應(yīng)用函數(shù)逼近、模式識(shí)別、分類(lèi)和數(shù)據(jù)壓縮等領(lǐng)域,若將神經(jīng)網(wǎng)絡(luò)與虛擬儀器有機(jī)結(jié)合,則可以為提高虛擬儀器測(cè)控系統(tǒng)的性能提供重要的依據(jù)。
1 BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法
BP模型是一種應(yīng)用最廣泛的多層前向拓?fù)浣Y(jié)構(gòu),以三層BP神經(jīng)網(wǎng)絡(luò)作為理論依據(jù)進(jìn)行編程,它由輸入層、隱層和輸出層構(gòu)成。設(shè)輸入層神經(jīng)元個(gè)數(shù)為I,隱層神經(jīng)元個(gè)數(shù)為J,輸出層神經(jīng)元個(gè)數(shù)為K,學(xué)習(xí)樣本有N個(gè)(x,Y,)向量,表示為:輸入向量X{x1,x2,…,xI},輸出向量l,{Y1,Y2,…,Yx),理想輸出向量為T(mén){tl,t2,…,tK}。
(1)輸入層節(jié)點(diǎn)i,其輸出等于xi(i=1,2,…,I,將控制變量值傳輸?shù)诫[含層,則隱層第j個(gè)神經(jīng)元的輸入:
其中:Wji是隱層第J個(gè)神經(jīng)元到輸入層第i個(gè)神經(jīng)元的連接權(quán)值。
(2)隱層第J個(gè)神經(jīng)元的輸出:
(3)神經(jīng)網(wǎng)絡(luò)輸出層,第k個(gè)神經(jīng)元的輸入為:
其中:Vkj是輸出層第k個(gè)神經(jīng)元到隱層第j個(gè)神經(jīng)元的連接權(quán)值。
(4)神經(jīng)網(wǎng)絡(luò)輸出層,第志個(gè)神經(jīng)元的輸出為:
(5)設(shè)定網(wǎng)絡(luò)誤差函數(shù)E:
(6)輸出層到隱層的連接權(quán)值調(diào)整量△Vkj:
(7)隱層到輸入層的連接權(quán)值調(diào)整量wji:
2 用LabVlEW實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的兩種方法
用LabVIEw實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的兩種方法為:
(1)由于Matlab具有強(qiáng)大的數(shù)學(xué)運(yùn)算能力以及在測(cè)控領(lǐng)域的廣泛應(yīng)用。在LabVIEW中提供了MatlabScript節(jié)點(diǎn),用戶(hù)可在節(jié)點(diǎn)中編輯Matlab程序,并在Lab—VIEW中運(yùn)行;也可以在LabVIEW程序運(yùn)行時(shí)直接調(diào)用已經(jīng)存在的Matlab程序,如使用節(jié)點(diǎn)則必須在系統(tǒng)中安裝:Matlab5以上版本,在寫(xiě)入Matlab節(jié)點(diǎn)前要將程序先調(diào)試通過(guò),并確保其中變量的數(shù)據(jù)類(lèi)型匹配。
(2)由于LabVIEW的圖形程序是獨(dú)立于運(yùn)行平臺(tái)的,而且是一種數(shù)據(jù)驅(qū)動(dòng)的語(yǔ)言,可以方便地實(shí)現(xiàn)算法且易修改,結(jié)合其SubVI技術(shù)可以增加程序的利用率,因此可以采用圖形編程的方法實(shí)現(xiàn)前向網(wǎng)絡(luò)的算法。
2.1 利用Matlab Scriipt節(jié)點(diǎn)實(shí)現(xiàn)
在此以對(duì)一個(gè)非線性函數(shù)的逼近作為例子來(lái)說(shuō)明實(shí)現(xiàn)流程,其中輸入矢量p=[一1:O.05:1];目標(biāo)矢量f—sin(2。pi*p)+0.1randn(size(p))。利用.Mat—lab Script節(jié)點(diǎn)實(shí)現(xiàn)BP算法的過(guò)程如下:
(1)新建一個(gè)LabVIEw vi,在框圖程序中添加Matlab Script節(jié)點(diǎn)。
(2)在節(jié)點(diǎn)內(nèi)添加Matlab的動(dòng)量BP算法實(shí)現(xiàn)代碼,并分別在節(jié)點(diǎn)左右邊框分別添加對(duì)應(yīng)的輸入/輸出參數(shù),如圖1所示。
(3)在vi的前面板添加相應(yīng)的控件,設(shè)置輸入?yún)?shù),連接輸出控件。執(zhí)行程序,結(jié)果如圖2、圖3所示。
此方法能夠直接利用Matlab強(qiáng)大的神經(jīng)網(wǎng)絡(luò)工具箱,程序運(yùn)行時(shí)會(huì)自動(dòng)調(diào)用系統(tǒng)中已安裝的Matlab進(jìn)行計(jì)算,不用進(jìn)行復(fù)雜的編程,開(kāi)發(fā)效率很高。
2.2 利用圖形編程實(shí)現(xiàn)
LabVIEw是美國(guó)NI公司推出的基于圖形化編程的虛擬儀器軟件開(kāi)發(fā)工具,它無(wú)需任何文本程序代碼,而是把復(fù)雜、繁瑣的語(yǔ)言編程簡(jiǎn)化成圖形,用線條把各種圖形連接起來(lái)。在此以一個(gè)設(shè)備狀態(tài)分類(lèi)器設(shè)計(jì)作為例子來(lái)說(shuō)明實(shí)現(xiàn)流程輸入,該設(shè)備有8個(gè)輸入分量,即溫度、濕度等外部條件;而輸出狀態(tài)則有3種,分別為正常、偏小、偏大。這里采用12個(gè)訓(xùn)練樣本,每個(gè)樣本有8個(gè)分量,3類(lèi)輸出分別編碼為(O 1),(1 0),(1 1),以下即為輸入樣本及標(biāo)準(zhǔn)輸出數(shù)據(jù)(見(jiàn)圖4、圖5)。
BP神經(jīng)網(wǎng)絡(luò)隱層輸入在LabVIEw中的實(shí)現(xiàn)。根據(jù)BP學(xué)習(xí)算法中式(1)編寫(xiě)相應(yīng)的程序。其中x為輸入樣本;w為隱層輸入權(quán)值,主要應(yīng)用LabVIEw中的函數(shù)一數(shù)學(xué)一線性代數(shù)一矩陣A×B實(shí)現(xiàn)權(quán)值與輸入樣本的矩陣相乘,并通過(guò)For循環(huán)計(jì)算得到BP神經(jīng)網(wǎng)絡(luò)的
隱層輸人H(見(jiàn)圖6)。
(2)BP神經(jīng)網(wǎng)絡(luò)隱層輸出H的圖形化程序。根據(jù)算法中的式(2)編寫(xiě),由于在很多測(cè)試實(shí)踐中參數(shù)間的關(guān)系是非線性的,這里主要應(yīng)用Sigmoid型tansig函數(shù)作為隱層的傳遞函數(shù),主要應(yīng)用程序面板中函數(shù)一數(shù)學(xué)一數(shù)值及基本與特殊函數(shù)等數(shù)學(xué)控件實(shí)現(xiàn)(見(jiàn)圖7)。
(3)BP神經(jīng)網(wǎng)絡(luò)輸出層的輸入及輸出程序框圖與隱層的類(lèi)似,分別根據(jù)式(3)、式(4)編程即可實(shí)現(xiàn),在此不再重復(fù)。
(4)網(wǎng)絡(luò)誤差函數(shù)E的圖形化程序。根據(jù)算法中式(5)編寫(xiě)程序,其中:t為理想輸出,y為網(wǎng)絡(luò)輸出。其中應(yīng)用函數(shù)一數(shù)學(xué)一基本與特殊函數(shù)中的指數(shù)函數(shù)控件來(lái)實(shí)現(xiàn)(見(jiàn)圖8)。
(5)BP神經(jīng)網(wǎng)絡(luò)各參數(shù)調(diào)整量的圖形化程序根據(jù)上述學(xué)習(xí)算法中的式(6)和式(7),其中:x為網(wǎng)絡(luò)輸入樣本;y,£分別為網(wǎng)絡(luò)實(shí)際輸出和期望輸出;h為隱層輸出;v為隱層輸出權(quán)值。通過(guò)調(diào)用LabVIEw軟件中數(shù)學(xué)計(jì)算控件,經(jīng)過(guò)一系列數(shù)學(xué)計(jì)算,分別得到網(wǎng)絡(luò)隱層輸出權(quán)值調(diào)整量△v以及隱層輸入權(quán)值調(diào)整量△w,如圖9、圖10所示。
(6)完整的學(xué)習(xí)算法的圖形化程序。將以上各個(gè)程序模塊綜合在一起,可以得到完整的學(xué)習(xí)算法實(shí)現(xiàn)程序,如圖11所示。
通過(guò)設(shè)定網(wǎng)絡(luò)的輸入樣本z、輸出期望t、隱層輸入權(quán)值w,輸出v的初始值,經(jīng)過(guò)一系列的矩陣運(yùn)算,獲得調(diào)整后隱層權(quán)值w,v參數(shù)值。運(yùn)行結(jié)果如圖12所示,由圖可以非常直觀看出,網(wǎng)絡(luò)輸出與網(wǎng)絡(luò)理想輸出相當(dāng)接近,說(shuō)明網(wǎng)絡(luò)訓(xùn)練的結(jié)果是滿意的。
3 結(jié) 語(yǔ)
在利用LabVIEw實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的計(jì)算,方法一通過(guò)直接調(diào)用Matlab程序,簡(jiǎn)單易行,只是事先需要裝有Matlab5.O以上的版本。方法二運(yùn)用圖形化編程對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真,具有形象、直觀、便于使用和理解的優(yōu)于傳統(tǒng)文本編程語(yǔ)言的特點(diǎn)。