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