新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的人工神經網絡系統的實現方法

        基于FPGA的人工神經網絡系統的實現方法

        作者: 時間:2010-12-06 來源:網絡 收藏

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

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

        本文引用地址:http://www.104case.com/article/191453.htm

        l.JPG


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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 双辽市| 仪征市| 明水县| 晴隆县| 五指山市| 阳城县| 洞头县| 郓城县| 泗水县| 乐安县| 普兰县| 沂水县| 鸡东县| 吴忠市| 宜昌市| 巴林左旗| 武平县| 赤水市| 宿迁市| 乐业县| 运城市| 上林县| 平顺县| 遂川县| 米易县| 麦盖提县| 海城市| 临颍县| 会东县| 公主岭市| 洪雅县| 林芝县| 莫力| 景宁| 乌苏市| 商南县| 嘉义市| 资阳市| 谷城县| 玉田县| 库尔勒市|