欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于擬牛頓法在線訓(xùn)練神經(jīng)網(wǎng)絡(luò)的FPGA系統(tǒng)及實(shí)現(xiàn)方法與流程

文檔序號(hào):12120395閱讀:435來(lái)源:國(guó)知局
基于擬牛頓法在線訓(xùn)練神經(jīng)網(wǎng)絡(luò)的FPGA系統(tǒng)及實(shí)現(xiàn)方法與流程

本發(fā)明涉及FPGA的加速設(shè)計(jì)領(lǐng)域,具體涉及一種基于擬牛頓法在線訓(xùn)練神經(jīng)網(wǎng)絡(luò)的FPGA系統(tǒng)及實(shí)現(xiàn)方法。



背景技術(shù):

神經(jīng)網(wǎng)絡(luò)是一種信息處理系統(tǒng),其具有從一組數(shù)據(jù)中學(xué)習(xí)任意輸入輸出關(guān)系的能力。訓(xùn)練是確立神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的關(guān)鍵一步。傳統(tǒng)的離線訓(xùn)練方式存在以下問(wèn)題:1)如果樣本數(shù)據(jù)是時(shí)變的,則無(wú)法準(zhǔn)確捕捉輸入輸出間關(guān)系。2)如果對(duì)全部樣本進(jìn)行訓(xùn)練,則訓(xùn)練速度遲緩并且可能陷入局部最優(yōu)(如文獻(xiàn)[1])。因此近年來(lái)神經(jīng)網(wǎng)絡(luò)與在線訓(xùn)練方式結(jié)合,已在信號(hào)處理、語(yǔ)音識(shí)別、序列預(yù)測(cè)(如文獻(xiàn)[2])等領(lǐng)域獲得了廣泛的應(yīng)用。

目前,神經(jīng)網(wǎng)絡(luò)的在線訓(xùn)練主要在軟件平臺(tái)實(shí)現(xiàn)。但軟件實(shí)現(xiàn)方法速度慢且并行度低,從而無(wú)法滿足神經(jīng)網(wǎng)絡(luò)在線訓(xùn)練的要求,導(dǎo)致理論研究與實(shí)際應(yīng)用相脫節(jié)(如文獻(xiàn)[3])。除此之外,軟件實(shí)現(xiàn)需要龐大的計(jì)算機(jī)作支持,所以不適合嵌入式場(chǎng)合。所以,必須尋求一種硬件實(shí)現(xiàn)的方法,提高處理速度。

GPU是廣泛認(rèn)可的可選擇的加速器之一,然而它的高功耗是嵌入式應(yīng)用的致命弱點(diǎn)(如文獻(xiàn)[4])。而FPGA器件具有可重配置、高并行度、設(shè)計(jì)靈活(相對(duì)于ASIC)、能耗低(相對(duì)于GPU)的特性(如文獻(xiàn)[5]),更適宜實(shí)現(xiàn)應(yīng)用于嵌入式場(chǎng)合的神經(jīng)網(wǎng)絡(luò)。目前已有一些基于FPGA實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的研究。如文獻(xiàn)[6],基于FPGA實(shí)現(xiàn)遞歸神經(jīng)網(wǎng)絡(luò)(RNN)算法變體的優(yōu)化和加速,并用于分析服務(wù)器上的語(yǔ)言模式分類任務(wù)。如文獻(xiàn)[7],基于FPGA實(shí)現(xiàn)了多層感知神經(jīng)網(wǎng)絡(luò)(MLP-NN)的加速,其采用簡(jiǎn)單的反向傳播學(xué)習(xí)算法。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的不足,從神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法—擬牛 頓法出發(fā),通過(guò)FPGA實(shí)現(xiàn)來(lái)提高神經(jīng)網(wǎng)絡(luò)訓(xùn)練的速度,滿足神經(jīng)網(wǎng)絡(luò)在線訓(xùn)練的實(shí)時(shí)性要求。

本發(fā)明的技術(shù)方案:基于擬牛頓法在線訓(xùn)練神經(jīng)網(wǎng)絡(luò)的FPGA系統(tǒng),包括計(jì)算控制模塊CSC、隨機(jī)數(shù)產(chǎn)生模塊PNG、線性搜索模塊LS、梯度計(jì)算模塊GC、矩陣更新模塊HU和神經(jīng)網(wǎng)絡(luò)評(píng)估模塊NNE六大模塊;

所述計(jì)算控制模塊CSC采用有限狀態(tài)機(jī)的形式來(lái)安排上述各模塊的操作順序及內(nèi)存與相對(duì)應(yīng)模塊的數(shù)據(jù)傳遞;

所述線性搜索模塊LS、梯度計(jì)算模塊GC、矩陣更新模塊HU對(duì)應(yīng)于擬牛頓優(yōu)化算法的計(jì)算過(guò)程,神經(jīng)網(wǎng)絡(luò)評(píng)估模塊NNE將被線性搜索模塊LS調(diào)用;

所述矩陣更新模塊HU以BFGS方式更新矩陣并決定搜索方向,所述線性搜索模塊LS采用黃金分割法在搜索方向上確定搜索步長(zhǎng),所述梯度計(jì)算模塊GC完成目標(biāo)函數(shù)梯度的計(jì)算,所述隨機(jī)數(shù)產(chǎn)生模塊PNG基于32位線性移位寄存器產(chǎn)生神經(jīng)網(wǎng)絡(luò)的初始權(quán)重值。

本發(fā)明的另一技術(shù)方案:基于擬牛頓法在線訓(xùn)練神經(jīng)網(wǎng)絡(luò)的FPGA實(shí)現(xiàn)方法,包括以下步驟:

1)、分析擬牛頓法的c++代碼,將算法劃分為三個(gè)計(jì)算模塊,分別為梯度計(jì)算模塊GC、矩陣更新模塊HU和線性搜索模塊LS,通過(guò)編寫Verilog,將每個(gè)計(jì)算模塊實(shí)現(xiàn)為硬件塊;

2)、根據(jù)神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)、訓(xùn)練方式和激勵(lì)函數(shù),通過(guò)編寫Verilog確立神經(jīng)網(wǎng)絡(luò)評(píng)估模塊NNE的硬件結(jié)構(gòu);

3)、基于32位線性移位寄存器實(shí)現(xiàn)隨機(jī)數(shù)產(chǎn)生模塊PNG,該模塊用于產(chǎn)生神經(jīng)網(wǎng)絡(luò)的初始權(quán)重值;

4)、將FPGA片上存儲(chǔ)器用作緩沖器以鏈接上述五個(gè)硬件模塊,并存儲(chǔ)中間的計(jì)算結(jié)果,采用有限狀態(tài)機(jī)的形式安排上述五個(gè)模塊的操作順序及內(nèi)存與相對(duì)應(yīng) 模塊的數(shù)據(jù)傳遞;該模塊被命名為計(jì)算控制模塊CSC;

5)、將上述硬件設(shè)計(jì)在Net-FPGA SUME(xc7vx690t)開發(fā)板上綜合實(shí)現(xiàn),就資源利用率、運(yùn)行時(shí)間和功率消耗這三方面,對(duì)該硬件設(shè)計(jì)進(jìn)行性能測(cè)試。

所述步驟1)矩陣更新模塊HU以BFGS方式更新矩陣并決定搜索方向,線性搜索模塊LS采用黃金分割法在搜索方向上確定搜索步長(zhǎng),梯度計(jì)算模塊GC完成目標(biāo)函數(shù)梯度的計(jì)算。

所述步驟1)每個(gè)模塊內(nèi),采用流水線技術(shù)和模塊復(fù)用技術(shù)。

所述步驟1)硬件塊架構(gòu)根據(jù)模塊中涉及的操作來(lái)定制。

所述步驟2)硬件結(jié)構(gòu)分為前端和后端兩個(gè)部分;前端用于計(jì)算神經(jīng)網(wǎng)絡(luò)的實(shí)際輸出,后端用于計(jì)算神經(jīng)網(wǎng)絡(luò)的訓(xùn)練誤差。

所述步驟2)神經(jīng)網(wǎng)絡(luò)評(píng)估模塊NNE被線性搜索模塊LS和梯度計(jì)算模塊GC調(diào)用。

本發(fā)明相對(duì)于現(xiàn)有技術(shù)有以下有益效果:

本發(fā)明提出了一種基于擬牛頓法在線訓(xùn)練神經(jīng)網(wǎng)絡(luò)的FPGA實(shí)現(xiàn)方法,通過(guò)Xilinx Vivado 2014.04,將提出的硬件設(shè)計(jì)在Net-FPGA SUME(xc7vx690t)開發(fā)板上綜合實(shí)現(xiàn),優(yōu)點(diǎn)如下:

1)該設(shè)計(jì)可達(dá)到的最高頻率為250MHz;2)除Block Ram外,F(xiàn)PGA上的FF、LUT和DSP資源不受神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)影響;而現(xiàn)在的FPGA包含大量片上存儲(chǔ)資源,使設(shè)計(jì)具有可擴(kuò)展性;3)相比于軟件實(shí)現(xiàn),該設(shè)計(jì)可達(dá)到105倍的加速,可滿足神經(jīng)網(wǎng)絡(luò)在線訓(xùn)練的實(shí)時(shí)需求;4)相比于軟件實(shí)現(xiàn),該設(shè)計(jì)的動(dòng)態(tài)功耗可減小12倍。

附圖說(shuō)明

圖1是本發(fā)明基于擬牛頓法在線訓(xùn)練神經(jīng)網(wǎng)絡(luò)的FPGA的硬件架構(gòu)框圖;

圖2是本發(fā)明矩陣更新模塊(HU)的內(nèi)部數(shù)據(jù)流;

圖3是本發(fā)明梯度計(jì)算模塊(GC)的硬件結(jié)構(gòu)圖;

圖4是本發(fā)明線性搜索模塊(LS)的內(nèi)部結(jié)構(gòu)圖;

圖5是本發(fā)明神經(jīng)網(wǎng)絡(luò)評(píng)估模塊(NNE)的硬件結(jié)構(gòu)圖。

圖6是本發(fā)明的方法流程圖。

具體實(shí)施方式

下面通過(guò)具體實(shí)施例和附圖對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。本發(fā)明的實(shí)施例是為了更好地使本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明,并不對(duì)本發(fā)明作任何的限制。

如圖1所示,基于擬牛頓法在線訓(xùn)練神經(jīng)網(wǎng)絡(luò)的FPGA系統(tǒng),包括計(jì)算控制模塊CSC、隨機(jī)數(shù)產(chǎn)生模塊PNG、線性搜索模塊LS、梯度計(jì)算模塊GC、矩陣更新模塊HU和神經(jīng)網(wǎng)絡(luò)模塊NNE六大模塊;

所述計(jì)算控制模塊CSC采用有限狀態(tài)機(jī)的形式來(lái)安排上述各模塊的操作順序及內(nèi)存與相對(duì)應(yīng)模塊的數(shù)據(jù)傳遞;

所述線性搜索模塊LS、梯度計(jì)算模塊GC、矩陣更新模塊HU對(duì)應(yīng)于擬牛頓優(yōu)化算法的計(jì)算過(guò)程,神經(jīng)網(wǎng)絡(luò)評(píng)估模塊NNE將被線性搜索模塊LS調(diào)用;

所述矩陣更新模塊HU以BFGS方式更新矩陣并決定搜索方向,所述線性搜索模塊LS采用黃金分割法在搜索方向上確定搜索步長(zhǎng),所述梯度計(jì)算模塊GC完成目標(biāo)函數(shù)梯度的計(jì)算,所述隨機(jī)數(shù)產(chǎn)生模塊PNG基于32位線性移位寄存器產(chǎn)生神經(jīng)網(wǎng)絡(luò)的初始權(quán)重值。

如圖6所示,基于擬牛頓法在線訓(xùn)練神經(jīng)網(wǎng)絡(luò)的FPGA實(shí)現(xiàn)方法,包括以下步驟:

1)、分析擬牛頓法的c++代碼,將算法劃分為三個(gè)計(jì)算模塊,分別為梯度計(jì)算模塊GC、矩陣更新模塊HU和線性搜索模塊LS,通過(guò)編寫Verilog,將每個(gè)計(jì)算模塊實(shí)現(xiàn)為硬件塊;矩陣更新模塊HU以BFGS方式更新矩陣并決定搜索方向,線性搜索模塊LS采用黃金分割法在搜索方向上確定搜索步長(zhǎng),梯度計(jì)算模塊GC完成目標(biāo)函數(shù)梯度的計(jì)算;每個(gè)模塊內(nèi),采用流水線技術(shù)和模塊復(fù)用技術(shù);硬 件塊架構(gòu)根據(jù)模塊中涉及的操作來(lái)定制;

2)、根據(jù)神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)、訓(xùn)練方式和激勵(lì)函數(shù),通過(guò)編寫Verilog確立神經(jīng)網(wǎng)絡(luò)評(píng)估模塊NNE的硬件結(jié)構(gòu);硬件結(jié)構(gòu)分為前端和后端兩個(gè)部分;前端用于計(jì)算神經(jīng)網(wǎng)絡(luò)的實(shí)際輸出,后端用于計(jì)算神經(jīng)網(wǎng)絡(luò)的訓(xùn)練誤差;

3)、基于32位線性移位寄存器實(shí)現(xiàn)隨機(jī)數(shù)產(chǎn)生模塊PNG,該模塊用于產(chǎn)生神經(jīng)網(wǎng)絡(luò)的初始權(quán)重值;

4)、將FPGA片上存儲(chǔ)器用作緩沖器以鏈接上述五個(gè)硬件模塊,并存儲(chǔ)中間的計(jì)算結(jié)果,采用有限狀態(tài)機(jī)的形式安排上述五個(gè)模塊的操作順序及內(nèi)存與相對(duì)應(yīng)模塊的數(shù)據(jù)傳遞;該模塊被命名為計(jì)算控制模塊CSC;

5)、將上述硬件設(shè)計(jì)在Net-FPGA SUME(xc7vx690t)開發(fā)板上綜合實(shí)現(xiàn),就資源利用率、運(yùn)行時(shí)間和功率消耗這三方面,對(duì)該硬件設(shè)計(jì)進(jìn)行性能測(cè)試。

本發(fā)明采用經(jīng)典的三層神經(jīng)網(wǎng)絡(luò)。該網(wǎng)絡(luò)的結(jié)構(gòu)參數(shù)如下:輸入層有N1個(gè)神經(jīng)元,向量為x=[x1,…,xi,…,xN1],隱含層有N2個(gè)神經(jīng)元,隱含層向量為h=[h1,…,hj,…,hN2],輸出層有N3個(gè)神經(jīng)元,輸出層向量為z=[z1,…,zl,…,zN3],其中i,j,l分別為第i個(gè)輸入神經(jīng)元,第j個(gè)隱含層神經(jīng)元和第l個(gè)輸出層神經(jīng)元;輸入層與隱含層之間的權(quán)值向量為隱含層與輸出層之間的權(quán)值向量為則該神經(jīng)網(wǎng)絡(luò)的權(quán)值向量為

神經(jīng)網(wǎng)絡(luò)訓(xùn)練是指從足夠多的輸入樣本,通過(guò)一定算法調(diào)整網(wǎng)絡(luò)權(quán)值,使網(wǎng)絡(luò)的實(shí)際輸出z與預(yù)期值相符。神經(jīng)網(wǎng)絡(luò)的標(biāo)準(zhǔn)誤差函數(shù)為:

其中,

其中,|ST|指訓(xùn)練數(shù)據(jù)對(duì)的個(gè)數(shù),xm和分別指第m組元素個(gè)數(shù)為N1和N2的向量,分別代表神經(jīng)網(wǎng)絡(luò)輸入值和理想輸出值。是的第l個(gè)元素,zl(xm,w)是神經(jīng)網(wǎng)絡(luò)對(duì)應(yīng)于輸入xm的第l個(gè)輸出,和分別是訓(xùn)練數(shù)據(jù)中理想輸出的最大值和最小值,F(xiàn)(hj)為隱含層神經(jīng)元的激勵(lì)函數(shù)。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練問(wèn)題可轉(zhuǎn)化為求解最優(yōu)化問(wèn)題,形式如下:

求解該問(wèn)題的流行算法有最速下降法、共軛梯度法、擬牛頓法和信賴域方法等。其中擬牛頓法以收斂速度快的特點(diǎn)而倍受歡迎。BFGS算法是目前求解無(wú)約束優(yōu)化問(wèn)題的最流行的也是最有效的擬牛頓算法,其步驟如下:

算法1(BFGS算法)設(shè)函數(shù)ET由(1)給出,選取初始點(diǎn)w0∈Rn,若||g0||=0,算法終止;否則,選取初始矩陣B0(B0=I),I為單位矩陣,置k:=0。

步驟1由黃金分割法f(wkkdk)=minλ≥0f(wkkdk),計(jì)算搜索步長(zhǎng)λk,其中dk為搜索方向;

步驟2置wk+1:=wkkdk,若||gk+1||=0,算法終止;否則,轉(zhuǎn)步驟3;

步驟3置sk:=wk+1-wk,yk:=gk+1-gk,dk:=-Bkgk;

步驟4置k:=k+1,轉(zhuǎn)步驟1。

其中,wk為神經(jīng)網(wǎng)絡(luò)權(quán)重值,λk為搜索步長(zhǎng),dk為搜索方向,gk是訓(xùn)練誤差ET關(guān)于wk的導(dǎo)數(shù),Bk是BFGS算法的更新矩陣,sk為兩次迭代權(quán)重的差值,yk為兩次迭代梯度的差值,k指第k次迭代。

上述算法1中的步驟2用于計(jì)算公式(1)關(guān)于wk的梯度,其計(jì)算過(guò)程具體如下:

輸出神經(jīng)元的梯度可表示為:

由等式(6)得到的輸出誤差δlm向后傳播可得到隱含層神經(jīng)元的梯度,隱含層神經(jīng)元的梯度由下式推導(dǎo)得到:

其中c′是常數(shù),δjm是隱含層神經(jīng)元的誤差,F(xiàn)′(hjm)是sigmoid函數(shù)F(hjm)的導(dǎo)數(shù),可由F′(hjm)=F(hjm)(1-F(hjm))得到,其具有較少的計(jì)算量并利于硬件實(shí)現(xiàn)。黃金分割算法的步驟如下:

算法2(黃金分割法)給定初始搜索區(qū)間和精度要求ε>0,若b0-a0<ε,那么算法終止,輸出

步驟1置u0=a0+0.382(b0-a0),v0=a0+0.618(b0-a0),計(jì)算ET(u0),ET(v0)。置k:=0;

步驟2若ET(uk)>ET(vk),則轉(zhuǎn)步驟3;否則轉(zhuǎn)步驟4;

步驟3若bk-uk<ε,則算法終止,輸出λ*:=vk;否則置ak+1:=uk,bk+1:=bk,uk+1:=vk,ET(uk+1):=ET(vk),計(jì)算vk+1=ak+1+0.618(bk+1-ak+1)和ET(vk+1),轉(zhuǎn)步驟5;

步驟4若vk-ak<ε,則算法終止,輸出λ*:=uk;否則置ak+1:=ak,bk+1:=vk,vk+1:=uk,ET(vk+1):=ET(uk),計(jì)算uk+1=ak+1+0.382(bk+1-ak+1)和ET(uk+1),轉(zhuǎn)步驟5;

步驟5置k:=k+1,轉(zhuǎn)步驟2。

將上述BFGS擬牛頓算法映射為硬件架構(gòu),共六大模塊,如圖1所示。算法1中的步驟1、步驟2、步驟3分別對(duì)應(yīng)于線性搜索模塊(LS)、梯度計(jì)算模塊(GC)、矩陣更新模塊(HU)。公式(1)至公式(3)對(duì)應(yīng)于神經(jīng)網(wǎng)絡(luò)評(píng)估模塊(NNE), 該模塊將被線性搜索模塊(LS)調(diào)用。除上述計(jì)算模塊外,還有隨機(jī)數(shù)產(chǎn)生模塊(PNG)和計(jì)算控制模塊(CSC)。隨機(jī)數(shù)產(chǎn)生模塊(PNG)基于32位線性移位寄存器產(chǎn)生神經(jīng)網(wǎng)絡(luò)的初始權(quán)重值w0。計(jì)算控制模塊(CSC)采用有限狀態(tài)機(jī)的形式來(lái)安排所有模塊的操作順序及內(nèi)存與相對(duì)應(yīng)模塊的數(shù)據(jù)傳遞。下文將結(jié)合附圖對(duì)四大計(jì)算模塊(HU、LS、GC、NNE)的設(shè)計(jì)做詳細(xì)介紹。

矩陣更新模塊(HU)根據(jù)算法1中的步驟3得到一個(gè)新的矩陣并確定搜索方向,其內(nèi)部數(shù)據(jù)流如圖2所示。圖中箭頭上字母表示的是一個(gè)數(shù)值(αk1k2)/向量(rk,zk)/矩陣(Hk,Pk1,Pk2,Qk1,Qk2,H’),而這些值是由該箭頭始端方框內(nèi)的運(yùn)算得到的。計(jì)算最密集的操作是矩陣向量乘(Hk×sk),如雙線框所示。為實(shí)現(xiàn)可擴(kuò)展性,矩陣向量乘以逐行的向量乘運(yùn)算來(lái)實(shí)現(xiàn)。由圖2可見(jiàn),虛線框中的頂層塊(M1)和底層塊(M2)對(duì)稱,因此兩塊共用同一個(gè)硬件資源。特別地,M1與矩陣向量乘同時(shí)運(yùn)算,M2在M1與矩陣向量乘運(yùn)算結(jié)束后開始操作。FIFO用于暫存頂層塊(M1)的計(jì)算結(jié)果H′并等待底層塊(M2)完成操作。該模塊的電路設(shè)計(jì)采用IP復(fù)用技術(shù),通過(guò)Xilinx Vivado軟件中IP Catalog調(diào)用Float-Point(單浮點(diǎn)IP核,包括浮點(diǎn)加法器、減法器、乘法器、除法器)和Block Memory Generator(存儲(chǔ)器IP核,選用雙端口Ram)。電路內(nèi)部采用有限狀態(tài)機(jī),通過(guò)狀態(tài)的轉(zhuǎn)換來(lái)控制每步數(shù)據(jù)的讀入、讀出和存儲(chǔ)。

梯度計(jì)算模塊(GC)對(duì)應(yīng)于算法1中的步驟2,具體計(jì)算過(guò)程對(duì)應(yīng)于公式(6)至公式(7),其結(jié)構(gòu)如圖3所示。每組訓(xùn)練集的輸入值(hjm,F(hjm),ET_temp)由神經(jīng)網(wǎng)絡(luò)評(píng)估模塊(NNE)計(jì)算得到。當(dāng)新的輸入值可用時(shí),僅用一個(gè)減法器就可首先得到輸出神經(jīng)元的誤差δlm,同時(shí)用一個(gè)減法器和一個(gè)乘法器計(jì)算隱含層神經(jīng)元輸出的梯度F’(hjm)。一旦得到輸出神經(jīng)元誤差后,開始向后傳播計(jì)算。左側(cè)累加單元用于實(shí)現(xiàn)輸出層權(quán)重與誤差的乘累加,即其結(jié)果與對(duì)應(yīng)的F’(hjm)依次相乘得到隱含神經(jīng)元的誤差δjm。右側(cè)兩個(gè)乘累加單元對(duì)不同訓(xùn)練集對(duì)產(chǎn)生的神經(jīng)元誤差進(jìn)行乘累加,分別得到等式(6)中的和 等式(7)中的

線性搜索模塊(LS)對(duì)應(yīng)于算法1中的步驟1,采用黃金分割法計(jì)算迭代步長(zhǎng)。黃金分割法的具體操作對(duì)應(yīng)于算法2,該模塊的結(jié)構(gòu)圖如圖4所示,其由一系列算數(shù)操作和比較操作組成。該模塊計(jì)算量小但控制復(fù)雜,通過(guò)sel0-1信號(hào)來(lái)確定數(shù)據(jù)的傳輸通路。為減少資源,該模塊的乘法器和加法器采用復(fù)用技術(shù)。該模塊在計(jì)算過(guò)程中,會(huì)多次調(diào)用神經(jīng)網(wǎng)絡(luò)評(píng)估模塊(NNE)。

神經(jīng)網(wǎng)絡(luò)評(píng)估模塊(NNE)計(jì)算人工神經(jīng)網(wǎng)絡(luò)的訓(xùn)練誤差,分為前端和后端兩部分。前端用于計(jì)算神經(jīng)網(wǎng)絡(luò)的實(shí)際輸出,對(duì)應(yīng)于公式(2)至公式(4),結(jié)構(gòu)如圖5(b)所示。兩個(gè)累加單元分別用于得到輸出層和隱含層神經(jīng)元的輸出。在加法器的輸入和輸出端口間添加一個(gè)由若干個(gè)觸發(fā)器組成的可變移位寄存器,以確保神經(jīng)元間的正確累加。為加速神經(jīng)網(wǎng)絡(luò)的計(jì)算過(guò)程,前端結(jié)構(gòu)采用若干組處理單元。后端用于計(jì)算訓(xùn)練誤差,對(duì)應(yīng)于公式(1),結(jié)構(gòu)如圖5(a)所示。來(lái)自前端模塊的結(jié)果得到后,后端模塊開始計(jì)算。一個(gè)多路選擇器逐次選擇每組神經(jīng)網(wǎng)絡(luò)實(shí)際輸出,與對(duì)應(yīng)神經(jīng)網(wǎng)絡(luò)理論輸出相減。然后通過(guò)點(diǎn)積運(yùn)算實(shí)現(xiàn)平方和的操作。

下面對(duì)該硬件架構(gòu)進(jìn)行測(cè)試,下文對(duì)測(cè)試方法進(jìn)行介紹:

根據(jù)設(shè)計(jì)的硬件結(jié)構(gòu),在Xilinx Vivado 2014.04上編寫RTL代碼并綜合實(shí)現(xiàn),再下載到Net-FPGA SUME(xc7vx690tffg1761-3)開發(fā)板上進(jìn)行板級(jí)調(diào)試。該硬件設(shè)計(jì)可達(dá)到的最高時(shí)鐘頻率為250MHz,關(guān)鍵路徑為指數(shù)浮點(diǎn)IP核的最高時(shí)鐘頻率。就硬件設(shè)計(jì)的資源利用率、加速比和功耗三方面,本發(fā)明進(jìn)行了性能評(píng)估。

資源利用率:由Xilinx Vivado綜合實(shí)現(xiàn)后得到。

運(yùn)行時(shí)間:軟件實(shí)現(xiàn)選用來(lái)自于CSDN的開源的擬牛頓C++算法,在i5-4590 CPU的Microsoft Visual studio 2013上編譯。對(duì)于不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練集數(shù),采用擬牛頓優(yōu)化算法的單次迭代平均時(shí)間作為軟硬件運(yùn)行時(shí)間的衡量標(biāo)準(zhǔn)。將軟件實(shí)現(xiàn)時(shí)間與硬件實(shí)現(xiàn)時(shí)間相除可得到加速比。

功率消耗:該實(shí)驗(yàn)中FPGA開發(fā)板和PC主板的供電電壓均為12V。兩個(gè)實(shí)現(xiàn)平臺(tái)的供電電流由Tektronix TCP0030電流鉗測(cè)得,并通過(guò)MS04054混合信號(hào)示波器觀察。將電壓乘以電流即可得到功耗。

應(yīng)當(dāng)理解的是,這里所討論的實(shí)施方案及實(shí)例只是為了說(shuō)明,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō),可以加以改進(jìn)或變換,而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。

相關(guān)文獻(xiàn):

[1]王健偉,宋執(zhí)環(huán).基于嵌入式系統(tǒng)的神經(jīng)網(wǎng)絡(luò)在線訓(xùn)練平臺(tái)實(shí)現(xiàn)[J].傳感器與微系統(tǒng),2010,29(8):100-103.

[2]P.Antonik;F.Duport;M.Hermans;A.Smerieri;M.Haelterman;S.Massar,"Online Training of an Opto-Electronic Reservoir Computer Applied to Real-Time Channel Equalization,"in IEEE Transactions on Neural Networks and Learning Systems,vol.PP,no.99,pp.1-13

[3]Kim C M,Choi K H,Cho Y B.Hardware design of CMAC neural network for control applications[C]//International Joint Conference on Neural Networks.IEEE,2003:953-958vol.2.

[4]Y.Ma,N.Suda,Y.Cao,J.s.Seo,and S.Vrudhula,“Scalable and modularized rtl compilation of convolutional neural networks onto fpga,”in 2016 26th International Conference on Field Programmable Logic and Applications(FPL),Aug 2016,pp.1–8.

[5]E.Nurvitadhi,J.Sim,D.Sheffield,A.Mishra,S.Krishnan,and D.Marr,“Accelerating recurrent neural networks in analytics servers:Comparison of fpga,cpu,gpu,and asic,”in 2016 26th International Conference on Field Programmable Logic and Applications(FPL),Aug 2016,pp.1–4.

[6]E.Nurvitadhi,J.Sim,D.Sheffield,A.Mishra,S.Krishnan,and D. Marr,“Accelerating recurrent neural networks in analytics servers:Comparison of fpga,cpu,gpu,and asic,”in 2016 26th International Conference on Field Programmable Logic and Applications(FPL),Aug 2016,pp.1–4.

[7]F.Ortega-Zamorano,J.M.Jerez,and L.Franco,“FPGA implementation of the C-mantec neural network constructive algorithm,”IEEE Transactions on Industrial Informatics,vol.10,no.2,pp.1154–1161,May 2014.

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
鄂伦春自治旗| 额尔古纳市| 宁津县| 广西| 平邑县| 平顺县| 定安县| 秦安县| 吉木乃县| 呼图壁县| 嘉峪关市| 渭南市| 奇台县| 东莞市| 海南省| 梅州市| 庆安县| 莎车县| 济源市| 罗源县| 资阳市| 武胜县| 青阳县| 驻马店市| 垦利县| 洛川县| 南郑县| 常宁市| 吉水县| 崇礼县| 古浪县| 南城县| 北碚区| 车致| 广州市| 织金县| 永寿县| 柘城县| 宜宾市| 湘潭县| 高清|