本發(fā)明涉及卷積神經(jīng)網(wǎng)絡(luò),具體涉及卷積神經(jīng)網(wǎng)絡(luò)的卷積層中的加速處理單元及陣列結(jié)構(gòu)。
背景技術(shù):
深度學(xué)習(xí)(dee加速處理單元Plea2ning)相對于淺層學(xué)習(xí),是指機(jī)器通過算法,從歷史數(shù)據(jù)中學(xué)習(xí)規(guī)律,并對事物作出智能識別和預(yù)測。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neu2al Netwo2k,CNN)屬于dee加速處理單元Plea2ning netwo2k的一種,其發(fā)明于1980年代初,由多層排列的人工神經(jīng)元組成,卷積神經(jīng)網(wǎng)絡(luò)反映出了人類大腦處理視覺的方法。隨著摩爾定律推動著計算機(jī)技術(shù)越來越強大,卷積神經(jīng)網(wǎng)絡(luò)能夠更好的模仿生物神經(jīng)網(wǎng)絡(luò)的實際運作方式,避免了對圖像的復(fù)雜前期預(yù)處理,可以直接輸入原始圖像,因而得到了更為廣泛的應(yīng)用,目前已成功應(yīng)用于手寫字符識別、人臉識別、人眼檢測、行人檢測和機(jī)器人導(dǎo)航中。
卷積神經(jīng)網(wǎng)絡(luò)的基本機(jī)構(gòu)中包括多個卷積層,每層由多個二維平面組成,而每個平面由多個獨立神經(jīng)元組成。每個神經(jīng)元用于對多媒體數(shù)據(jù)的局部數(shù)據(jù)進(jìn)行卷積運算,并且其一輸入端還與前一卷積層的局部感受野相連,通過對前一卷積層的局部感受野的數(shù)據(jù)進(jìn)行卷積運算,以提取該局部感受野的特征。
現(xiàn)有技術(shù)中,通常也采用加速處理單元來作為神經(jīng)元,對多媒體數(shù)據(jù)的局部數(shù)據(jù)進(jìn)行卷積運算?,F(xiàn)有的加速處理單元對輸入的每個多媒體數(shù)據(jù)都設(shè)計有一個加法器和一個乘法器,當(dāng)該加速處理單元需要處理的局部數(shù)據(jù)有多個時,意味著每個加速處理單元包括多個加法器和多個乘法器,這種設(shè)計導(dǎo)致加速處理單元片的面積較大,功耗大,處理速度也有待提高。
技術(shù)實現(xiàn)要素:
本申請?zhí)峁┮环N基于卷積神經(jīng)網(wǎng)絡(luò)的加速處理單元,用于對局部數(shù)據(jù)進(jìn)行卷積運算,所述局部數(shù)據(jù)包括多個多媒體數(shù)據(jù),所述加速處理單元包括第一寄存器、第二寄存器、第三寄存器、第四寄存器、第五寄存器、乘法器、加法器和第一多路選擇器和第二多路選擇器;
第一寄存器用于輸入多媒體數(shù)據(jù),其輸出端與乘法器的輸入端連接,將多媒體數(shù)據(jù)發(fā)送到乘法器;
第二寄存器用于輸入濾波器權(quán)值,其輸出端與乘法器的輸入端連接,將濾波器權(quán)值發(fā)送到乘法器;
乘法器用于將多媒體數(shù)據(jù)和濾波器權(quán)值相乘,其輸出端與第三寄存器連接,將相乘后的結(jié)果發(fā)送到第三寄存器;
第三寄存器的輸出端與第一多路選擇器的第一端連接;
所述第一多路選擇器的第二端連接加法器,第三端為前一加速處理單元的部分和輸入端,所述第一多路選擇器通過狀態(tài)切換將第三寄存器和加法器連接,或?qū)⑶耙患铀偬幚韱卧牟糠趾洼斎攵撕图臃ㄆ鬟B接;
所述加法器還與第五寄存器和第四寄存器連接,用于將第一多路選擇器傳送的相乘后的結(jié)果或前一加速處理單元的部分和與第五寄存器中的數(shù)據(jù)進(jìn)行加法運算,并將相加后的結(jié)果輸出到第四寄存器;
所述第二多路選擇器的第一端和第二端分別連接第四寄存器和第五寄存器,所述第四寄存器通過第二多路選擇器連接到第五寄存器。
優(yōu)選地,所述第一多路選擇器在加速處理單元未完成局部數(shù)據(jù)的乘加操作時保持第一狀態(tài),將第三寄存器連接到加法器,在加速處理單元完成局部數(shù)據(jù)的乘加操作后切換為第二狀態(tài),將前一加速處理單元的部分和輸入端連接到加法器。
優(yōu)選地,所述第二多路選擇器在加速處理單元未完成局部數(shù)據(jù)的乘加操作時保持為第一狀態(tài),將第四寄存器連接到第五寄存器,在加速處理單元完成局部數(shù)據(jù)的乘加操作后切換為第二狀態(tài),以將第五寄存器清零。
優(yōu)選地,所述第二多路選擇器的第三端為重置端,所述第二多路選擇器在加速處理單元完成局部數(shù)據(jù)的乘加操作后切換為第二狀態(tài),將重置端連接到第五寄存器。
優(yōu)選地,還包括第一存儲器、第二存儲器和第三存儲器,所述第一存儲器與第一寄存器的輸入端連接,用于輸入并存儲需要進(jìn)行卷積運算的局部數(shù)據(jù),并將局部數(shù)據(jù)中的多個多媒體數(shù)據(jù)依次發(fā)送給第一寄存器;所述第二存儲器與第二寄存器的輸入端連接,用于輸入并存儲濾波器權(quán)值,并將濾波器權(quán)值發(fā)送給第二寄存器;所述第三存儲器與第四寄存器的輸入端連接,用于輸入并存儲加法器輸出的相加后的結(jié)果,并將相加后的結(jié)果發(fā)送給第四寄存器。
優(yōu)選地,其特征在于,所述加法器還將相加后的結(jié)果輸出到后一加速處理單元。
本申請?zhí)峁┻€一種基于卷積神經(jīng)網(wǎng)絡(luò)的陣列結(jié)構(gòu),包括多個所述加速處理單元,多個加速處理單元呈現(xiàn)為3行N列的矩陣形態(tài),其中3和N為大于或等 于1的整數(shù),每一列的加速處理單元前后相連。
優(yōu)選地,每一列中,前一加速處理單元的加法器的輸出端連接后一加速處理單元的第一多路選擇器的第三端。
優(yōu)選地,同一行的加速處理單元中,輸入的濾波器權(quán)值相同;位于同一對角線上的加速處理單元中,輸入的局部數(shù)據(jù)相同。
優(yōu)選地,不同行的加速處理單元中,輸入的濾波器權(quán)值不同。
本發(fā)明的有益效果是:單個加速處理單元通過對第一多路選擇器和第二多路選擇器的控制,使得乘法器和加法器可重復(fù)使用,從而使得一個加速處理單元只需要一個乘法器和一個加法器即可完成卷積運算,減少了乘法器和加法器的使用,在實現(xiàn)同樣的卷積運算時,減少乘法器和加法器的使用將會提高處理速度并降低能耗,同時單個加速處理單元片上面積更小。
附圖說明
圖1為本發(fā)明實施例提供的一種基于卷積神經(jīng)網(wǎng)絡(luò)的加速處理單元結(jié)構(gòu)框圖;
圖2為本發(fā)明實施例提供的一種基于卷積神經(jīng)網(wǎng)絡(luò)的加速處理單元的卷積運算過程示意圖;
圖3為本發(fā)明實施例一種基于卷積神經(jīng)網(wǎng)絡(luò)的陣列結(jié)構(gòu)列向分布示意圖;
圖4為本發(fā)明實施例一種基于卷積神經(jīng)網(wǎng)絡(luò)的陣列結(jié)構(gòu)行向分布示意圖;
圖5為本發(fā)明實施例一種基于卷積神經(jīng)網(wǎng)絡(luò)的陣列結(jié)構(gòu)對角線分布示意圖。
具體實施方式
下面通過具體實施方式結(jié)合附圖對本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明的一部分實施例,而不是全部的實施例。
實施例一:
請參考圖1,本實施例提供一種基于卷積神經(jīng)網(wǎng)絡(luò)的加速處理單元,加速處理單元61包括第一寄存器21、第二寄存器22、第三寄存器23、第四寄存器24、第五寄存器25、乘法器41、加法器51和第一多路選擇器31和第二多路選擇器32。
第一寄存器21與乘法器41的一輸入端連接,第一寄存器21用于輸入多媒體數(shù)據(jù),并將多媒體數(shù)據(jù)發(fā)送到乘法器41。第二寄存器22與乘法器41的另一輸入端連接,第二寄存器22用于輸入濾波器權(quán)值,并將濾波器權(quán)值發(fā)送到乘法器41。乘法器41的輸出端與第三寄存器23連接,用于將多媒體數(shù)據(jù)和濾波器權(quán)值相乘,并將相乘后的結(jié)果發(fā)送到第三寄存器23。
第一多路選擇器31的第一端與第三寄存器23的輸出端連接,第二端連接加法器51的一輸入端,第三端為前一加速處理單元的部分和輸入端。當(dāng)?shù)谝欢嗦愤x擇器31切換到第一狀態(tài)(例如置0)時,第一多路選擇器31將第三寄存器23和加法器51連接,將第三寄存器23中的數(shù)據(jù)發(fā)送到加法器51;當(dāng)?shù)谝欢嗦愤x擇器31切換到第二狀態(tài)(例如置1)時,第一多路選擇器31將其第三端和加法器51連接,將前一加速處理單元的部分和發(fā)送到加法器51。
加法器51的另一輸入端與第五寄存器25連接,加法器51的輸出端與第四寄存器24連接,加法器51輸入第三寄存器23和第五寄存器25中的數(shù)據(jù),將兩寄存器中的數(shù)據(jù)進(jìn)行加法運算,并將相加后的結(jié)果(也稱為內(nèi)部部分和)輸出到第四寄存器24。
第二多路選擇器32的第一端和第二端分別連接第四寄存器24和第五寄存器25,第二多路選擇器32的第三端為重置端。當(dāng)?shù)诙嗦愤x擇器32切換到第一狀態(tài)(例如置0)時,第二多路選擇器32將第四寄存器24和第五寄存器25連接,將第四寄存器24中的內(nèi)部部分和發(fā)送到第五寄存器25;當(dāng)?shù)诙嗦愤x擇器32切換到第二狀態(tài)(例如置1)時,第二多路選擇器32將其第三端和第五寄存器25連接,重置第五寄存器25,使第五寄存器25中數(shù)據(jù)清零。
在有的實施例中,為方便向寄存器發(fā)送數(shù)據(jù),加速處理單元61還包括第一存11、第二存儲器12和第三存儲器13,第一存儲器11與第一寄存器21的輸入端連接,用于輸入并存儲需要進(jìn)行卷積運算的局部數(shù)據(jù),并將局部數(shù)據(jù)中的多個多媒體數(shù)據(jù)依次發(fā)送給第一寄存器21;第二存儲器12與第二寄存器22的輸入端連接,用于輸入并存儲濾波器權(quán)值,并將濾波器權(quán)值發(fā)送給第二寄存器22;第三存儲器13與第四寄存器24的輸入端連接,用于輸入并存儲加法器51輸出的內(nèi)部部分和,并將內(nèi)部部分和發(fā)送給第四寄存器24。
加速處理單元61用于對局部數(shù)據(jù)進(jìn)行卷積運算,局部數(shù)據(jù)包括多個多媒體數(shù)據(jù),多媒體數(shù)據(jù)可以是視頻數(shù)據(jù),圖像數(shù)據(jù),也可以是音頻數(shù)據(jù)。當(dāng)多媒體數(shù)據(jù)是視頻數(shù)據(jù)時,可以認(rèn)為每個多媒體數(shù)據(jù)對應(yīng)一個像素。
下面以圖像數(shù)據(jù)為例,說明加速處理單元61的卷積運算過程。
結(jié)合圖1和圖2,單個基于卷積神經(jīng)網(wǎng)絡(luò)的加速處理單元61的工作過程如下:
步驟10,讀取需要進(jìn)行卷積運算的視頻數(shù)據(jù)和濾波器權(quán)值。若圖像數(shù)據(jù)不為0,圖像數(shù)據(jù)被存儲于第一存儲器11,在需要的時候被發(fā)送至第一寄存器21用來提取圖像數(shù)據(jù),若圖像數(shù)據(jù)為0,圖像數(shù)據(jù)0直接被發(fā)送至第一寄存器21而無需提取,采取跳過或門控的策略避免非必要的讀取和計算;濾波器權(quán)值被 存儲于第二存儲器12,在需要的時候被發(fā)送至第二寄存器22用來濾波器權(quán)值數(shù)據(jù),其中,數(shù)據(jù)提取方式為依次串行提取,即在第一個循環(huán)中,將由本加速處理單元61進(jìn)行卷積運算的局部數(shù)據(jù)中的第一個圖像數(shù)據(jù)發(fā)送到第一寄存器21;在第二個循環(huán)中,將第二個圖像數(shù)據(jù)發(fā)送到第一寄存器21,后面依次讀入圖像數(shù)據(jù)。濾波器權(quán)值由處理器根據(jù)卷積算法要求產(chǎn)生。
步驟20,乘法運算。第一寄存器21中的圖像數(shù)據(jù)和第二寄存器22中的濾波器權(quán)值被發(fā)送到乘法器41中執(zhí)行乘法運算,經(jīng)過乘法器41相乘后的結(jié)果被輸出到第三寄存器23。
步驟30,加法運算。由于加速處理單元61中的乘加操作還沒有結(jié)束,此時第一多路選擇器31置0,當(dāng)?shù)谝欢嗦愤x擇器31被置0時,第三寄存器23中圖像數(shù)據(jù)被發(fā)送到加法器51中,加法器51將圖像數(shù)據(jù)與第五寄存器25中的前一次內(nèi)部部分和相加。對于第一次的內(nèi)部卷積操作,第五寄存器25中為零,對于后續(xù)的內(nèi)部卷積操作,第五寄存器25中為前一次卷積操作后的內(nèi)部部分和。本次卷積操作中相加后的結(jié)果(即內(nèi)部部分和)被輸出到第四寄存器24,此時便完成了一次內(nèi)部卷積操作,最終得到第一個圖像數(shù)據(jù)和濾波器權(quán)值的部分和。由于加速處理單元61中的乘加操作還沒有結(jié)束,此時第二多路選擇器32置0,當(dāng)?shù)诙嗦愤x擇器32被置0時,內(nèi)部部分和被第四寄存器24發(fā)送至第五寄存器25。
步驟40,本加速處理單元61判斷是否完成了所有局部數(shù)據(jù)的內(nèi)部卷積操作,若內(nèi)部卷積操作未完成時,將依次重復(fù)步驟10、步驟20和步驟30,提取第二個圖像數(shù)據(jù),并輸入到第一寄存器21,第二個濾波器權(quán)值輸入到第二寄存器22,第一寄存器21中的圖像數(shù)據(jù)和第二寄存器22中的濾波器權(quán)值都發(fā)送到乘法器41中,圖像數(shù)據(jù)和濾波器權(quán)值相乘,得出的結(jié)果由乘法器41發(fā)送到第三寄存器中,由于加速處理單元61中的乘加操作還沒有結(jié)束,此時第一多路選擇器31置0,第三寄存器23中的數(shù)據(jù)通過第一多路選擇器發(fā)送到加法器51中,與來自第五寄存器25中的數(shù)據(jù)求和,最終得到第二次的圖像數(shù)據(jù)和濾波器權(quán)值的部分和。加法器51中的部分和發(fā)送到第四寄存器24中,此時,由于加速處理單元中的乘加操作還沒有結(jié)束,此時第二多路選擇器32置0,第四寄存器24中的數(shù)據(jù)通過第二多路選擇器31發(fā)送到第五寄存器25中。從而完成對第二個圖像數(shù)據(jù)的內(nèi)部卷積操作。直到提取局部數(shù)據(jù)的最后一個圖像數(shù)據(jù),該圖像信息和濾波器權(quán)值經(jīng)過上述的相乘和相加操作后,得到本加速處理單元的部分和,該部分和通過與前述相同的操作,最終進(jìn)入第五寄存器25中。當(dāng)所有內(nèi)部卷積操作已完成時,則將進(jìn)行步驟50。
步驟50,當(dāng)加速處理單元61中的對局部數(shù)據(jù)的乘加操作結(jié)束后,第一多路選擇器31和第二多路選擇器32置1,當(dāng)?shù)谝欢嗦愤x擇器32被置1時,前一個加速處理單元中的部分和通過第一多路選擇器31發(fā)送到加法器51中,第五寄存器25將本加速處理單元61中的最終部分和發(fā)送到加法器51中,最后,前一個加速處理單元的部分和與本加速處理單元61中的部分和求和,得到兩個加速處理單元疊加的部分和,該疊加的部分和輸出,發(fā)送到下一個加速處理單元。當(dāng)?shù)诙嗦愤x擇器32將由狀態(tài)0被置1,第四寄存器24不再向第五寄存器25發(fā)送數(shù)據(jù),并且第五寄存器25中的數(shù)據(jù)將被清零。
本實施例中,單個加速處理單元通過對第一多路選擇器31和第二多路選擇器32的控制,使得乘法器41和加法器51可重復(fù)使用,從而使得一個加速處理單元只需要一個乘法器和一個加法器即可完成卷積運算,減少了乘法器和加法器的使用,在實現(xiàn)同樣的卷積運算時,減少乘法器和加法器的使用將會提高處理速度并降低能耗,同時單個加速處理單元片上面積更小。
實施例二:
請參考圖3至圖5,示出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的陣列結(jié)構(gòu),包括多個所述加速處理單元,多個加速處理單元呈現(xiàn)為M行N列的矩陣形態(tài),其中M和N為大于或等于1的整數(shù),每一列的加速處理單元前后相連。
本實施例中,多個加速處理單元呈現(xiàn)為3行3列的矩陣形態(tài),每一列中,前一加速處理單元的加法器的輸出端連接后一加速處理單元的第一多路選擇器的第三端。
同一行的加速處理單元中,輸入的濾波器權(quán)值相同;位于同一對角線上的加速處理單元中,輸入的局部數(shù)據(jù)相同。
不同行的加速處理單元中,輸入的濾波器權(quán)值不同。
下面結(jié)合附圖,說明多個加速處理單元的卷積層運算過程。
結(jié)合圖1至圖5,基于卷積神經(jīng)網(wǎng)絡(luò)的陣列結(jié)構(gòu)的運算過程如下:
如圖3所示,前一個加速處理單元的加法器51連接后一個加速處理單元的第一多路選擇器31,每一行輸出的部分和都垂直移動,將前后兩個加速處理單元的部分和累加,在計算過程結(jié)束時可以在頂行被讀出,在下一個計算過程的開始由緩沖器送到陣列的底行。
例如,加速處理單元PE1.1、加速處理單元PE2.1和加速處理單元PE3.1,先分別進(jìn)行內(nèi)部卷積運算,最終結(jié)果存儲在各自的第五寄存器25中,然后,加速處理單元PE3.1中輸出的部分和與加速處理單元PE2.1中第五寄存器25的部 分和在加速處理單元PE2.1的加法器51中再次求和累加,得到第一次累加的部分和,所述第一次累加的部分和由加速處理單元PE2.1發(fā)送到加速處理單元PE1.1中,與加速處理單元PE1.1中第五寄存器25的部分和在加速處理單元PE1.1的加法器51中再次求和,最終輸出本列所有加速處理單元1的部分和。
還需指出的是,如圖4和圖5所示,同一行的加速處理單元中,輸入的濾波器權(quán)值相同,位于同一對角線上的加速處理單元中,輸入的圖像數(shù)據(jù)相同,不同行的加速處理單元中,輸入的濾波器權(quán)值不同。由于整個圖像數(shù)據(jù)有若干行,而每個加速處理單元只是處理整個圖像數(shù)據(jù)中的單行數(shù)據(jù),因此就需要將加速處理單元分別處理完每一行數(shù)據(jù)再對每一行數(shù)據(jù)的卷積結(jié)果進(jìn)行累加操作。同一對角線上的輸入數(shù)據(jù)相同,不同對角線上的輸入圖像數(shù)據(jù)不同,相當(dāng)于不同對角線上的輸入的圖像數(shù)據(jù)是圖像數(shù)據(jù)的不同行數(shù)據(jù)。而處理不同行的圖像數(shù)據(jù)需要不同的濾波器權(quán)值,例如一個濾波器權(quán)值只是用來處理第一行的圖像數(shù)據(jù),當(dāng)要處理第二行的圖像數(shù)據(jù)的時候,就需要用新的濾波器權(quán)值。因此可使同一行的加速處理單元采用相同的濾波器權(quán)值,不同行的加速處理單元采用不同的濾波器權(quán)值。
例如,加速處理單元PE1.1、加速處理單元PE1.2和加速處理單元PE1.3中的濾波器權(quán)值相同,加速處理單元PE2.1和加速處理單元PE1.2中輸入的圖像數(shù)據(jù)相同,加速處理單元PE1.1、加速處理單元PE2.2和加速處理單元PE3.1中的濾波器權(quán)值不相同。
如此實現(xiàn)了,同時處理一行的多媒體數(shù)據(jù),再對不同行的多媒體數(shù)據(jù)使用不同的濾波器權(quán)值,在分別處理完每一行數(shù)據(jù)后,在對前后各行多媒體數(shù)據(jù)進(jìn)行累加操作,從而快速、可靠地處理全部的多媒體數(shù)據(jù)。
以上應(yīng)用了具體個例對本發(fā)明進(jìn)行闡述,只是用于幫助理解本發(fā)明,并不用以限制本發(fā)明。對于本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員,依據(jù)本發(fā)明的思想,還可以做出若干簡單推演、變形或替換。