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

?

FPGA在人工智能深度學(xué)習(xí)中的應(yīng)用

2022-10-26 08:52武漢工程大學(xué)郵電與信息工程學(xué)院周瑩
關(guān)鍵詞:權(quán)值卷積神經(jīng)網(wǎng)絡(luò)

武漢工程大學(xué)郵電與信息工程學(xué)院 周瑩

近年來,F(xiàn)PGA應(yīng)用的呼聲之高,發(fā)展之快令人振奮,從AI到VR,從語(yǔ)音識(shí)別,人臉識(shí)別到各種各樣的加速器。在人工智能興起和發(fā)展的時(shí)代,深度學(xué)習(xí)起到了中流砥柱的作用,然而深度學(xué)習(xí)仍然面臨著超大計(jì)算量的問題,GPU、ASIC、FPGA都是解決龐大計(jì)算量的有效方案。本文將以Lenet卷積神經(jīng)網(wǎng)絡(luò)模型為例,基于CNN網(wǎng)絡(luò)模型和硬件架構(gòu)實(shí)現(xiàn),對(duì)CNN網(wǎng)絡(luò)的后向訓(xùn)練過程進(jìn)行Matlab定點(diǎn)仿真和FPGA實(shí)現(xiàn)以及Modelsim仿真驗(yàn)證,最終綜合對(duì)比FPGA、GPU、CPU的性能。

人工智能是研究用于模擬和擴(kuò)展人類行為的一門新型技術(shù)學(xué)科。對(duì)于人工智能,特別是基于深度學(xué)習(xí)的應(yīng)用來說,很多應(yīng)用場(chǎng)所都對(duì)實(shí)時(shí)性有著很高的要求[1]。面對(duì)這個(gè)新時(shí)代提出的新要求,F(xiàn)PGA利用其特點(diǎn),發(fā)揮著它重要的作用[2]。下文以CNN網(wǎng)絡(luò)的后向訓(xùn)練過程為例說明FPGA的性能優(yōu)勢(shì)。

DNN(深層神經(jīng)網(wǎng)絡(luò))包含兩類核心算法:CNN(卷積神經(jīng)網(wǎng)絡(luò))和LSTM(長(zhǎng)短期記憶網(wǎng)絡(luò)),都能在很大程度上受益于低精度的乘加運(yùn)算[3]。CNN算法目前是最重要的深度學(xué)習(xí)方法之一,這種算法在圖像識(shí)別以及語(yǔ)音識(shí)別應(yīng)用中取得了突破性的成就,下面就以CNN算法的后向訓(xùn)練過程模型架構(gòu)及結(jié)果仿真為例,說明FPGA在深度學(xué)習(xí)算法加速上的優(yōu)勢(shì)。

1 CNN的網(wǎng)絡(luò)模型

下面以一種具體的Lenet卷積神經(jīng)網(wǎng)絡(luò)模型為例,給該CNN一個(gè)輸入,輸入名為MINST的一個(gè)數(shù)據(jù)集,也就是一張灰度圖像,其像素是(1,28,28),如圖1所示。

其conv1作為第一個(gè)卷積層,卷積核的大小是(4,1,5,5),其中的4代表有4個(gè)(1,5,5)的卷積;利用非全零的方法進(jìn)行填充,步長(zhǎng)取1,Relu作為其激活函數(shù),再依據(jù)(式1)和(式2)可得,輸出(4,24,24);第1個(gè)池化層是Pooling1,經(jīng)過這個(gè)池化層之后,再采用最大池化策略的方式,利用非全零的方法進(jìn)行填充,步長(zhǎng)取2,這時(shí)的輸出是(4,12,12);conv2作為第二個(gè)卷積層,它的conv2卷積核大小是(4,4,5,5,),其中的4是指有4個(gè)(4,5,5)卷積,利用非全零填充的方法進(jìn)行填充,步長(zhǎng)取1,Relu作為其激活函數(shù),根據(jù)(式1)和(式2)可得,經(jīng)過卷積后的輸出是(4,8,8);接著進(jìn)入到第二個(gè)池化層pooling2,采用Max Pooling的方式且池化值為(2,2),最終的輸出為(4,4,4);經(jīng)過2層全連接層FC1和FC2,F(xiàn)C1的大小是(12,64),激活函數(shù)是Relu,F(xiàn)C2的大小是(10,12),激活函數(shù)是Softmax。

通過該模型的訓(xùn)練之后,可以得到如圖2所示的系統(tǒng)損失函數(shù)的變化曲線,隨著迭代次數(shù)的疊加,損失函數(shù)將會(huì)逐漸變小,在開始的四千次迭代中損失函數(shù)的變化是迅速變小,而之后的四千到八千次時(shí),曲線已經(jīng)變得非常緩慢,直到最后趨于平穩(wěn)。

可以通過曲線圖發(fā)現(xiàn):隨著迭代次數(shù)的增加,損失函數(shù)逐漸減小,最終會(huì)趨向一個(gè)穩(wěn)定值;而準(zhǔn)確率的曲線圖是會(huì)不斷增大,最終也趨向于一個(gè)穩(wěn)定值,準(zhǔn)確率曲線圖此處略[4]??傊@種模型的損失函數(shù)變化曲線和準(zhǔn)確率變化曲線都符合要求,性能良好。下文以該模型為例,介紹硬件加速的實(shí)現(xiàn)。

2 CNN的硬件結(jié)構(gòu)

對(duì)于CNN的后向訓(xùn)練過程,包含全連接層、池化層傳遞過程以及卷積層誤差;同時(shí)也包括了權(quán)值的更新。CNN硬件框架是以后向訓(xùn)練過程的誤差傳遞過程為主,前向預(yù)測(cè)過程的輸出結(jié)果長(zhǎng)度為10,作為結(jié)構(gòu)的輸入,通過和Label(正確標(biāo)簽)相減取得差值之后,便得到了全連接層FullConnected2的誤差項(xiàng),再經(jīng)過全連接層隱層的誤差傳遞,會(huì)得到全連接層FullConnected1的誤差項(xiàng),最終得到有效長(zhǎng)度是8的4路卷積層,最后經(jīng)過池化層的誤差項(xiàng)傳遞和卷積層誤差項(xiàng)傳遞,就會(huì)得到有效長(zhǎng)度為24的4路卷積層[5]。參數(shù)更新模塊被進(jìn)入的誤差項(xiàng)進(jìn)行更新之后,權(quán)值和偏置項(xiàng)也會(huì)被更新。下面介紹利用FPGA實(shí)現(xiàn)全連接層后向過程的仿真驗(yàn)證。

3 FPGA實(shí)現(xiàn)全連接層后向過程仿真驗(yàn)證

3.1 Matlab定點(diǎn)仿真

(1)根據(jù)卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的算法理論,對(duì)上述Lenet卷積神經(jīng)網(wǎng)絡(luò)的后向訓(xùn)練過程進(jìn)行Matlab的定點(diǎn)仿真。在Matlab中進(jìn)行仿真,首先將數(shù)據(jù)集中的“mnist.train.images.txt”文件輸入,把“mnist.train.labels.txt”當(dāng)做正確標(biāo)志。均值設(shè)為0.1,初始化權(quán)值使用0,初始化方式采用標(biāo)準(zhǔn)差。

(2)向訓(xùn)練過程的定點(diǎn)方式采用1位符號(hào)位、5位整數(shù)位、12位小數(shù)位,即FI(1,18,12),采用這種方式后的輸出數(shù)據(jù)是卷積層為1的偏置b_conv1和權(quán)值w_conv1,卷積層為2的偏置b_conv2和權(quán)值w_conv2,全連接層為1的偏置b_full_connected1和權(quán)值w_full_connected1,全連接層為2的偏置b_full_connected2和權(quán)值w_full_connected2[6]。如圖3所示,訓(xùn)練的迭代次數(shù)是橫坐標(biāo),數(shù)據(jù)的最大相對(duì)誤差值是縱坐標(biāo),經(jīng)過分析訓(xùn)練過程中的相對(duì)誤差絕對(duì)值,可以得到相對(duì)誤差的最大值是10∧-2,顯然這個(gè)誤差結(jié)果是在期望值中的。

3.2 FPGA實(shí)現(xiàn)和結(jié)果驗(yàn)證

Lenet卷積神經(jīng)網(wǎng)絡(luò)中全連接層隱層的誤差傳遞過程的Modelsim仿真結(jié)果如圖4所示,模塊是以10個(gè)連續(xù)誤差數(shù)據(jù)作為輸入,輸出是12路并行誤差數(shù)據(jù),該數(shù)據(jù)是由有效控制模塊和12個(gè)乘累加器得到的,利用Matlab仿真的結(jié)果與這個(gè)結(jié)果一樣,意味著模塊正確。

其中,全連接層隱層誤差傳遞模塊的端口信號(hào)定義如表1所示。

表1 模塊的端口信號(hào)說明-誤差傳遞Tab.1 Module's port signal description - error propagation

Lenet卷積神經(jīng)網(wǎng)絡(luò)中全連接層隱層的權(quán)值更新過程由第三方仿真工具M(jìn)odelsim得出的時(shí)序結(jié)果如圖5所示,該模塊的輸入是單個(gè)的誤差數(shù)據(jù),輸出是64位的1路數(shù)據(jù),即64個(gè)權(quán)值。一個(gè)誤差更新64個(gè)權(quán)值,因此12個(gè)誤差更新了所有的768個(gè)權(quán)值[7]。Matlab仿真結(jié)果和FPGA經(jīng)過第三方仿真工具M(jìn)odelsim的結(jié)果一樣,意味著模塊功能正確。

其中,全連接層隱層權(quán)值更新過程的端口信號(hào)定義如表2所示。

表2 端口信號(hào)說明-權(quán)值更新Tab.2 Port signal description - weight update

實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)后向訓(xùn)練過程之后,經(jīng)過Modelsim仿真的波形圖如圖6所示。由時(shí)序圖可得,在FPGA中只要實(shí)現(xiàn)了一次后向訓(xùn)練,就需要821個(gè)時(shí)鐘信號(hào),由于最大CLK頻率設(shè)定為200MHz,即5NS[8]。

通過分析后向訓(xùn)練在FPGA、GPU、CPU的性能,如表3所示。FPGA實(shí)現(xiàn)的后向訓(xùn)練過程對(duì)比CPU來說,處理速度提高了1.8倍,由于該結(jié)果受到訓(xùn)練過程中一系列外在因素的影響,例如權(quán)重相對(duì)正向過程需要轉(zhuǎn)置,就會(huì)浪費(fèi)一定的處理時(shí)間[9]。雖然FPGA相對(duì)于GPU,處理速度稍有差距。但是FPGA功耗比GPU和CPU要小很多。

表3 后向訓(xùn)練過程FPGA、GPU、CPU性能對(duì)比Tab.3 Backward training process FPGA, GPU, CPU performance comparison

4 結(jié)語(yǔ)

目前深度學(xué)習(xí)的流行,其實(shí)仍然是得益于大數(shù)據(jù)和計(jì)算性能的提升。但是卻也遭受著計(jì)算能力和數(shù)據(jù)量限制的瓶頸。針對(duì)數(shù)據(jù)量的需求,還能夠利用調(diào)整或者變更模型來緩解,但面對(duì)計(jì)算力的挑戰(zhàn),卻沒有捷徑。FPGA解決了傳統(tǒng)PLD資源有限的劣勢(shì),又克服了全定制的電路較死板的缺點(diǎn)[10]。隨著FPGA器件和云端部署等技術(shù)的發(fā)展,內(nèi)存帶寬已經(jīng)逐漸不再是DNN的算力瓶頸,取而代之的是單周期可以完成的乘加操作數(shù)量,這些都使得FPGA在未來的AI領(lǐng)域中,能夠發(fā)揮它最大的優(yōu)勢(shì),推動(dòng)科技的進(jìn)步。

猜你喜歡
權(quán)值卷積神經(jīng)網(wǎng)絡(luò)
一種融合時(shí)間權(quán)值和用戶行為序列的電影推薦模型
基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
CONTENTS
神經(jīng)網(wǎng)絡(luò)抑制無線通信干擾探究
從濾波器理解卷積
基于傅里葉域卷積表示的目標(biāo)跟蹤算法
基于權(quán)值動(dòng)量的RBM加速學(xué)習(xí)算法研究
基于神經(jīng)網(wǎng)絡(luò)的拉矯機(jī)控制模型建立
復(fù)數(shù)神經(jīng)網(wǎng)絡(luò)在基于WiFi的室內(nèi)LBS應(yīng)用
基于支持向量機(jī)回歸和RBF神經(jīng)網(wǎng)絡(luò)的PID整定
梁山县| 南漳县| 鄂温| 和平区| 古浪县| 荃湾区| 文昌市| 公安县| 丰镇市| 深圳市| 临漳县| 睢宁县| 岳阳市| 福贡县| 得荣县| 同仁县| 探索| 阜城县| 九江市| 上饶县| 连江县| 玉山县| 芜湖县| 乐清市| 东辽县| 山西省| 湖口县| 永修县| 车险| 彭山县| 日照市| 蒲城县| 讷河市| 望谟县| 沅江市| 海盐县| 贵南县| 海宁市| 尤溪县| 南平市| 柳河县|