亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器的制作方法

文檔序號:11952259閱讀:246來源:國知局
用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器的制作方法與工藝

本發(fā)明涉及卷積神經(jīng)網(wǎng)絡(luò)計算領(lǐng)域,特別涉及一種用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器。



背景技術(shù):

卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,以下簡稱CNN)近年來成為圖像識別領(lǐng)域的研究熱點。經(jīng)過訓(xùn)練后的CNN模型,可以用于圖像分類、物體識別與顯著性檢測等諸多領(lǐng)域。

CNN主要由三部分組成:卷積層、降采樣層以及全連接層。通過改變不同層的數(shù)目、相互間的級聯(lián)方式以及層內(nèi)的配置,可以獲得不同的網(wǎng)絡(luò)結(jié)構(gòu)。

現(xiàn)有的大部分CNN的實現(xiàn)主要是基于通用處理器CPU實現(xiàn)的。在CNN網(wǎng)絡(luò)結(jié)構(gòu)中,層內(nèi)計算是獨立不相關(guān)的,而層間結(jié)構(gòu)可以理解為是一個流水線結(jié)構(gòu)。通用處理器CPU由于其自身特點無法充分地挖掘CNN內(nèi)部的并行性,在進行CNN計算時,會增加CNN的計算規(guī)模,提升CNN計算的復(fù)雜度。

由此,需要一種能夠?qū)矸e神經(jīng)網(wǎng)絡(luò)計算過程進行優(yōu)化的處理器。



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

本發(fā)明主要解決的技術(shù)問題是提供一種用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器,其可以實現(xiàn)CNN的層內(nèi)計算并行化,從而能夠?qū)崿F(xiàn)對卷積神經(jīng)網(wǎng)絡(luò)計算過程的優(yōu)化。

根據(jù)本發(fā)明的一個方面,提供了一種用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器,其基于N個輸入通道的輸入數(shù)據(jù)分別計算M個輸出通道的輸出數(shù)據(jù),其中N和M是大于或等于2的自然數(shù),該處理器包括:m個計算單元,每個計算單元用于針對其所對應(yīng)的對應(yīng)輸出通道,基于N個輸入通道的輸入數(shù)據(jù)和分別分配給對應(yīng)輸出通道的權(quán)重組,計算對應(yīng)輸出通道的輸出數(shù)據(jù),其中m是大于或等于2的自然數(shù),其中,m個計算單元同步地接收N個輸入通道的輸入數(shù)據(jù),并且同步地進行計算。

優(yōu)選地,每個計算單元可以包括:n個卷積計算模塊,分別同步接收其所對應(yīng)的輸入通道的輸入數(shù)據(jù),并對其進行卷積計算,其中n是大于或等于2的自然數(shù)。

優(yōu)選地,n和m的值可以是根據(jù)計算單元的計算資源和外部存儲的輸入輸出帶寬設(shè)定的,以使得數(shù)據(jù)輸入速度基本上等于數(shù)據(jù)被使用的速度,數(shù)據(jù)輸出速度基本上等于數(shù)據(jù)產(chǎn)生速度。

優(yōu)選地,每個卷積計算模塊可以包括:輸入端,用于接收其所對應(yīng)的輸入通道的輸入數(shù)據(jù);輸入緩存,用于緩存輸入數(shù)據(jù);卷積器,用于使用針對該計算單元所對應(yīng)的對應(yīng)輸出通道和該卷積計算模塊所對應(yīng)的輸入通道的權(quán)重矩陣,對輸入數(shù)據(jù)進行循環(huán)卷積計算,其中,在卷積器的一個計算周期內(nèi),卷積器從輸入緩存中讀取對應(yīng)于權(quán)重矩陣的元素數(shù)的一批輸入數(shù)據(jù),并進行卷積計算,輸出計算結(jié)果。

優(yōu)選地,每個計算單元還可以包括:輸出端,用于輸出計算單元的最終計算結(jié)果;加法模塊,設(shè)置在n個卷積計算模塊和輸出端之間,用于將n個卷積計算模塊針對N個輸入通道的輸入數(shù)據(jù)進行卷積計算的相應(yīng)計算結(jié)果相加。

優(yōu)選地,加法模塊可以包括:加法樹,用于將n個卷積計算模塊同步計算得到的相應(yīng)計算結(jié)果相加。

優(yōu)選地,加法模塊還可以包括:中間結(jié)果緩存,設(shè)置在加法樹和輸出端之間,用于在n個卷積計算模塊完成對N個輸入通道的所有卷積計算以前,緩存中間計算結(jié)果。

優(yōu)選地,在N>n的情況下,N個輸入通道可以被分為多組輸入通道,每組最多n個輸入通道,將多組輸入通道分批次輸入到每個計算單元,n個卷積計算模塊在完成針對一組輸入通道的計算之后,開始輸入下一組輸入通道的輸入數(shù)據(jù),加法模塊還可以包括:第一加法單元,用于將加法樹的輸出結(jié)果與中間計算結(jié)果緩存中針對先前一組或多組輸入通道進行計算得到的相應(yīng)中間計算結(jié)果相加,并且在完成針對所有輸入通道的輸入數(shù)據(jù)的計算以前,將相加的結(jié)果保存在中間結(jié)果緩存中,而在完成對所有輸入通道的輸入數(shù)據(jù)的計算之后,輸出相加的結(jié)果。

優(yōu)選地,該處理器還可以包括:第二加法單元,用于將加法模塊的輸出結(jié)果與偏置值相加,偏置值是針對該計算單元所對應(yīng)的對應(yīng)輸出通道設(shè)置的。

優(yōu)選地,該處理器還可以包括:第一移位器,用于對預(yù)設(shè)偏置值進行移位以得到偏置值,以使偏置值的小數(shù)點與加法模塊的輸出結(jié)果的小數(shù)點位置對齊,其中,第二加法單元將加法模塊的輸出結(jié)果與移位得到的偏置值相加。

優(yōu)選地,該處理器還可以包括:多路選擇單元,用于從其多個輸入端口的輸入中選擇一個輸出,其中,第二加法單元的輸出連接到多路選擇單元的一個輸入端口。

優(yōu)選地,該處理器還可以包括:非線性單元,用于對第二加法單元的輸出結(jié)果進行非線性運算,并且非線性單元的輸出連接到多路選擇單元的一個輸入端口。

優(yōu)選地,該處理器還可以包括:池化單元,用于對非線性單元的輸出結(jié)果進行池化操作,并且池化單元的輸出連接到多路選擇單元的一個輸入端口。

優(yōu)選地,該處理器還可以包括:第二移位器,設(shè)置在多路選擇單元和輸出端之間,用于對多路選擇單元的輸出結(jié)果進行移位,以便對多路選擇單元的輸出結(jié)果進行適當(dāng)?shù)慕財啵瑥亩_保輸出端的輸出結(jié)果的位寬和輸入通道的輸入數(shù)據(jù)一致。

綜上,本發(fā)明的處理器包括多個可以并行計算的計算單元,不同的計算單元可以獨立且同步地負責(zé)計算不同的輸出通道的輸出數(shù)據(jù)。由此,本發(fā)明的處理器在用于卷積神經(jīng)網(wǎng)絡(luò)計算時,可以實現(xiàn)并行化計算,從而可以大大縮短完成整個卷積神經(jīng)網(wǎng)絡(luò)計算所需的時間。

附圖說明

通過結(jié)合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標號通常代表相同部件。

圖1示出了根據(jù)本發(fā)明一實施例的用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器的結(jié)構(gòu)的示意性方框圖。

圖2示出了根據(jù)本發(fā)明一實施例的計算單元的結(jié)構(gòu)的示意性方框圖。

圖3示出了根據(jù)本發(fā)明一實施例的卷積計算模塊可以具有的具體結(jié)構(gòu)的示意性方框圖。

圖4示出了根據(jù)本發(fā)明另一實施例的計算單元的結(jié)構(gòu)的示意性方框圖。

圖5示出了根據(jù)本發(fā)明另一實施例的計算單元的結(jié)構(gòu)的示意性方框圖。

具體實施方式

下面將參照附圖更詳細地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達給本領(lǐng)域的技術(shù)人員。

如前所述,基于CNN網(wǎng)絡(luò)結(jié)構(gòu)的層內(nèi)計算獨立不相關(guān)的特點,本發(fā)明提出了一種能夠?qū)崿F(xiàn)CNN的并行化計算的處理器。

圖1示出了根據(jù)本發(fā)明一實施例的用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器的結(jié)構(gòu)的示意性方框圖。

在卷積神經(jīng)網(wǎng)絡(luò)的一層計算中,往往需要對多個輸入通道的輸入數(shù)據(jù)進行計算,得到多個輸出通道的輸出數(shù)據(jù),作為下一層計算的輸入數(shù)據(jù)或作為計算結(jié)果。

本發(fā)明的發(fā)明人注意到,在針對一個輸出通道的計算過程中,需要用到多個(一般是全部)輸入通道的輸入數(shù)據(jù)。但是針對任何一個輸出通道的計算過程與針對其它任何輸出通道的計算過程是不相關(guān)的。因此,本發(fā)明提出,采用多個硬件來分別同步執(zhí)行針對多個輸出通道的計算,從而實現(xiàn)針對多個輸出通道的并行化計算,提高計算效率。

本發(fā)明的處理器可以基于N個輸入通道的輸入數(shù)據(jù)分別計算M個輸出通道的輸出數(shù)據(jù),其中N和M是大于或等于2的自然數(shù)。這里,在圖像處理的場景下,對于第一層計算而言,輸入通道可以是例如RGB的三幀像素值,此時輸入通道可以是3個。輸出通道的數(shù)量可以根據(jù)要計算的卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)得到,其中,每個輸出通道可以對應(yīng)于一個權(quán)重組,每個權(quán)重組可以包括N個權(quán)重,例如這里的權(quán)重可以用Wij表示,其中,i為輸入通道的編號,i=1、2、3……N,j為輸出通道的編號,j=1、2、3……M。權(quán)重Wij可以是預(yù)先設(shè)定的。

參見圖1,本發(fā)明實施例的處理器1包括m個計算單元2,其中,m是大于或等于2的自然數(shù)。

在一個循環(huán)周期內(nèi),一個計算單元2獨立地針對一個輸出通道進行計算。

每個計算單元2針對其所對應(yīng)的對應(yīng)輸出通道,基于N個輸入通道的輸入數(shù)據(jù)和分別分配給該計算單元2所對應(yīng)的對應(yīng)輸出通道的權(quán)重組,計算對應(yīng)輸出通道的輸出數(shù)據(jù),m個計算單元2可以同步地接收N個輸入通道的輸入數(shù)據(jù),并且同步地進行計算。

其中,處理器1所包含的計算單元的個數(shù)m可以小于或等于輸出通道的個數(shù)M。此時,可以同時針對全部輸出通道進行并行計算。

而在m<M的情況下,可以分批進行同步計算。即,在m個計算單元完成對應(yīng)的對應(yīng)輸出通道的計算后,可以接下來為下一批尚未進行計算的輸出通道進行計算。

也就是說,在處理器1所包含的計算單元2的個數(shù)小于輸出通道的個數(shù)時,每個計算單元2可以具有多個對應(yīng)的對應(yīng)輸出通道,在每個計算單元2計算完一個對應(yīng)輸出通道的輸出數(shù)據(jù)后,就可以繼續(xù)計算其所對應(yīng)的其它對應(yīng)輸出通道的輸出數(shù)據(jù)。

不同的計算單元2可以共享相同的輸入通道的輸入數(shù)據(jù),以計算不同的輸入通道的輸出數(shù)據(jù),這樣,可以減少讀取數(shù)據(jù)的次數(shù)。

綜上,本發(fā)明的處理器1包括多個可以并行計算的計算單元2,不同的計算單元2可以獨立且同步地負責(zé)計算不同的輸出通道的輸出數(shù)據(jù)。由此,本發(fā)明的處理器1在用于卷積神經(jīng)網(wǎng)絡(luò)計算時,可以實現(xiàn)并行化計算,從而可以大大縮短完成整個卷積神經(jīng)網(wǎng)絡(luò)計算所需的時間。

其中,處理器1所包含的計算單元2的個數(shù)m可以根據(jù)計算單元2的計算資源和外部存儲的輸入輸出帶寬設(shè)定,以使得數(shù)據(jù)輸入速度基本上等于數(shù)據(jù)被使用的速度,數(shù)據(jù)輸出速度基本上等于數(shù)據(jù)產(chǎn)生速度。由此,可以在不浪費計算資源的情況下,外部存儲的輸入輸出帶寬的利用效率最大化。

至此,結(jié)合圖1就本發(fā)明的處理器的基本構(gòu)成做了詳細說明。下面就本發(fā)明的處理器中的每個計算單元2可以具有的具體結(jié)構(gòu)做進一步說明。

圖2示出了根據(jù)本發(fā)明一實施例的計算單元2的結(jié)構(gòu)的示意性方框圖。

對于卷積神經(jīng)網(wǎng)絡(luò)計算的每一層計算而言,卷積計算的計算量往往是非常繁重的。

本發(fā)明的發(fā)明人注意到,在針對一個輸出通道的計算中,可以針對不同輸入通道的輸入數(shù)據(jù)分別進行卷積計算。因此,本發(fā)明提出,在針對一個輸出通道進行計算的一個計算單元中,設(shè)置多個卷積計算模塊,分別對多個輸入通道的數(shù)據(jù)進行卷積計算,從而實現(xiàn)針對多個輸入通道的并行化計算,進一步提高計算效率。

參見圖2,計算單元2可以包括n個卷積計算模塊21。每個卷積計算模塊21可以同步接收其所對應(yīng)的輸入通道的輸入數(shù)據(jù),并可以對接收到的輸入數(shù)據(jù)進行卷積計算,其中n是大于或等于2的自然數(shù)。

由此,不同輸入通道的輸入數(shù)據(jù)可以交由計算單元2中相應(yīng)的卷積計算模塊21分別同步進行卷積計算。

其中,不同的計算單元2所包含的卷積計算模塊21的個數(shù)可以相同,也可以不同。作為優(yōu)選方案,不同的計算單元2可以包含相同個數(shù)量的卷積計算模塊21,這樣,每個計算單元2的計算能力基本相同,可以更好地實現(xiàn)不同的計算單元2之間的同步計算。

另外,每個計算單元2所包含的卷積計算模塊21的個數(shù)可以小于或等于輸入通道的個數(shù)。在每個計算單元2所包含卷積計算模塊21的個數(shù)小于輸出通道的個數(shù)時,每個卷積計算模塊21可以具有多個對應(yīng)的輸入通道,即每個卷積計算模塊21可以分別先后接收多個輸入通道的輸入數(shù)據(jù),并對其先后進行卷積計算。

具體來說,在每個卷積計算模塊21計算完一個其對應(yīng)的輸入通道的輸入數(shù)據(jù)的卷積后,就可以繼續(xù)計算其所對應(yīng)的其它輸入通道的輸入數(shù)據(jù)的卷積。

另外,每個計算單元2所包含的卷積計算模塊21的個數(shù)n,可以根據(jù)計算單元2的計算資源和外部存儲的輸入輸出帶寬設(shè)定,以使得數(shù)據(jù)輸入速度基本上等于數(shù)據(jù)被使用的速度,數(shù)據(jù)輸出速度基本上等于數(shù)據(jù)產(chǎn)生速度。由此,可以在不浪費計算資源的情況下,外部存儲的輸入輸出帶寬的利用效率最大化。

這里,可以根據(jù)計算單元2的計算資源和外部存儲的輸入輸出帶寬,綜合設(shè)定計算單元2的個數(shù)m以及每個計算單元2可以具有的卷積計算模塊21的個數(shù)n。

作為示例,這里給出一種確定計算單元輸入輸出通道個數(shù)的方法。

以現(xiàn)場可編程門陣列(FPGA)平臺為例,通常而言,乘法單元由片上的數(shù)字信號處理(DSP)模塊搭建,因此DSP模塊的數(shù)量約束了乘法單元的數(shù)量。以最大吞吐率為要求的話則乘法器的數(shù)量應(yīng)至少等于DSP模塊的數(shù)量。因此,

輸入通道個數(shù)×輸出通道個數(shù)×卷積核大?。紽PGA平臺的DSP模塊數(shù)量。

實際上,由于FPGA本身的資源也可以構(gòu)建乘法器,因此乘法器的數(shù)量可以略微大于DSP模塊的數(shù)量。

選定了總的并行度之后,需要確定輸入通道個數(shù)和輸出通道個數(shù)。為了保證計算單元最高效地被利用,需要使數(shù)據(jù)輸入的速度和數(shù)據(jù)被使用的速度盡可能相同。

假設(shè)每一個輸入通道對應(yīng)的(在計算單元外的)緩存大小相同為B,則一組數(shù)據(jù)的輸入時間約為:

B×輸入通道個數(shù)/輸入帶寬。

卷積核因為數(shù)據(jù)較少(對應(yīng)于權(quán)重矩陣)可以基本忽略。

數(shù)據(jù)計算的時間為:

B×數(shù)據(jù)復(fù)用的次數(shù)。

由于中間結(jié)果緩存的存在,因此有可能用一組輸入數(shù)據(jù)計算多組中間結(jié)果同時緩存。

在已知上述公式中的其他參數(shù)的情況下,可以根據(jù)輸入時間基本上等于輸出時間的原則來確定輸入通道的個數(shù),進而確定輸出通道的個數(shù)。

圖3示出了根據(jù)本發(fā)明一實施例的卷積計算模塊21可以具有的具體結(jié)構(gòu)的示意性方框圖。

參見圖3,卷積計算模塊21可以包括輸入端211、輸入緩存212以及卷積器213。

其中,輸入端211可以接收其所對應(yīng)的輸入通道的輸入數(shù)據(jù)。

由于卷積計算中,需要對一些輸入數(shù)據(jù)重復(fù)利用。例如,在輸入數(shù)據(jù)為圖像數(shù)據(jù)的情況下,在針對對應(yīng)于權(quán)重矩陣的多個像素(可以稱為一個“計算窗口”)的數(shù)據(jù)完成一次卷積計算之后,將計算窗口平移一個像素,進行下一次卷積計算。這種情況下,每個像素數(shù)據(jù)需要被重復(fù)利用多次。

輸入緩存212可以緩存輸入端211所接收的輸入數(shù)據(jù),以便于卷積器213多次使用。

如上文所述,一個卷積計算模塊21可以用來先后計算多個輸入通道的輸入數(shù)據(jù)的卷積。因此,輸入端211也可以先后接收多個輸入通道的輸入數(shù)據(jù),相應(yīng)地,輸入緩存212也可以同時或先后緩存多個輸入通道的輸入數(shù)據(jù)。

圖3示出了為每一個卷積計算模塊21分別設(shè)置一個輸入緩存212,以緩存該卷積計算模塊21要進行計算處理的輸入通道的輸入數(shù)據(jù)的情況。應(yīng)當(dāng)明白,也可以在計算單元2中統(tǒng)一設(shè)置輸入緩存,其中緩存所有輸入通道的輸入數(shù)據(jù)。所有卷積計算模塊21都從該統(tǒng)一設(shè)置的輸入緩存中讀取各自所針對的輸入通道的輸入數(shù)據(jù)。

另外,輸入緩存212的容量可以被設(shè)置為緩存一個輸入通道的所有輸入數(shù)據(jù)。另一方面,輸入緩存212的容量也可以被設(shè)置為緩存一個輸入通道的部分輸入數(shù)據(jù)。當(dāng)在后續(xù)的卷積計算中不再需要使用一個數(shù)據(jù)時,可以不再保留該數(shù)據(jù)。

卷積器213可以使用針對該計算單元(包含該卷積器213的卷積計算模塊21所對應(yīng)的計算單元2)所對應(yīng)的對應(yīng)輸出通道和該卷積計算模塊(包含該卷積器213的卷積計算模塊21)所對應(yīng)的輸入通道的權(quán)重矩陣,對輸入數(shù)據(jù)進行循環(huán)卷積計算。

這里,卷積器213可以首先完成一個輸入通道的輸入數(shù)據(jù)的循環(huán)卷積計算,然后進行下一個輸入通道的輸入數(shù)據(jù)的循環(huán)卷積計算。

具體地說,在卷積器213的一個計算周期內(nèi),卷積器213可以從輸入緩存212中讀取對應(yīng)于權(quán)重矩陣的元素數(shù)的一批輸入數(shù)據(jù),并進行卷積計算,輸出計算結(jié)果。

這里述及的計算周期是卷積器213計算對應(yīng)于權(quán)重矩陣的元素數(shù)的輸入數(shù)據(jù)的卷積所需的時間。因此,卷積器213計算完成一個輸入通道的所有輸入數(shù)據(jù)的卷積需要多個計算周期。在一個計算周期結(jié)束后,卷積器213可以從輸入緩存中讀取對應(yīng)于權(quán)重矩陣的元素數(shù)的下一批輸入數(shù)據(jù),并進行卷積計算,輸出計算結(jié)果,直到把輸入緩存212中的所有輸入數(shù)據(jù)的卷積都計算完為止。

其中,在計算輸入數(shù)據(jù)卷積的過程中,可能存在一個或多個批次的輸入數(shù)據(jù)的個數(shù)與權(quán)重矩陣的元素數(shù)不對等(例如當(dāng)涉及圖像數(shù)據(jù)的邊緣行或列時),此時可以添加相應(yīng)個數(shù)(整行或陣列)的“0”或“1”,以使得計算可以正常進行。

圖4示出了根據(jù)本發(fā)明另一實施例的計算單元2的結(jié)構(gòu)的示意性方框圖。

參見圖4,本發(fā)明實施例的計算單元2可以包括n個卷積計算模塊21、加法模塊22以及輸出模塊23。

其中,關(guān)于卷積計算模塊21可參見上文結(jié)合圖2、圖3的相關(guān)描述,這里不再贅述。

輸出端23可以輸出計算單元2的最終計算結(jié)果。加法模塊22設(shè)置在n個卷積計算模塊21和輸出端23之間,可以將n個卷積計算模塊21針對N個輸入通道的輸入數(shù)據(jù)進行卷積計算的相應(yīng)計算結(jié)果相加。

由此,將針對各個輸入通道獨立計算得到的數(shù)據(jù)整合起來。

參見圖4,加法模塊22可以可選地包括圖中虛線框所示的加法樹221,加法樹221可以將n個卷積計算模塊21同步計算得到的相應(yīng)計算結(jié)果相加。

由于卷積計算模塊是同步進行計算的,針對不同輸入通道的相應(yīng)位置處(例如圖像上相同橫縱坐標處)的數(shù)據(jù)的卷積計算基本上是同步完成的。這樣,每當(dāng)卷積計算模塊完成一次卷積計算(使用一次權(quán)重矩陣進行計算為一次卷積計算,例如,權(quán)重矩陣為3×3矩陣的情況下,卷積核的一次卷積計算需要9次乘法計算和8次加法計算),就可以將數(shù)據(jù)輸入到加法樹221。由此,可以對不同輸入通道的相應(yīng)卷積結(jié)果進行加和計算。

另外,參見圖4,加法模塊22還可以可選地包括圖中虛線框所示的中間結(jié)果緩存222。中間結(jié)果緩存222設(shè)置在加法樹221和輸出端23之間,用于在n個卷積計算模塊21完成對N個輸入通道的所有卷積計算以前,緩存中間計算結(jié)果。中間結(jié)果緩存222可以對加法樹221的每次加和結(jié)果進行緩存,直到完成針對這一批輸入通道的輸入數(shù)據(jù)的卷積及加和計算。

另外,在n<N時,換言之,可以同時對所有輸入通道的輸入數(shù)據(jù)進行卷積計算的情況下,可以不設(shè)置或不使用中間結(jié)果緩存222,而將加法樹221的每次計算結(jié)果直接提供給后續(xù)計算部分。當(dāng)然,也可以提供緩存,完成所有卷積計算之后再進行后續(xù)計算。

在N>n的情況下,N個輸入通道可以被分為多組輸入通道,每組可以包括最多n個輸入通道,可以將多組輸入通道分批次輸入到每個計算單元2。n個卷積計算模塊21在完成針對一組輸入通道的計算之后,開始輸入下一組輸入通道的輸入數(shù)據(jù)。

如圖4所示,加法模塊22還可以包括第一加法單元223。

第一加法單元223可以將加法樹221的輸出結(jié)果與中間計算結(jié)果緩存中針對先前一組或多組輸入通道進行計算得到的相應(yīng)中間計算結(jié)果相加,并且在完成針對所有輸入通道的輸入數(shù)據(jù)的計算以前,將相加的結(jié)果保存在中間結(jié)果緩存222中,而在完成對所有輸入通道的輸入數(shù)據(jù)的計算之后,輸出相加的結(jié)果。

通過設(shè)置中間結(jié)果緩存222和第一加法單元223,在輸入通道數(shù)N大于計算單元2一次可并行操作的輸入通道數(shù)量m(卷積計算模塊21的數(shù)量)的情況下,可以將分批計算得到的數(shù)據(jù)整合起來。另外,還可以將需要較大存儲空間的中間計算結(jié)果通過累加的形式完成,減少了對所占用的存儲空間,因此不必存入外部存儲。

圖5示出了根據(jù)本發(fā)明另一實施例的計算單元2的結(jié)構(gòu)的示意性方框圖。

參見圖5,本發(fā)明實施例的計算單元2可以包括n個卷積計算模塊21、加法模塊22以及第二加法單元24。

其中,關(guān)于卷積計算模塊21和加法模塊22,可以參見上文相關(guān)描述,這里不再贅述。

第二加法單元24可以將加法模塊22的輸出結(jié)果與偏置值相加,其中,偏置值是針對該計算單元所對應(yīng)的對應(yīng)輸出通道設(shè)置的。

參見圖5,本發(fā)明實施例的計算單元2還可以可選地包括第一移位器25。第一移位器25可以對預(yù)設(shè)偏置值進行移位以得到偏置值,得到的偏置值的小數(shù)點與加法模塊22的輸出結(jié)果的小數(shù)點位置對齊。這是由于采用char格式表示數(shù)值,而不是采用浮點格式表示數(shù)值,所以需要指定小數(shù)點在某兩位之間,因此需要通過移位來將小數(shù)點位置對齊。

其中,第二加法單元24可以將加法模塊22的輸出結(jié)果與移位得到的偏置值相加。

參見圖5,本發(fā)明實施例的計算單元2還可以可選地包括多路選擇單元26。多路選擇單元26用于從其多個輸入端口的輸入中選擇一個輸出,其中,如圖5所示,第二加法單元24的輸出可以直接連接到多路選擇單元26的一個輸入端口。

參見圖5,本發(fā)明實施例的計算單元2還可以可選地包括非線性單元27。非線性單元27可以對第二加法單元24的輸出結(jié)果進行非線性運算,并且非線性單元27的輸出可以直接連接到多路選擇單元27的一個輸入端口。

參見圖5,本發(fā)明實施例的計算單元2還可以可選地包括池化(pooling)單元28。池化單元28用于對非線性單元27的輸出結(jié)果進行池化操作,并且池化單元28的輸出也可以連接到多路選擇單元26的一個輸入端口。

參見圖5,本發(fā)明實施例的計算單元2還可以可選地包括第二移位器29。第二移位器29可以設(shè)置在多路選擇單元26和輸出端23之間,用于對多路選擇單元26的輸出結(jié)果進行移位,以便對多路選擇單元26的輸出結(jié)果進行適當(dāng)?shù)慕財?,從而確保輸出端23的輸出結(jié)果的位寬和輸入通道的輸入數(shù)據(jù)一致,以備下一層計算過程中使用。

如上所述,多路選擇單元26的多個輸入端口可以分別與第二加法單元24、非線性單元27以及池化單元28的輸出連接。根據(jù)實際情況,多路選擇單元26可以從多個輸入端口的輸入中選擇一個進行輸出。

綜上,本發(fā)明的用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器同時在輸入通道、輸出通道以及卷積核層面都可以進行并行計算,可以提供較高的并行度,充分利用計算資源。并且通過改變輸入和輸出通道的并行度,可以形成各種規(guī)模的硬件設(shè)計,在電路面積和速度之間權(quán)衡。在給定計算系統(tǒng)和外部存儲的輸入輸出帶寬的情況下,可以選擇合適的輸入以及輸出通道并行度,使得輸入輸出帶寬的利用效率最大化,同時不浪費計算資源。

本發(fā)明的發(fā)明人在一款包含CPU和FPGA的片上系統(tǒng)平臺上搭建了一個神經(jīng)網(wǎng)絡(luò)加速系統(tǒng)AEye,在這個系統(tǒng)上構(gòu)建了一個人臉檢測應(yīng)用,該算法以卷積神經(jīng)網(wǎng)絡(luò)來標定人臉上的特征點。其中,CPU平臺負責(zé)控制人臉檢測算法的主要流程,F(xiàn)PGA部分包括含一個由本發(fā)明作為控制器的卷積神經(jīng)網(wǎng)絡(luò)加速器。該加速器負責(zé)算法中的卷積神經(jīng)網(wǎng)絡(luò)的計算部分。

下表對比了采用本發(fā)明提出的用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器和通用處理器在計算該任務(wù)中的神經(jīng)網(wǎng)絡(luò)的性能。作為對比的CPU使用的是英偉達公司生產(chǎn)的Terga K1處理平臺的CPU。

可以看到,對比Terga K1平臺的CPU計算性能,本發(fā)明可以帶來明顯的速度提升。

本發(fā)明的發(fā)明人在另一款包含CPU和FPGA的片上系統(tǒng)平臺上同樣搭建了一個用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器,本實施例的處理器采用了和前一實施例不同的設(shè)計參數(shù)。本實施例的處理器僅進行神經(jīng)網(wǎng)絡(luò)加速計算,因此可以較為準確地估計實際運行中加速器和外部存儲之間的輸入輸出帶寬。該處理器的外部存儲為帶寬4.2GB/s的DDR3存儲器。根據(jù)FPGA平臺上的緩存資源以及計算資源,本實施例的處理器采用了2個計算單元,每個計算單元使用64個卷積計算模塊進行計算,可以在帶寬約束條件下最大化計算速度。

上文中已經(jīng)參考附圖詳細描述了根據(jù)本發(fā)明的用于卷積神經(jīng)網(wǎng)絡(luò)計算的處理器。

以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的改進,或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實施例。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1