新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的人工神經(jīng)網(wǎng)絡(luò)系統(tǒng)的實現(xiàn)方法

基于FPGA的人工神經(jīng)網(wǎng)絡(luò)系統(tǒng)的實現(xiàn)方法

作者: 時間:2010-12-06 來源:網(wǎng)絡(luò) 收藏

圖1中,黑圓表示輸入為固定值1的神經(jīng)元,用它與隱層神經(jīng)元的連接權(quán)w011~w01n來表示隱層神經(jīng)元的閾值,它與輸出層神經(jīng)元的連接權(quán)w02來表示輸 出層神經(jīng)元的閾值,w1I~w1n為輸入層到隱層之間的連接權(quán)值,w21~w2n為隱層到輸出層之間的連接權(quán)值。描述一個如圖1所示網(wǎng)絡(luò)的BP算法,它主 要包括2個階段:
1)正向傳播階段 從樣本集中取出一個樣本(x,d),計算隱層各個節(jié)點(神經(jīng)元)輸出yI(i)=f(wl(i)x-w01(i))和輸出層節(jié)點輸出g.JPG。
2)反向傳播階段 按下式反向計算各層節(jié)點的局部梯度δ和權(quán)值修正量h.JPG。
若激勵函數(shù)f選用單極性Sigmoid函數(shù),則:
i.JPG
k.JPG
式中,x是輸入,d是期望輸出,f為激勵函數(shù),η為學(xué)習(xí)率,δ(o)為輸出層節(jié)點的梯度,δi為隱層節(jié)點i的梯度。

3 BP神經(jīng)網(wǎng)絡(luò)的VHDL設(shè)計
3.1 選擇系統(tǒng)處理數(shù)據(jù)字長
在運算中,涉及大量乘累加操作,本應(yīng)采用浮點運算,但是占用的硬件資源和速度都將會不理想;如果采用定點運算,運算中帶來的“位增長”率將使每一級運算的 最大值可能會逐級加倍,因此如果不精心地規(guī)劃設(shè)計,這些值就會溢出,結(jié)果會因為精度不夠而無法使用。因此采用自定義的定點數(shù)進(jìn)行基本的運算單元設(shè)計。本系 統(tǒng)采用不削弱神經(jīng)網(wǎng)絡(luò)能力的最小要求16位(1,5,lO)帶符號定點數(shù)表示,最高位為符號位,低10位為小數(shù)位,其余為整數(shù)位。
例如:將1.5用16位(1,5,1O)帶符號定點數(shù)可表示為:0000011000000000,將-2.3用16位(1,5,10)帶符號定點數(shù)可表示為:10001 00100110011。
3.2 BP神經(jīng)網(wǎng)絡(luò)模塊庫的建立
根據(jù)文件復(fù)用性的要求,建立基于VHDL語言的BP神經(jīng)網(wǎng)絡(luò)元件庫,根據(jù)層次設(shè)計的要求,BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的描述分為3層:第1層是前向 傳輸模塊的描述,包括輸入信號加權(quán)求和,權(quán)值的存儲和非線性激勵函數(shù)的實現(xiàn);第2層是反向傳輸模塊的描述;第3層是系統(tǒng)控制模塊的描述。下面用VHDL語 言對這3層結(jié)構(gòu)分別進(jìn)行設(shè)計。
3. 2.1 前向傳輸模塊的設(shè)計
圖2為前向傳輸模塊的VHDL程序設(shè)計流程。計算時x和w都是16位有符號數(shù)。相乘后為3l位數(shù)(最高位為符號位(兩輸入數(shù)符號位相異 或),低20位為小數(shù)位,其余10位為整數(shù)位),為了節(jié)省硬件資源四舍五入,舍去低10位小數(shù)位,為了防止后面相加是溢出,再擴展4位整數(shù)位,所以乘累加 后輸出為25位。

本文引用地址:http://m.butianyuan.cn/article/191453.htm

l.JPG


函數(shù)變換部分:對于硬件來說,其可實現(xiàn)的運算極為有限,而BP網(wǎng)絡(luò)中的作用函數(shù)sigmoid函數(shù)是非線性的,是硬件實現(xiàn)的一個難點,常用的實現(xiàn) 方法是查表法,這種方法比較簡單,但需要占用較多資源,當(dāng)需要實現(xiàn)的網(wǎng)絡(luò)規(guī)模較大且精度要求較高時,查表法的實現(xiàn)有很大障礙;還有一個方法就是多項式逼近 法。本系統(tǒng)使用了查表和多項式逼近2種方法。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉