国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的誤差校正神經(jīng)網(wǎng)絡算法設計與實現(xiàn)

2015-02-23 08:28:44朱承
電子器件 2015年4期

朱承

(重慶電子工程職業(yè)學院,重慶401331)

?

基于FPGA的誤差校正神經(jīng)網(wǎng)絡算法設計與實現(xiàn)

朱承*

(重慶電子工程職業(yè)學院,重慶401331)

摘要:為了能夠在真實硬件平臺上進行實現(xiàn),對原有的誤差校正構(gòu)造性神經(jīng)網(wǎng)絡算法進行了優(yōu)化,并對優(yōu)化后的誤差修正算法進行了FPGA設計與實現(xiàn)。提出算法通過在自動生成一個合適的神經(jīng)架構(gòu)的同時對二個參數(shù)進行設置來提高算法性能。對這種算法實現(xiàn)的所有步驟進行了全面的描述并利用兩種基準問題對結(jié)果進行了深入分析。結(jié)果顯示,與標準的基于個人計算機(PC)的實現(xiàn)相比,提出的神經(jīng)網(wǎng)絡算法FPGA實現(xiàn)在計算速度方面有著明顯的提高,由此證明了FPGA在誤差校正算法神經(jīng)計算任務中的實用性及適用性。

關(guān)鍵詞:FPGA;構(gòu)造型神經(jīng)網(wǎng)絡(CoNN);誤差校正;閾值網(wǎng)絡

人工神經(jīng)網(wǎng)絡(ANN)是受大腦功能啟發(fā)而得到的能夠應用在聚類和分類問題上的數(shù)學模型,這種數(shù)學模型已在不少領(lǐng)域獲得了成功應用,包括模式識別、股市預測、控制任務、醫(yī)學診斷及預報。盡管已在ANN領(lǐng)域進行了多年研究,但為給定的問題選擇一個合適的架構(gòu)仍是一個艱巨的任務[1-2]。

在解決或緩解這一問題的幾種策略中,隨著對輸入數(shù)據(jù)進行分析,構(gòu)造型神經(jīng)網(wǎng)絡(CoNN)使網(wǎng)絡的生成成為可能。由此這些網(wǎng)絡能夠與這組數(shù)據(jù)的復雜性相匹配。此外,對于CoNN中的訓練程序在標準前饋神經(jīng)網(wǎng)絡中需要很大計算量的問題,可通過增加并行計算速度來解決。誤差校正訓練競爭型網(wǎng)絡是最近提出[3]的一種CoNN算法,由于這種算法和大多數(shù)的CoNN的一樣未凍結(jié)先前合并的神經(jīng)元的突觸權(quán)值,且包含有一個內(nèi)置的用于避免過擬合問題的過濾方案,因此該算法能夠允許神經(jīng)元在整個訓練過程中進行學習,從而實現(xiàn)競爭。該算法的這兩個特點可使其生成具有良好泛化能力的緊奏型神經(jīng)架構(gòu),從而更適合于應用在有限資源的設備上,如微控制器、嵌入式系統(tǒng)、傳感器網(wǎng)絡和FPGA[4]。

近幾年,由于科技的進步,人們已構(gòu)造出具有巨大的處理能力和記憶存儲能力的FPGA,且這些FPGA已在一些領(lǐng)域(通信、機器人學、模式識別任務、架構(gòu)監(jiān)控等)得到應用[5-6]。由于FPGA屬于內(nèi)在并行設備且能夠在神經(jīng)網(wǎng)絡模型中處理信息,因此更適用于神經(jīng)網(wǎng)絡的實現(xiàn)。一些研究已經(jīng)分析了在FPGA中的神經(jīng)網(wǎng)絡模型的實現(xiàn)[7],根據(jù)FPGA是否包括片上學習過程,可完成對FPGA的粗分類[8]。片上學習實現(xiàn)中,神經(jīng)網(wǎng)絡模型的訓練通??稍趥€人計算機(PC)上進行且只將突觸權(quán)值傳輸?shù)阶鳛橛布铀倨鳎?]的FPGA上。與此相反的是,片上學習實現(xiàn)[10]可使PC自主獨立地訓練模型,但這種方式在提供更強的靈活性和更高效率的同時將會消耗更多的FPGA資源。

因此本文對對原有的誤差校正構(gòu)造性神經(jīng)網(wǎng)絡算法進行了優(yōu)化,并對優(yōu)化后的誤差修正算法進行了FPGA模塊設計,最后在Virtex-5 FPGA平臺進行了算法運行效果測試。本文的貢獻主要有2點,首先對通過FPGA并行處理誤差校正神經(jīng)網(wǎng)絡算法,可實現(xiàn)的速度優(yōu)勢進行了分析,其次是根據(jù)能夠存儲的最大模式數(shù)量對利用FPGA的實際局限、數(shù)據(jù)集的尺寸和使用定點表示法的區(qū)別等等進行了分析,特別是對實現(xiàn)一個真實硬件時的分析。最終證明了運用FPGA實現(xiàn)的誤差修正神經(jīng)網(wǎng)絡算法應用,能夠有效解決現(xiàn)實工業(yè)生產(chǎn)的問題。

1 優(yōu)化的神經(jīng)網(wǎng)絡構(gòu)造型算法

1.1構(gòu)造神經(jīng)網(wǎng)絡算法原理

誤差修正神經(jīng)網(wǎng)絡是一種新穎的神經(jīng)網(wǎng)絡構(gòu)造型算法,這種算法利用神經(jīng)元和修改的感知器學習規(guī)則之間的競爭,來構(gòu)造對監(jiān)督分類問題具有良好預測能力的單隱層緊湊架構(gòu)。作為CoNN算法,誤差修正神經(jīng)網(wǎng)絡能夠在學習階段在線生成網(wǎng)絡拓撲,從而避免有關(guān)選擇合適神經(jīng)架構(gòu)方面復雜問題的出現(xiàn)。與先前提出的構(gòu)造型算法相比,誤差修正神經(jīng)網(wǎng)絡的新穎之處在于位于單隱層中的神經(jīng)元能夠為學習輸入數(shù)據(jù)而競爭,這一過程可允許緊奏型神經(jīng)架構(gòu)的創(chuàng)建。在單隱層中的神經(jīng)元的二進制激活狀態(tài)(S)取決于N輸入信號ψi及N突觸權(quán)值(wi)和偏差(b)的實際值,如下:

式中,h代表神經(jīng)元的突觸電位,可定義為

在熱感知器規(guī)則中,根據(jù)下列的方程式可在線完成(在顯示單輸入模式后)對突觸權(quán)值Δwi的修改,

根據(jù)(5)可知,T值會隨著學習過程的進展而減小。

式中,I代表界定誤差修正神經(jīng)網(wǎng)絡算法在一個學習周期中迭代的循環(huán)計數(shù),Imax代表允許迭代的最高次數(shù)。這種算法的一個學習周期指的是一個過程,這一過程從網(wǎng)絡上顯示出已選擇的模式開始并在檢查所有的神經(jīng)元對輸入做出正確回應后或在神經(jīng)元的突觸權(quán)值選擇學習的實際模式后(無論是現(xiàn)有的還是新的神經(jīng)元修改自身的突觸權(quán)值)結(jié)束。

1.2優(yōu)化參數(shù)設置

為了能夠在真實硬件平臺上進行實現(xiàn),并提高算法的魯棒性,以便在廣泛的參數(shù)值范圍內(nèi)運行情況相當良好,需要對原有誤差修正神經(jīng)網(wǎng)絡算法的2個參數(shù)進行設置。提出的算法優(yōu)化的2個參數(shù)如下:

(1)gfac確定何時終止學習周期及向隱層中引進一個新神經(jīng)元的增長因數(shù)。

(2)φ確定在何種情況下可認為輸入實例是一種噪聲并根據(jù)以下條件將其從訓練數(shù)據(jù)集中移除。

式中,xi代表一種輸入模式,N代表在該數(shù)據(jù)集中模式總數(shù),NLT代表模式xi在當前學習周期中顯示在網(wǎng)絡上的次數(shù),μ和σ分別相當于該算法在一個學習周期中試圖學習每種模式的分布平均值和方差。該學習過程開始于一個單隱層中的神經(jīng)元及一個能夠計算隱藏神經(jīng)元響應的輸出神經(jīng)元。通過在網(wǎng)絡中顯示輸入模式,可使該學習過程繼續(xù),如果誤分類輸入模式,在滿足一些條件的情況下,當前的一個神經(jīng)元(其輸出與目標模式值不相匹配)則會進行學習過程,否則一個新的神經(jīng)元將會進入該架構(gòu)進行學習過程。在所有誤分類輸入模式的神經(jīng)元中,只有當Tfac值大于該算法的gfac參數(shù)時,具有最大Tfac的神經(jīng)元才能開始該學習過程,所包含的一個條件用于預防忘記學習先前存儲的信息。如果未找到可滿足這些條件的感知器,網(wǎng)絡中將會增加一個新神經(jīng)元并開始新的學習周期(該周期所有神經(jīng)元的溫度值均復位到T0),并在該新的學習周期結(jié)束時使

式中,t代表顯示輸入的目標值;ψ代表通過權(quán)值wi連接到輸出的輸入單元i的數(shù)值。與標準感知學習規(guī)則的區(qū)別在于熱感器器包含有Tfac因數(shù)。該Tfac因數(shù)取決于突觸電位的數(shù)值和人工引入的溫度值(T),計算出的Tfac因數(shù)值在式(4)中顯示。用噪聲模式過濾程序式(6)。通過重復先前的步驟可使該算法繼續(xù)進行迭代運算,直到網(wǎng)絡完成對訓練集中所有模式的正確分類。

2 FPGA設計

FPGA屬于利用預制的邏輯塊和程式化互聯(lián)資源可重復進行編程的硅芯片。人們可對其進行配置使其實現(xiàn)自定義的硬件功能,在這種意義上,F(xiàn)PGA通過重新編譯一個新的電路配置FPGA幾乎可以實現(xiàn)對自身行為的實時改變。通過將FPGA資源分成3個主要部分可在Virtex 5 FPGA中實現(xiàn)誤差修正神經(jīng)網(wǎng)絡算法。圖1顯示的是完成運算所必需的控制模塊、模式模塊和神經(jīng)元模塊及它們之間的結(jié)構(gòu)圖。我們在下面對3種塊的組織進行了描述并在分段中對具體實現(xiàn)細節(jié)進行了評論。

圖1 FPGA設計的方案

2.1模式模塊

模式模塊可對培訓模式進行管理。通過串行端口模式可接收到來自PC的突觸權(quán)值并可將其存儲在FPGA的分布式RAM塊中。通過利用2n byte及n值可顯示出模式。需注意的是每一種模式類(目標輸出)均有一個備用的額外位。

在接收到來自控制模塊的信號后再進行運算的期間,模式模塊將會向所有的神經(jīng)元發(fā)送一個隨機選擇的模式。為避免重復訓練已給定的模式,可將最后一個發(fā)送模式的記憶位置切換至一個對應的最終符合條件的記憶位置,因此符合條件的記憶位置數(shù)量將會減少一個。由于這種情況牽涉到修改突觸權(quán)值及開始新的學習周期,因此系統(tǒng)將會一直重復這種動作直至找到一種網(wǎng)絡輸出不同于其目標值的模式。

2.2神經(jīng)元模塊

每個神經(jīng)元均由一組查找表(LUT)構(gòu)成,該查找表包含有用于計算其輸出(S)和Tfac值及修改其突觸權(quán)值的所有信息。神經(jīng)元接收來自模式模塊與輸入模式相關(guān)的信息并對其突觸電位值h進行計算,以便于通過以下方程式獲得神經(jīng)元的輸出:

需注意的是該方程式與原誤差修正神經(jīng)網(wǎng)絡方程式(1)相類似,但當前的這一方程式根據(jù)h值對是否激活神經(jīng)元的的不平等條件進行了修改,因此現(xiàn)在僅當h>0時神經(jīng)元才可處于激活狀態(tài),而在h=0時神經(jīng)元將處于未激活狀態(tài)。這種改變可以借助于一種更快的方法(見控制模塊部分)對所有神經(jīng)元(網(wǎng)絡輸出)的函數(shù)進行計算。通過神經(jīng)元模塊將所有隱藏神經(jīng)元的S值發(fā)送到控制模塊可計算出整個網(wǎng)絡的輸出值,這一輸出值是返回到神經(jīng)元中用于決定是否計算該數(shù)值(在網(wǎng)絡輸出與模式目標值不相匹配的情況下),或是否等待下一個輸入模式(如果網(wǎng)絡輸出與模式目標值相匹配),以便于重新開始整個過程。在網(wǎng)絡輸出與當前模式的目標值不相匹配的情況下,每個神經(jīng)元將計算各自的Tfac值式(4),并將該值發(fā)送到控制模塊,控制模塊則會返回有關(guān)具有最大Tfac值的神經(jīng)元的信息,因此該神經(jīng)元則會在其Tfac值大于gfac參數(shù)值的情況下修改自身的突觸權(quán)值。代替使用RAM塊,將突觸權(quán)值存儲在FPGA的寄存器中(這種方式可使突觸權(quán)值接近于神經(jīng)元)可減少有關(guān)設置方面問題的出現(xiàn)。

2.3控制模塊

控制模塊通過發(fā)送并處理來自神經(jīng)元模塊和模式模塊的信息來組織整個信息過程。一旦將模式加載到模式模塊中,控制模塊將會接收到信號以便于開始執(zhí)行算法。通過向模式模塊發(fā)送信號指示其向神經(jīng)元發(fā)送隨機選擇的模式可啟動該算法過程。

誤差修正神經(jīng)網(wǎng)絡是一種構(gòu)造型ANN模型,其架構(gòu)隨著訓練過程的進展而形成,而FPGA在進行編程前需要對所有的元件進行指定,在控制模塊控制一個標示時,系統(tǒng)就已創(chuàng)造出在架構(gòu)中神經(jīng)元可能的最大數(shù)量,其數(shù)量決定了神經(jīng)元是處于激活狀態(tài)(包含在真實架構(gòu)中)或處于未激活狀態(tài)(等待潛在的包含)。在學習過程開始時,所有的突觸權(quán)值設定為零且控制單元僅可以激活一個神經(jīng)元。

當將隨機選擇的模式發(fā)送到神經(jīng)元時,系統(tǒng)則會計算出它們的輸出(S)且控制模塊將會計算這些信號(整個網(wǎng)絡輸出對先前輸入的響應)的函數(shù),然后將輸出值與目標值相比較,如果它們互相匹配,控制模塊則會發(fā)送信號使其釋放一個新模式;如果它們不相匹配,每個神經(jīng)元將會得到一個Tfac值,以便于選擇出最大的Tfac值,并且當Tfac值大于gfac參數(shù)值時,神經(jīng)元則可以開始修改其突觸權(quán)值,控制單元將會從神經(jīng)元處接收到的Tfac值中選出錯誤的Tfac值及具有最大Tfac值的神經(jīng)元。此時,控制模塊將向已選出的神經(jīng)元發(fā)送信號,這樣該單元就能夠?qū)ζ渫挥|權(quán)值進行修改。按照這一過程可連續(xù)完成對權(quán)值的修改并依照式(3),可對每個突觸進行更新。

控制模塊包括兩個模塊:Tfac模塊和S(輸出)模塊。Tfac模塊用于計算一組神經(jīng)元的最大Tfac,然而S模塊則用于計算S的函數(shù)。在以下部分中對這兩種模塊進行了詳細的說明。

3 FPGA實現(xiàn)步驟

(1)S模塊該模塊用于計算隱藏神經(jīng)元輸出(S)的函數(shù)。圖2顯示的是有關(guān)該模塊操作的示意圖。首先添加隱藏神經(jīng)元輸出(Si)的然后該值將會與由步驟2劃分的活躍神經(jīng)元的數(shù)量相比較,由此可計算出函數(shù)。當激活的神經(jīng)元的數(shù)量大于未激活的神經(jīng)元的數(shù)量時,該模塊的輸出為“1”,否則該模塊的輸出則為“0”。對于該電路的邏輯運算,將正確的邏輯移位運算應用在活躍神經(jīng)元上可獲得一半數(shù)量的活躍神經(jīng)元。由于在該控制模塊上的計算不是同步的,因此僅在一個時鐘周期內(nèi)即可完成該模塊的運算。

圖2 用于計算隱藏神經(jīng)元輸出的函數(shù)的S模塊功能圖

(2)Tfac模塊該模塊負責計算出在當前模式下(“錯誤”神經(jīng)元)輸出與目標值不相匹配的所有神經(jīng)元中最大的Tfac值。由于該模塊能夠更有效地計算出所有神經(jīng)元的Tfac值,因此我們將“正確”神經(jīng)元的Tfac值設定為0,以便于在所有神經(jīng)元中獲得最大的Tfac值(將不活躍的神經(jīng)元的Tfac值也設定為0)。由于不需要使用最大的Tfac值來減少系統(tǒng)的運算頻率,因此可在16個神經(jīng)元模塊中計算出最大的Tfac值。如果活躍神經(jīng)元的數(shù)量超過16,系統(tǒng)將存儲第1塊獲得的最大Tfac值并將其與第2塊獲得的最大Tfac值進行比較,然后存儲目前得到的最大Tfac值。利用這種處理方式獲得最大Tfac值直到分析完所有的活躍神經(jīng)元。圖3顯示的是有關(guān)在誤分類輸入模式的神經(jīng)元中尋找具有最大Tfac值的神經(jīng)元的過程示意圖。該圖的左下方顯示的是同步模塊運算的時鐘信號,該圖的上方顯示的是集合在被反復發(fā)送到邏輯電路中的16個神經(jīng)元模塊的Tfac值,利用邏輯電路可計算出該塊最大的神經(jīng)元數(shù)量,計算時需將目前得到的最大Tfac值考慮進去。分析完所有塊后,Tfac模塊將輸出找到的最大值(最大Tfac值)和一個用于指示具有最大Tfac值的神經(jīng)元的數(shù)值(索引)。

圖3 用于計算活躍神經(jīng)元中的最大Tfac值及獲得該值的神經(jīng)元的索引的模塊功能圖

(3)產(chǎn)品實現(xiàn)完成該算法需對幾個產(chǎn)品進行計算,例如計算Tfac值,獲得突觸權(quán)值及神經(jīng)元電位(h)。特別是計算Tfac值時需進行3個乘法運算:第1個與計算T有關(guān),第2個與指數(shù)函數(shù)的插值有關(guān),第3個則用于獲得最終的Tfac值。每個神經(jīng)元僅有一個能夠用在時分復用方案中用于降低使用LUT次數(shù)的乘法器塊。代替使用Xilinx特定的乘法器核心,我們使用了可輸出的代碼,以便于發(fā)揮其在其他FPGA上的潛在應用能力。本方案要求的LUT的數(shù)量與輸入數(shù)據(jù)的位的大小成比例,例如對于兩個分別具有Na和Nb個位的長度的矢量來說,其產(chǎn)品需要Na×Nb個LUT,因此其輸出具有Na+Nb個位的大小。

(4)突觸權(quán)值精度考慮到獲取相對高的精度可能需要相對大的表達,突觸權(quán)值的表達可以根據(jù)可利用的資源來選擇,這將意味著每個神經(jīng)元的LUT數(shù)目的增加(結(jié)果是可利用神經(jīng)元數(shù)目的減少)與最大運算頻率的降低。突觸權(quán)值的精度非常重要,因此其結(jié)果值類似于通過使用浮點表示法(在基于PC代碼中使用的)獲得的數(shù)值。利用長度N1與N2帶有整數(shù)和小數(shù)部分的位數(shù)組可表示出突觸權(quán)值。N1用于確定-2(N1-1)到2(N1-1)可獲得的最小值與最大值,而N2則用于確定精度2-N2。表達一定正值范圍內(nèi)所有可能的離散值所需的位數(shù)取決于間隔最大值與最小值的差異,根據(jù)下列方程式可獲取所需的位數(shù)。

表1顯示的是按照表達突觸權(quán)值N1+N2所使用的位數(shù)(N1與N2分別表示該表達的整數(shù)與小數(shù)部分),需要的LUT數(shù)量、最大運算頻率、可利用神經(jīng)元的數(shù)量及精度。

表1 N1和N2變化時LUT的數(shù)量、最大運算頻率和可利用神經(jīng)元的數(shù)量與精度

N1與N2分別表示整數(shù)與小數(shù)部分。

(5)輸入數(shù)目誤差修正神經(jīng)網(wǎng)絡網(wǎng)絡中的輸入數(shù)量是由訓練模式的大小所決定。當輸入大小從本質(zhì)上修改每個神經(jīng)元的LUT數(shù)量與能夠被儲存在記憶板中的訓練模式的最大數(shù)量時,輸入尺寸將極大影響整個FPGA的實現(xiàn)。而且,改變輸入的數(shù)量還包括對程序代碼的完全修改,從這層意義上而言,我們的方法是根據(jù)所需輸入的最大數(shù)量來研發(fā)不同的代碼。當然,非最佳選擇就是在所有情況下均選擇最大的輸入代碼,這無疑會降低板的其他能力。表2顯示的是每個神經(jīng)元的LUT數(shù)量、每1 024個模式所使用的隨機存取存儲(RAM)塊的數(shù)量、可被儲存的模式的最大數(shù)量(1 024×RAM塊)及模式模塊的LUT和寄存器的數(shù)量,這些均需以輸入的數(shù)量為基礎。由于剩余的輸入用作輸出分類,因此表中所示的輸入大小與2的冪次方減1相對應。

表2 每個神經(jīng)元的各項參數(shù)值

(6)Imax對于原始的誤差修正神經(jīng)網(wǎng)絡代碼而言,對決定一個神經(jīng)元在一個學習周期內(nèi)所能經(jīng)受的最多的學習修改次數(shù)的數(shù)值Imax進行了修改。若通過具有相關(guān)高計算費用的除法運算來利用該數(shù)值計算溫度(T)值,則Imax就是數(shù)值2的有限冪次方,這將允許除法運算在正確邏輯移位上的轉(zhuǎn)變。Imax的最大允許數(shù)值是217=131 072。

4 實際測試

目前實現(xiàn)所使用的開發(fā)板屬于Virtex-5 FPGA評估平臺。這種設備包括Xilinx Virtex-5 XC5VLX110T FPGA,它能夠提供不同連接器裝置:2個USB(主機和外圍設備)端口、2個PS/2(鍵盤和鼠標)端口、RJ-45 (10/100/1000網(wǎng)絡)和RS-232(male串行端口)連接器、2個聲頻輸入(線路和微音器)、2個聲頻輸出(線路、放大器和SPDIF)、視頻輸入、視頻輸出(DVI/VGA)及單端型和差分I/O擴展。表3顯示的是Virtex-5 XC5VLX110T FPGA的一些特征,由此表明其具有的主要邏輯資源。圖4顯示的是Virtex-5 XC5VLX110T FPGA的圖片。

表3 VIRTEX-5 XC5VLX110T FPGA的主要規(guī)格參數(shù)

圖4 用于實現(xiàn)誤差修正神經(jīng)網(wǎng)絡算法的Virtex-5 FPGA平臺

在Xilinx ISE設計套件12.4環(huán)境下,采用硬件描述語言(VHDL)可對FPGA進行編程。我們的設計策略是避免使用特定的Xilinx核心,以便于從其他制造商處獲得能夠應用在FPGA上的總體設計。

我們已對選擇的FPGA在VHDL中的實現(xiàn)與誤差修正神經(jīng)網(wǎng)絡算法在C語言編程[11-12]中的實現(xiàn)進行了不同形式的比較,值得注意的是,在PC可用語言中,VHDL這種語言是最快的語言之一。運行C代碼的CPU是英特爾(R)酷睿(TM)CPU四核Q6600@2.4 GHz。

使用一組16個單輸出布爾函數(shù)來測試誤差修正神經(jīng)網(wǎng)絡算法生成的速度與架構(gòu)。測試所使用的函數(shù)包括兩組算術(shù)邏輯單元(ALU)函數(shù)[13],即10個輸入6 Alu2的函數(shù)與14個輸入8 Alu4的函數(shù)。這兩組函數(shù)都是從參照[14]的基準得來的,一并得到的還有輸入2且3的互斥分離函數(shù)(XOR)。誤差修正神經(jīng)網(wǎng)絡算法可在以下參數(shù)值下運行:gfac= 0.01與Imax=16 384(在以下情況下無需使用無噪音消除步驟,例如=∞)。此外,還可以使用一個鎖相環(huán)塊(PLL)將所有測試系統(tǒng)的頻率設置為72.72 MHz。誤差修正神經(jīng)網(wǎng)絡算法VHDL-FPGA與C-PC實現(xiàn)一組16個布爾函數(shù)學習時間的平均值與標準偏差,由圖5中以對數(shù)函數(shù)y軸的形式可以顯示出來。?

圖5 誤差修正神經(jīng)網(wǎng)絡算法VHDL-FPGA 與C-PC的平均值與標準偏差

我們進一步計算了隨著建設性網(wǎng)絡發(fā)展,新神經(jīng)元加入有關(guān)的執(zhí)行時間。通過輸入10的函數(shù)Alu21比較FPGA所需的實現(xiàn)時間與基于PC的實現(xiàn)時間(重復30次以獲取平均值)。圖6(a)顯示了實現(xiàn)FPGA與PC所需的時間,而圖6(b)顯示了兩個平臺之間的相對增長速度。圖6(b)中的兩條曲線與算法達到所示的神經(jīng)元數(shù)目(累積)所需的相對時間一致。然而,當通過固定數(shù)量的神經(jīng)元執(zhí)行算法時,上方的曲線(每個神經(jīng)元)就與對比相吻合。累積對比清楚地顯示了FPGA的相對性能(與PC的實現(xiàn)相比)隨著架構(gòu)中神經(jīng)元數(shù)目的增加而幾乎呈現(xiàn)出線性增加。

圖6 計算alu21函數(shù)

在另一個實驗中,我們使用一組8個二進制輸出基準問題分析了現(xiàn)實函數(shù)的實現(xiàn)。表4顯示了誤差修正算法FPGA與PC的實現(xiàn)結(jié)果。表格的前兩列顯示了所使用基準問題的輸入名稱與數(shù)目。第3與第4列顯示了實現(xiàn)FPGA與PC所獲得的神經(jīng)元數(shù)目,最后兩列顯示了FPGA與PC兩種途徑的泛化能力。利用10倍的訓練/測試方案及下面的有關(guān)誤差校正算法的參數(shù)(gfac= 0.1,Imax= 65 536,= 2)可計算出泛化能力。

表4 8個基準問題在誤差校正算法的FPGA版本中的實現(xiàn)結(jié)果

前兩列顯示函數(shù)輸入的名稱與數(shù)目,其余的幾列顯示了神經(jīng)元的數(shù)目與使用兩個平臺所獲得的泛化能力。

5 結(jié)論

在本文,我們已經(jīng)分析并優(yōu)化了原有的誤差修正神經(jīng)網(wǎng)絡,并設計了相應的FPGA模塊來實現(xiàn)神經(jīng)網(wǎng)絡構(gòu)造型算法的片上學習。在眾所周知的基準數(shù)據(jù)集(如表4)進行的一些測試顯示,由于幾乎難以對生成的架構(gòu)的大小與該算法的泛化能力進行辨別,因此在大多數(shù)情況下,使用固定精度表達(16位定點)足以可得到與該算法的浮點原始基于PC實現(xiàn)的對比結(jié)果。

代替使用標準C語言的軟件,該算法使用FPGA版本的優(yōu)勢在于:我們已觀測到計算速度的顯著提高。值得注意的是,隨著問題復雜性的增加,該速度大致呈現(xiàn)出線性增長,因此在分析最復雜的函數(shù)的情況下(圖5中Alu4r函數(shù))即可獲得增長高達47倍的因子。

根據(jù)觀察到的結(jié)果,我們可以得出結(jié)論:測試結(jié)果證明了運用FPGA實現(xiàn)的誤差修正神經(jīng)網(wǎng)絡算法應用,能夠有效解決現(xiàn)實工業(yè)生產(chǎn)的問題,例如工業(yè)電機控制[15]、機器視覺[16]、工業(yè)控制網(wǎng)絡、機器人學等。此外,實驗證明了FPGA在已給定內(nèi)在并行性處理的神經(jīng)計算任務方面具有巨大的潛力。

參考文獻:

[1]Monmasson E,Idkhajine L,Cirstea M,et al.FPGAs in Industrial Control Applications[J].IEEE Trans Ind Informat,2011,7(2):224-243.

[2]李利歌,閻保定,侯忠,等.基于FPGA的神經(jīng)網(wǎng)絡硬件可重構(gòu)實現(xiàn)[J].河南科技大學學報:自然科學版,2009,30(1):37-40.

[3]Subirats J,F(xiàn)ranco L,Jerez J.C-Mantec:A Novel Constructive Neural Etwork Algorithm Incorporating Competition between Neurons[J]Neural Netw,2012,(26)3:130-140.

[4]張榮華,王江.FPGA在生物神經(jīng)系統(tǒng)模型仿真中的應用[J].計算機應用研究,2011,28(8):2949-2953.

[5]Hunter D,Yu H,Pukish M SⅢ,et al.Selection of Proper Neural Network Sizes and Architectures—A Comparative Study[J].IEEE Trans on Industrial Informatics,2012,8(2):228-240.

[6]張海燕,李欣.智能神經(jīng)元網(wǎng)絡前向傳播過程的硬件實現(xiàn)[J].哈爾濱工程大學學報,2006,27(z1):40-45.

[7]汪光森,伍行鍵,李譽,等.基于FPGA的神經(jīng)網(wǎng)絡的硬件實現(xiàn)[J].電子技術(shù)應用,1999,25(12):23-25.

[8]楊銀濤,汪海波,張志,等.基于FPGA的人工神經(jīng)網(wǎng)絡實現(xiàn)方法的研究[J].現(xiàn)代電子技術(shù),2009,32(18):170-174.

[9]王炳健,劉上乾,汪大寶,等.基于FPGA的IRFPA非均勻性自適應校正算法實時實現(xiàn)[J].半導體光電,2008,29(4):583-585,589.

[10]李宏偉,吳慶祥.脈沖神經(jīng)網(wǎng)絡中神經(jīng)元突觸的硬件實現(xiàn)方案[J].計算機系統(tǒng)應用,2014,23(2):17-21.

[11]王建輝,崔維嘉,胡捍英,等.基于神經(jīng)網(wǎng)絡的魯棒NLOS誤差抑制算法[J].計算機工程,2011,37(24):7-9.

[12]劉新平,唐磊,金有海,等.擴展隱層的誤差反傳網(wǎng)絡訓練算法研究[J].計算機集成制造系統(tǒng),2008,14(11):2284-2288.

[13]王正群,陳世福,陳兆乾,等.一種主動學習神經(jīng)網(wǎng)絡集成方法[J].計算機研究與發(fā)展,2005,42(3):375-380.

[14]齊明,鄒繼斌,胡建輝,等.神經(jīng)網(wǎng)絡在感應同步器零位誤差補償中的應用[J].中國電機工程學報,2008,28(9):105-110.

[15]胡煜.基于FPGA實現(xiàn)改進CORDIC算法研究[J].電子器件,2014(2):358-360.

[16]吳健,張志杰,王文廉,等.傳感器動態(tài)誤差高速并行修正方法及其FPGA實現(xiàn)[J].傳感技術(shù)學報,2012,25(1):67-71.

朱 承(1974-),男,重慶人,碩士研究生,副教授。主要研究方向為電子信息技術(shù),zczczc023@163.com。

The Design of FAT16 File System Based on MSP430F5529 and SD Card

XIA Lan1*,JIA Xiaodong1,QU Wenbo2
(1.School of Biological Sciences and Medical Engineering,Southeast University,Nanjing 210096,China;
2.Shanghai Rays Electronics Science and Technology Co.,Ltd.,Shanghai 201202,China)

Abstract:Aiming at the problem of the mass data produced by monitoring for a long time that cannot be stored,a FAT16 file system is designsed and developed based on low-power MSP430 MCU and SD card.Making use of SPI buses to communicate with the SD card,a FAT16 file system creats in the SD card,and samples and records the data in file.The data file can be recognized by Windows operating system and convenient for post data processing,this system has broad application prospects on the aspects of large-capacity data on site collection,memory and so on.The design can be used in protable ECG System,it has a high application value.

Key words:MSP430F5529; SD card; FAT16 file system; SPI; USB

doi:EEACC:1265P10.3969/j.issn.1005-9490.2015.04.045

收稿日期:2014-12-02修改日期:2014-01-05

中圖分類號:TP391

文獻標識碼:A

文章編號:1005-9490(2015)04-0939-07

巨鹿县| 韶山市| 泗水县| 年辖:市辖区| 周宁县| 苏州市| 平陆县| 屏山县| 浑源县| 临邑县| 赤城县| 嵊泗县| 邓州市| 渝中区| 德格县| 台北市| 兴和县| 修水县| 南陵县| 固阳县| 依安县| 平谷区| 子洲县| 德江县| 岱山县| 旬邑县| 嘉禾县| 右玉县| 监利县| 区。| 东明县| 都安| 东莞市| 辛集市| 天门市| 宣威市| 曲靖市| 黄龙县| 涿鹿县| 武乡县| 沙田区|