楊景明,杜韋江,吳紹坤,李 良,魏立新
(1.燕山大學(xué) 工業(yè)計(jì)算機(jī)控制河北省重點(diǎn)實(shí)驗(yàn)室,河北 秦皇島 066004;2.國(guó)家冷軋板帶裝備及工藝工程技術(shù)研究中心,河北 秦皇島 066004)
軟件串行實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)一直存在網(wǎng)絡(luò)收斂速度過(guò)慢、實(shí)時(shí)性差的問(wèn)題,而可編程邏輯器件FPGA的出現(xiàn)給神經(jīng)網(wǎng)絡(luò)提供了一種有效的硬件實(shí)現(xiàn)方式。FPGA可通過(guò)并行計(jì)算的方式,在一個(gè)周期內(nèi)完成多個(gè)運(yùn)算,且其可編程以及可重構(gòu)能力大大縮短了神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)周期,這使得利用硬件實(shí)現(xiàn)大型神經(jīng)網(wǎng)絡(luò)成為可能[1-3]。很多文獻(xiàn)也對(duì)這一課題進(jìn)行了深入研究,但仍有一些不足之處,文獻(xiàn)[4]運(yùn)用脈動(dòng)門(mén)陣列的方法實(shí)現(xiàn)了BP神經(jīng)網(wǎng)絡(luò),但是大大降低了網(wǎng)絡(luò)的并行性;文獻(xiàn)[5]成功的運(yùn)用查表法實(shí)現(xiàn)了BP神經(jīng)網(wǎng)絡(luò)的sigmoid函數(shù),但將更新權(quán)值存儲(chǔ)在RAM中的方式使得運(yùn)算不夠靈活;文獻(xiàn)[6]成功利用1-3-1網(wǎng)絡(luò)對(duì)cosx函數(shù)進(jìn)行了逼近,但沒(méi)有對(duì)相對(duì)復(fù)雜的函數(shù)進(jìn)行進(jìn)一步的驗(yàn)證。
基于這一現(xiàn)狀,本文對(duì)激活函數(shù)實(shí)現(xiàn)、資源合理分配、以及存儲(chǔ)方式選擇等關(guān)鍵性問(wèn)題進(jìn)行了研究,并提出了寄存器循環(huán)緩存方式以及串并聯(lián)相結(jié)合的計(jì)算方法,對(duì)FPGA實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行了改進(jìn),有效節(jié)省了資源,提高了BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度。
最后利用簡(jiǎn)單函數(shù)以及復(fù)雜函數(shù)對(duì)網(wǎng)絡(luò)進(jìn)行了大量的實(shí)驗(yàn),并與軟件實(shí)現(xiàn)進(jìn)行了對(duì)比,驗(yàn)證了基于FPGA神經(jīng)網(wǎng)絡(luò)的實(shí)時(shí)性以及高效性。
對(duì)于在FPGA中實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò),激活函數(shù)的選取和實(shí)現(xiàn)是關(guān)鍵問(wèn)題之一。由于雙極性S函數(shù)既具有非常好的線性區(qū)域又具有非常好的非線性區(qū)域,使其能夠同時(shí)對(duì)小信號(hào)和大信號(hào)進(jìn)行處理,對(duì)于存在負(fù)相關(guān)系的復(fù)雜函數(shù)其要比單極性S函數(shù)作為激活函數(shù)有一定的優(yōu)勢(shì)。因此,本文選擇雙極性S函數(shù)作為神經(jīng)網(wǎng)絡(luò)隱含層的激活函數(shù),而輸出層則選擇對(duì)稱飽和線性函數(shù)作為激活函數(shù)。
非線性函數(shù)不能夠在FPGA中直接實(shí)現(xiàn),只能通過(guò)某些方法對(duì)其進(jìn)行逼近,對(duì)于硬件實(shí)現(xiàn)激活函數(shù),需要充分考慮多方面的因素,這就意味著逼近效果最好的方式并不一定適合于硬件實(shí)現(xiàn)。本文通過(guò)綜合考慮FPGA資源與精度,選擇分段函數(shù)與查表法相結(jié)合的平滑插值法對(duì)雙曲正切函數(shù)進(jìn)行逼近。這種函數(shù)逼近法實(shí)質(zhì)上就是通過(guò)一系列的線性函數(shù)來(lái)對(duì)激勵(lì)函數(shù)進(jìn)行擬合,然后所得系數(shù)利用查表的方式表示出來(lái)。將激勵(lì)函數(shù)分為不同的區(qū)間,并運(yùn)用最小二乘法對(duì)多項(xiàng)式進(jìn)行擬合,最終用多個(gè)線性函數(shù)將雙曲正切函數(shù)表示出來(lái)。因?yàn)殡p曲正切函數(shù)的正區(qū)間與負(fù)區(qū)間關(guān)于原點(diǎn)對(duì)稱,所以為了節(jié)省資源,在取負(fù)值時(shí),通過(guò)取絕對(duì)值帶入正值區(qū)域再取反的形式獲得,這種方式有效的節(jié)約了對(duì)FPGA資源的利用。圖1為分段函數(shù)在[0,1]、[1, 2]、[2, 3]、[3, 4]對(duì)雙曲正切函數(shù)進(jìn)行分段逼近情況。
圖1 函數(shù)分段函數(shù)逼近情況
根據(jù)逼近情況可將雙曲正切函數(shù)分為5段,逼近函數(shù)與其絕對(duì)誤差見(jiàn)表1,可以看出,逼近函數(shù)的輸出值與雙曲正切函數(shù)的理論值誤差小于0.01,說(shuō)明利用平滑插值法逼近在FPGA中實(shí)現(xiàn)激活函數(shù)完全可行。該模塊用quartus ii進(jìn)行編譯之后,生成的雙極性S函數(shù)的電路原理如圖2所示,所占ALMS為220,不足實(shí)驗(yàn)平臺(tái)FPGA芯片的1%;與利用polyfit實(shí)現(xiàn)單極性S函數(shù)相比,節(jié)省了更多的硬件資源[7],與分15段實(shí)現(xiàn)了S函數(shù)相比,不僅實(shí)現(xiàn)起來(lái)更加簡(jiǎn)便,且精度更高[4]。相比之下該方法使函數(shù)的精度、性能與成本達(dá)到了一個(gè)更加良好的平衡。
表1 雙曲正切函數(shù)各區(qū)間逼近函數(shù)及誤差
圖2 雙極性S函數(shù)電路原理
如何通過(guò)合理的存儲(chǔ)方式來(lái)獲取和傳輸數(shù)據(jù)也是需要考慮的問(wèn)題之一。大多數(shù)參考文獻(xiàn)均采用分布式RAM存儲(chǔ)激活函數(shù)的常數(shù),而將權(quán)值及樣本數(shù)據(jù)存儲(chǔ)在 SRAM 或DRAM 等外部存儲(chǔ)器中,但由于片外存儲(chǔ)設(shè)備的帶寬限制,數(shù)據(jù)很難達(dá)到并行輸入輸出,使其不能直接滿足計(jì)算的需求[8]。因此本文使用了一種寄存器循環(huán)緩存的方法來(lái)進(jìn)行權(quán)值的存儲(chǔ),不僅給數(shù)據(jù)的輸入輸出提供了足夠大的位寬,而且使其在單時(shí)鐘內(nèi)可以并行的輸入輸出。
如圖3所示,神經(jīng)網(wǎng)絡(luò)初始權(quán)值由外部存儲(chǔ)設(shè)備給定,每次訓(xùn)練后的數(shù)據(jù)既不存儲(chǔ)到外部存儲(chǔ)中去,也不存儲(chǔ)在FPGA片上固有的RAM中,而是直接緩存到寄存器中進(jìn)行下一輪的學(xué)習(xí),訓(xùn)練全部結(jié)束或者遇到突發(fā)情況時(shí)才會(huì)將權(quán)值存儲(chǔ)到外部掉電可保存的設(shè)備中。圖4為通過(guò)quartus ii的邏輯編譯后所產(chǎn)生的部分邏輯單元,其中V11、V12、V13、V14為神經(jīng)網(wǎng)絡(luò)更新后權(quán)值,其值將鎖存到寄存器中,并在下一次誤差運(yùn)算之后發(fā)送出V_11、V_12、V_13、V_14作為待更新權(quán)值,然后與權(quán)值增量進(jìn)行運(yùn)算生成新的權(quán)值。得到的新權(quán)值不僅用于接下來(lái)乘累加運(yùn)算,還要存儲(chǔ)在緩存寄存器中等待下一次的權(quán)值更新。這種存儲(chǔ)方式與FPGA的流水線方式相結(jié)合,可以大大減少對(duì)外部存儲(chǔ)的重復(fù)訪問(wèn),降低了存儲(chǔ)帶寬的耗費(fèi),提高了對(duì)片外資源的利用率。且與將權(quán)值存儲(chǔ)在片上RAM相比,不但簡(jiǎn)化了整體網(wǎng)絡(luò)設(shè)計(jì)的復(fù)雜度,還使片上的存儲(chǔ)資源得到了合理的分配。
圖3 寄存器循環(huán)緩存結(jié)構(gòu)原理
圖4 寄存器循環(huán)緩存結(jié)構(gòu)邏輯
采用FPGA實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)是因?yàn)槠淞己玫牟⑿行耘c神經(jīng)網(wǎng)絡(luò)的運(yùn)算方式相符。但正是因?yàn)榇蠖鄶?shù)設(shè)計(jì)與實(shí)現(xiàn)過(guò)分傾向于實(shí)現(xiàn)對(duì)神經(jīng)網(wǎng)絡(luò)的高度并行,而忽略了阿穆達(dá)定律的含義,該定律指出最終的加速受到串行或者低速并行處理的限制。在一般情況下,神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)形式在硬件中實(shí)現(xiàn)完全并行是不可能的,必然存在著一些順序處理,所以必須選擇最適合硬件的并行結(jié)構(gòu)來(lái)完成神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在FPGA中的最佳映射。本文采用并行與串行結(jié)構(gòu)相結(jié)合的方式進(jìn)行了BP神經(jīng)網(wǎng)絡(luò)在FPGA中的實(shí)現(xiàn),各層神經(jīng)元之間采用并行運(yùn)算,而模塊之間采用FPGA的流水線技術(shù)。
神經(jīng)網(wǎng)絡(luò)的層與層之間采用FPGA的流水線的設(shè)計(jì)方法,主要是將原本一個(gè)時(shí)鐘周期完成的較大組合邏輯通過(guò)合理的切割后分由多個(gè)時(shí)鐘周期完成,這樣一來(lái)該部分運(yùn)行的時(shí)鐘頻率將會(huì)有明顯提高。如圖5所示,采用這種設(shè)計(jì),雖然第一次輸出有較大的延遲,但若干個(gè)周期后,每個(gè)時(shí)鐘周期都能進(jìn)行一次輸出,大大提高了數(shù)據(jù)處理的頻率。流水線技術(shù)的應(yīng)用,需要各模塊之間時(shí)序上能夠進(jìn)行合理的分配,通過(guò)各種使能信號(hào)設(shè)定,使BP神經(jīng)網(wǎng)絡(luò)在FPGA中實(shí)現(xiàn)多級(jí)流水線結(jié)構(gòu)。
圖5 流水線實(shí)現(xiàn)結(jié)構(gòu)
在具體設(shè)計(jì)過(guò)程中,程序設(shè)計(jì)采用了頂層模塊式結(jié)構(gòu),共分為隱層模塊、輸出模塊、誤差計(jì)算模塊、誤差更新模塊以及權(quán)值緩存模塊等5部分,而各模塊內(nèi)部又可分為若干個(gè)子模塊,例如隱層模塊可分為輸入模塊、乘累加模塊、激活函數(shù)模塊,各部分內(nèi)部均并行計(jì)算,模塊之間通過(guò)添加使能信號(hào)的方式實(shí)現(xiàn)流水線設(shè)計(jì)。如圖6所示,start0~start6使能信號(hào)分別控制著各模塊的運(yùn)行,e為輸出層誤差,w_r1為隱層權(quán)值增量。可以看出,start1控制整個(gè)前向通道,start3為誤差計(jì)算模塊的使能信號(hào),當(dāng)經(jīng)過(guò)一個(gè)時(shí)鐘周期后,輸出層誤差e發(fā)生變化,而start4為權(quán)值更新層的使能信號(hào),當(dāng)經(jīng)過(guò)一個(gè)時(shí)鐘周期后,隱層權(quán)值增量w_r1發(fā)生變化。使能信號(hào)的設(shè)置是FPGA進(jìn)行復(fù)雜電路設(shè)計(jì)時(shí)必不可少的環(huán)節(jié)之一,在同一時(shí)鐘下,通過(guò)寄存器邊沿觸發(fā)的方式產(chǎn)生使能信號(hào),并將其傳輸?shù)较乱粋€(gè)處理的模塊中去,可以有效的避免模塊過(guò)多所產(chǎn)生的時(shí)序沖突,便于程序的時(shí)序約束及時(shí)序仿真。
圖6 使能信號(hào)的設(shè)置
正是因?yàn)镕PGA獨(dú)特的流水線設(shè)計(jì),使其在延時(shí)方面比GPU實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)有著核心的優(yōu)勢(shì),盡管GPU與FPGA一樣都能夠進(jìn)行并行運(yùn)算,但流水線深度受限的GPU因?yàn)閿?shù)據(jù)延時(shí)高達(dá)毫秒級(jí),而運(yùn)用FPGA的深度流水線技術(shù)與并行相結(jié)合的方式可將延時(shí)控制在納秒級(jí),對(duì)于流式計(jì)算任務(wù),F(xiàn)PGA天生有延時(shí)方面的優(yōu)勢(shì)。
本文選用DE1-SOC實(shí)驗(yàn)平臺(tái)進(jìn)行實(shí)驗(yàn)驗(yàn)證,該平臺(tái)選用Altera公司的CycloneV系列的5CSEMA5F31C6N芯片,并與PC平臺(tái)進(jìn)行了實(shí)際計(jì)算效率對(duì)比。實(shí)驗(yàn)所用芯片最大工作頻率為800MHz,ALMs為32070,且具有475個(gè)可使用的I/O接口,實(shí)驗(yàn)所用PC配置為Intel(R)core(TM)i5-6500 CPU 3.20 GHz,內(nèi)存為8G。分別在FPGA芯片與PC中運(yùn)行相同的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并進(jìn)行對(duì)比。
程序使用21位定點(diǎn)小數(shù)進(jìn)行實(shí)現(xiàn),其中1位符號(hào)位,8位整數(shù)位,12位小數(shù)位,數(shù)據(jù)以-4096~+4096進(jìn)行歸一化運(yùn)算,運(yùn)算結(jié)束后再將其反歸一化。本文通過(guò)實(shí)驗(yàn)對(duì)數(shù)據(jù)精度進(jìn)行了驗(yàn)證,該表示方法可以完全滿足BP神經(jīng)網(wǎng)絡(luò)的收斂運(yùn)算。
參考文獻(xiàn)中出現(xiàn)很多運(yùn)用BP神經(jīng)網(wǎng)絡(luò)逼近sinx函數(shù),本文也利用了1-6-1的BP神經(jīng)網(wǎng)絡(luò)對(duì)sinx進(jìn)行了逼近實(shí)驗(yàn)。首先選擇31個(gè)數(shù)據(jù),進(jìn)行歸一化后先在PC中運(yùn)用相同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,在誤差小于0.01時(shí),程序完成收斂過(guò)程并結(jié)束。同時(shí)將樣本在[-4096,4096]區(qū)間內(nèi)進(jìn)行歸一化,隱層、輸出層權(quán)值為在PC訓(xùn)練中隨機(jī)產(chǎn)生的初始權(quán)值,然后在Modlsim軟件中對(duì)FPGA實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練仿真,也同樣在誤差小于0.01時(shí)完成訓(xùn)練,經(jīng)過(guò)20次實(shí)驗(yàn)后,將PC中的訓(xùn)練結(jié)果與FPGA進(jìn)行對(duì)比,見(jiàn)表2,數(shù)據(jù)為多次訓(xùn)練后的平均值。
表2 PC與FPGA實(shí)現(xiàn)sinx比較
可以看出,對(duì)于簡(jiǎn)單的函數(shù),F(xiàn)PGA的訓(xùn)練的速度要快于PC,但由于訓(xùn)練時(shí)間都很短,所以利用FPGA實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)看不出明顯的優(yōu)勢(shì)。
T=T13+T12-2.5*T1
(1)
其中,T1=sin(2*pi*x1)+ex2。
為了驗(yàn)證FPGA硬件實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)在速度方面的優(yōu)勢(shì)。文章利用2-12-1神經(jīng)網(wǎng)絡(luò)逼近函數(shù)式(1)的T函數(shù),選取70個(gè)歸一化后的訓(xùn)練樣本進(jìn)行訓(xùn)練,首先運(yùn)用PC實(shí)現(xiàn)同樣拓?fù)浣Y(jié)構(gòu)的BP的神經(jīng)網(wǎng)絡(luò),初始權(quán)重隨機(jī)給出,當(dāng)誤差小于0.01時(shí)訓(xùn)練結(jié)束,圖7為PC中訓(xùn)練的函數(shù)逼近情況,然后利用PC中同樣的隨機(jī)權(quán)值,在FPGA中進(jìn)行訓(xùn)練,同樣誤差小于0.01時(shí)訓(xùn)練結(jié)束,訓(xùn)練結(jié)果如圖8所示,其中x1為一項(xiàng)輸入,y0為期望輸出,y為實(shí)際輸出,由圖可知,本次訓(xùn)練在178 ms時(shí)完成對(duì)期望函數(shù)的逼近。FPGA資源消耗情況見(jiàn)表3,因?yàn)槌绦蛑羞\(yùn)用了大量的乘累加運(yùn)算,所以占用了所有的DSPS;訓(xùn)練結(jié)束后,選取測(cè)試值對(duì)訓(xùn)練好的網(wǎng)絡(luò)進(jìn)行測(cè)試,測(cè)試結(jié)果見(jiàn)表4、表5,精度皆符合逼近要求。
圖7 PC逼近T函數(shù)
圖8 FPGA逼近T函數(shù)
資源占比/%ALMs10 192/32 07031.7Pins35/4578DSPS87/87100memory65 536/4 065 2802
表4 VS2010測(cè)試樣本
表5 FPGA測(cè)試樣本
為了證明實(shí)驗(yàn)的普遍性,進(jìn)行了20次的對(duì)比實(shí)驗(yàn),每次都由PC隨機(jī)給出初始權(quán)值,將在PC上運(yùn)用VS2010訓(xùn)練的結(jié)果與FPGA芯片訓(xùn)練的結(jié)果做對(duì)比,結(jié)果見(jiàn)表6。
表6 PC與FPGA實(shí)現(xiàn)T函數(shù)比較
由實(shí)驗(yàn)可知,利用FPGA能夠充分的發(fā)揮BP神經(jīng)網(wǎng)絡(luò)的并行性,運(yùn)用相同的網(wǎng)絡(luò)結(jié)構(gòu)以及學(xué)習(xí)速率對(duì)相同的樣本進(jìn)行訓(xùn)練時(shí),不但精度可以滿足BP神經(jīng)網(wǎng)絡(luò)的收斂要求,而且訓(xùn)練速度要遠(yuǎn)遠(yuǎn)快于在PC中的訓(xùn)練。
為了驗(yàn)證幾個(gè)關(guān)鍵性問(wèn)題的改進(jìn)可以對(duì)FPGA實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化,文章進(jìn)行了進(jìn)一步的對(duì)比實(shí)驗(yàn)。其中一組為前文所提到的改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò),另一組BP神經(jīng)網(wǎng)絡(luò)利用查表法實(shí)現(xiàn)激活函數(shù)Sigmoid,并在每次迭代后將權(quán)值存儲(chǔ)在外部存儲(chǔ)RAW中,同樣的條件下對(duì)T函數(shù)進(jìn)行實(shí)現(xiàn),對(duì)比結(jié)果見(jiàn)表7。
表7 在FPGA中利用不同方式實(shí)現(xiàn)T函數(shù)對(duì)比
根據(jù)對(duì)比可知,通過(guò)對(duì)激活函數(shù)、存儲(chǔ)方式實(shí)現(xiàn)的改進(jìn),不僅可以減少FPGA實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)所消耗的資源,而且可以提高BP神經(jīng)網(wǎng)絡(luò)在FPGA中收斂的速度。
基于quartus ii對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行了實(shí)現(xiàn),并在利用Modlsim進(jìn)行仿真的同時(shí)在開(kāi)發(fā)板上進(jìn)行了板級(jí)調(diào)試。通過(guò)提取的實(shí)驗(yàn)數(shù)據(jù)驗(yàn)證了該方法有效減少了實(shí)現(xiàn)激活函數(shù)所需要的芯片資源,增加了BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的并行性,提高了網(wǎng)絡(luò)的訓(xùn)練速度。并通過(guò)與通用PC機(jī)實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行精度與效率之間的對(duì)比,在精度方面,F(xiàn)PGA上實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的最大誤差小于0.01,滿足收斂所需要的精度。而在速度方面,F(xiàn)PGA的實(shí)現(xiàn)速度要遠(yuǎn)遠(yuǎn)超出PC機(jī)上的實(shí)現(xiàn)速度。
參考文獻(xiàn):
[1]DONG Shuwei,ZHENG Bin,DU Pengfei.Vibration active control system design based on FPGA+DSP[J].Computer Engineering and Design,2015,36(8):2080-2083(in Chinese).[董淑偉,鄭賓,杜鵬飛.基于FPGA+DSP的振動(dòng)主動(dòng)控制系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2015,36(8):2080-2083.]
[2]Ji S,Xu W,Yang M,et al.3D Convolutional neural networks for human action recognition[J].IEEE Trans Pattern Anal Mach Intell,2013,35(1):221-231.
[3]Subirats J,Franco L,Jerez J.C-Mantec:A novel constructive neural network algorithm incorporating competition between neurons[J].Neutral Netw,2012,26:130-140.
[4]YANG Cheng.Research and implementation of artificial neural network based on FPGA[D].Xi’an:Xi’an University of Electronic Science and Technology,2016(in Chinese).[楊程.基于FPGA的人工神經(jīng)網(wǎng)絡(luò)的研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2016.]
[5]ZHU Fang.Implementation and application of neural network based on FPGA[D].Guangzhou:Guangzhou University of Technology,2016(in Chinese)[祝芳.基于FPGA的神經(jīng)網(wǎng)絡(luò)與應(yīng)用[D].廣州:廣州工業(yè)大學(xué),2016.]
[6]WANG Meng,CHANG Sheng,WANG Hao.Design of adaptive neural network based on BP neural network[J].Modern Electronic Technology,2016,39(15):115-118(in Chinese).[王蒙,常勝,王豪.一種自適應(yīng)訓(xùn)練的BP神經(jīng)網(wǎng)絡(luò)FPGA設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2016,39(15):115-118.]
[7]LIU Peilong.Research and design of hardware implementation of neural network based on FPGA[D].Chengdu:University of Electronic Science and Technology,2012(in Chinese).[劉培龍.基于FPGA的神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)的研究與設(shè)計(jì)[D].成都:電子科技大學(xué),2012.]
[8]GU Zhijian.The research on parallel architecture for FPGA-based convolutional natural networks[D].Harbin:Harbin Engineering University,2013(in Chinese).[顧志堅(jiān).基于FPGA的卷積神經(jīng)網(wǎng)絡(luò)并行結(jié)構(gòu)研究[D].哈爾濱:哈爾濱工程大學(xué),2013.]
[9]YU Zijian,MA De.FPGA-based accelerator for convolution neural network[J].Computer Engineering,2017,43(1):109-114(in Chinese).[余子健,馬德.基于FPGA的神經(jīng)網(wǎng)絡(luò)加速器[J].計(jì)算機(jī)工程,2017,43(1):109-114.]
[10]SHI Changzhen,YANG Xue,WANG Zhensong.Design and realization of high performance parallel FFT processor[J]Computer Engineering,2012,38(2):242-247(in Chinese).[石長(zhǎng)振,楊雪,王貞松.高性能并行FFT處理器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2012,38(2):242-247.]
[11]ZHOU Jinglong.A FPGA implementation of frequency domain anti jamming algorithm based on a structure of high speed FFT[J].Microelectronics & Computer,2014,31(5):32-35(in Chinese).[周景龍.基于高速FFT結(jié)構(gòu)的頻域抗干擾算法的FPGA實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2014,31(5):32-35.]