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

一種用于執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的裝置和方法與流程

文檔序號(hào):12906539閱讀:204來(lái)源:國(guó)知局
一種用于執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的裝置和方法與流程

本發(fā)明涉及一種用于執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練的裝置和方法,用于根據(jù)卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算指令高效靈活地執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算,能夠很好地解決當(dāng)前計(jì)算機(jī)領(lǐng)域越來(lái)越多的算法包含大量卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算的問(wèn)題。



背景技術(shù):

卷積神經(jīng)網(wǎng)絡(luò)是近年來(lái)廣泛應(yīng)用于模式識(shí)別、圖像處理等領(lǐng)域的一種高效識(shí)別算法,它具有結(jié)構(gòu)簡(jiǎn)單、訓(xùn)練參數(shù)少和適應(yīng)性強(qiáng)、平移、旋轉(zhuǎn)、縮放等特點(diǎn)。由于cnn/dnn的特征檢測(cè)層通過(guò)訓(xùn)練數(shù)據(jù)進(jìn)行學(xué)習(xí),所以在使用cnn/dnn時(shí),避免了顯示的特征抽取,而隱式地從訓(xùn)練數(shù)據(jù)中進(jìn)行學(xué)習(xí);再者由于同一特征映射面上的神經(jīng)元權(quán)值相同,所以網(wǎng)絡(luò)可以并行學(xué)習(xí),這也是卷積網(wǎng)絡(luò)相對(duì)于神經(jīng)元彼此相連網(wǎng)絡(luò)的一大優(yōu)勢(shì)。

本發(fā)明提供的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法的流程圖,如圖1所示,其流程包括兩個(gè)階段:

第一階段,向前傳播階段:

a)從樣本集中取一個(gè)樣本(x,邯),將x輸入網(wǎng)絡(luò);

b)計(jì)算相應(yīng)的實(shí)際輸出op。

在此階段,信息從輸入層經(jīng)過(guò)逐級(jí)的變換,傳送到輸出層。這個(gè)過(guò)程也是網(wǎng)絡(luò)在完成訓(xùn)練后正常運(yùn)行時(shí)執(zhí)行的過(guò)程。在此過(guò)程中,網(wǎng)絡(luò)執(zhí)行的是計(jì)算(實(shí)際上就是輸入與每層的權(quán)值矩陣相點(diǎn)乘,得到最后的輸出結(jié)果):

op=fn(…(f2(f1(xpw(1))w(2))…)w(n))

第二階段,向后傳播階段

a)算實(shí)際輸出op與相應(yīng)的理想輸出邯的差;

b)按極小化誤差的方法反向傳播調(diào)整權(quán)矩陣。

在已有的計(jì)算機(jī)領(lǐng)域應(yīng)用中,與卷積運(yùn)算相關(guān)的應(yīng)用十分普遍。本發(fā)明專(zhuān)注于卷積神經(jīng)網(wǎng)絡(luò),目前可以執(zhí)行此種運(yùn)算的主流裝置如下:

在現(xiàn)有技術(shù)中,一種進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算的已知方案是使用通用處理器,該方法通過(guò)通用寄存器堆和通用功能部件來(lái)執(zhí)行通用指令,從而執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算。然而,該方法的缺點(diǎn)之一是單個(gè)通用處理器多用于標(biāo)量計(jì)算,在進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算時(shí)運(yùn)算性能較低。而使用多個(gè)通用處理器并行執(zhí)行時(shí),通用處理器之間的相互通訊又有可能成為性能瓶頸。

在另一種現(xiàn)有技術(shù)中,使用圖形處理器(gpu)來(lái)進(jìn)行向量計(jì)算,其中,通過(guò)使用通用寄存器堆和通用流處理單元執(zhí)行通用simd指令來(lái)進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算。然而,上述方案中,gpu片上緩存太小,在進(jìn)行大規(guī)模卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算時(shí)需要不斷進(jìn)行片外數(shù)據(jù)搬運(yùn),片外帶寬成為了主要性能瓶頸。



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

(一)要解決的技術(shù)問(wèn)題

本發(fā)明的目的在于,提供一種支持卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練的裝置,解決現(xiàn)有技術(shù)中存在的受限于片間通訊、片上緩存不夠等問(wèn)題。

(二)技術(shù)方案

本發(fā)明的一個(gè)方面提供了一種用于執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練的裝置,包括指令存儲(chǔ)單元、控制器單元、數(shù)據(jù)訪問(wèn)單元、互連模塊、主運(yùn)算模塊、多個(gè)從運(yùn)算模塊,其中:

指令存儲(chǔ)單元用于存儲(chǔ)指令;

控制器單元用于從指令存儲(chǔ)單元讀取指令,并將該指令譯碼成控制互連模塊、主運(yùn)算模塊、以及所述多個(gè)從運(yùn)算模塊行為的控制信號(hào);

數(shù)據(jù)訪問(wèn)單元執(zhí)行外部地址空間與所述裝置之間的數(shù)據(jù)或指令讀寫(xiě)操作;

在每層神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練開(kāi)始計(jì)算的階段,主運(yùn)算模塊通過(guò)互連模塊向所有的從運(yùn)算模塊傳輸本層的輸入數(shù)據(jù);

每個(gè)從運(yùn)算模塊計(jì)算自身的卷積核與輸入數(shù)據(jù)的點(diǎn)積作為中間結(jié)果 部分和,該卷積核與該中間結(jié)果部分和相對(duì)應(yīng);

在從運(yùn)算模塊的計(jì)算過(guò)程完成后,互連模塊逐級(jí)將各從運(yùn)算模塊的輸出數(shù)據(jù)部分和拼接得到本層的中間結(jié)果;

主運(yùn)算模塊在每一層的計(jì)算過(guò)程中,利用本層的中間結(jié)果完成后續(xù)計(jì)算。

本發(fā)明的另一方面提供了一種執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)指令的方法。

(三)有益效果

本發(fā)明提供的卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算裝置及配套指令,將參與計(jì)算的輸入數(shù)據(jù)、輸出梯度和卷積核暫存在高速暫存存儲(chǔ)器上(scratchpadmemory)。在僅發(fā)送同一條指令的情況下,卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算單元中可以更加靈活有效地支持不同寬度的數(shù)據(jù),并可以解決數(shù)據(jù)存儲(chǔ)中的相關(guān)性問(wèn)題,從而提升了包含大量卷積神經(jīng)網(wǎng)絡(luò)計(jì)算任務(wù)的執(zhí)行性能,本發(fā)明采用的指令具有精簡(jiǎn)的格式,使得指令集使用方便、支持的向量長(zhǎng)度靈活。

本發(fā)明可以應(yīng)用于以下(包括但不限于)場(chǎng)景中:數(shù)據(jù)處理、機(jī)器人、電腦、打印機(jī)、掃描儀、電話、平板電腦、智能終端、手機(jī)、行車(chē)記錄儀、導(dǎo)航儀、傳感器、攝像頭、云端服務(wù)器、相機(jī)、攝像機(jī)、投影儀、手表、耳機(jī)、移動(dòng)存儲(chǔ)、可穿戴設(shè)備等各類(lèi)電子產(chǎn)品;飛機(jī)、輪船、車(chē)輛等各類(lèi)交通工具;電視、空調(diào)、微波爐、冰箱、電飯煲、加濕器、洗衣機(jī)、電燈、燃?xì)庠睢⒂蜔煓C(jī)等各類(lèi)家用電器;以及包括核磁共振儀、b超、心電圖儀等各類(lèi)醫(yī)療設(shè)備。

附圖說(shuō)明

圖1是卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練算法的流程圖

圖2是本發(fā)明提供的支持卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練裝置的指令示意圖。

圖3示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行人工神經(jīng)網(wǎng)絡(luò)卷積層訓(xùn)練運(yùn)算的裝置的整體結(jié)構(gòu)的示例框圖。

圖4示意性示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行人工神經(jīng)網(wǎng)絡(luò)卷積層訓(xùn)練運(yùn)算的裝置中互連模塊的結(jié)構(gòu)。

圖5示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行人工神經(jīng)網(wǎng)絡(luò)卷積層訓(xùn)練運(yùn) 算的裝置中主運(yùn)算模塊結(jié)構(gòu)的示例框圖。

圖6示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行人工神經(jīng)網(wǎng)絡(luò)卷積層訓(xùn)練運(yùn)算的裝置中從運(yùn)算模塊結(jié)構(gòu)的示例框圖。

圖7示出了根據(jù)本發(fā)明實(shí)施例的神經(jīng)網(wǎng)絡(luò)卷積層訓(xùn)練運(yùn)算過(guò)程的示例框圖。

具體實(shí)施方式

本發(fā)明提供一種卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練裝置及配套指令集,包括存儲(chǔ)單元、寄存器單元和卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算單元,存儲(chǔ)單元中存儲(chǔ)有數(shù)據(jù)、輸入輸出數(shù)據(jù)梯度和卷積核,寄存器單元中存儲(chǔ)有數(shù)據(jù)、輸入輸出數(shù)據(jù)梯度和卷積核存儲(chǔ)的地址,首先對(duì)輸入神經(jīng)元向量依據(jù)卷積窗口,對(duì)來(lái)自前一層的輸出數(shù)據(jù)進(jìn)行數(shù)據(jù)選擇得到當(dāng)前層的輸入數(shù)據(jù),然后依據(jù)選擇得到的輸入數(shù)據(jù)和來(lái)自當(dāng)前層的后一層的輸出數(shù)據(jù)的梯度,計(jì)算并且更新卷積核,其次依據(jù)卷積核和輸出數(shù)據(jù)的梯度以及激活函數(shù)的導(dǎo)函數(shù),計(jì)算得到輸入數(shù)據(jù)的梯度,并且存入存儲(chǔ)器以進(jìn)行下一層計(jì)算。將輸入數(shù)據(jù)的梯度作為下一層的輸出數(shù)據(jù)的梯度。本發(fā)明將參與計(jì)算的輸入數(shù)據(jù)和卷積核暫存在高速暫存存儲(chǔ)器上,使得卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算過(guò)程中可以更加靈活有效地支持不同寬度的數(shù)據(jù),提升包含大量卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練計(jì)算任務(wù)的執(zhí)行性能。

圖1為卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練算法示意圖,如圖所示,包含卷積神經(jīng)網(wǎng)絡(luò)輸入數(shù)據(jù),激活函數(shù)的導(dǎo)函數(shù),輸出數(shù)據(jù)的梯度,和卷積核。

首先,其反向訓(xùn)練的每一層計(jì)算過(guò)程,首先需要依據(jù)卷積窗口,從當(dāng)前層的前一層的輸出數(shù)據(jù)中選取出對(duì)應(yīng)本層運(yùn)算模塊的輸入數(shù)據(jù),然后依據(jù)這部分輸入數(shù)據(jù)和來(lái)自當(dāng)前層的后一層的數(shù)據(jù)梯度進(jìn)行向量乘向量運(yùn)算,得到卷積核的梯度,該梯度是一個(gè)標(biāo)量。其卷積核的梯度計(jì)算過(guò)程為dw=∑杭dsi,即每個(gè)從運(yùn)算模塊將來(lái)自前一層的數(shù)據(jù)x乘以來(lái)自后一層的數(shù)據(jù)梯度ds,在卷積窗口遍歷完數(shù)據(jù)之后,對(duì)進(jìn)行求和,得到該卷積核對(duì)應(yīng)的梯度,最后,主運(yùn)算模塊求解當(dāng)前層所有的從運(yùn)算模塊的卷積核的梯度對(duì)應(yīng)的平方平均數(shù)當(dāng)c大于閾值時(shí)t,所有梯度進(jìn)行縮放dw′=dw/c*t,最后,依據(jù)新的卷積核的梯度更新卷積核的值。

同時(shí),主運(yùn)算模塊依據(jù)卷積核和當(dāng)前層的輸入數(shù)據(jù),可以得到要輸出到前一層的數(shù)據(jù)梯度dx=h(x)∑widsi,其中,ds為與當(dāng)前層的輸入數(shù)據(jù)x有相互關(guān)系的當(dāng)前層的輸出數(shù)據(jù)梯度,w為該輸入數(shù)據(jù)x和輸出數(shù)據(jù)的梯度ds對(duì)應(yīng)的卷積核數(shù)據(jù),h(x)為該輸入數(shù)據(jù)對(duì)應(yīng)的激活函數(shù)的導(dǎo)函數(shù)的值。即將卷積核與來(lái)自后一層的數(shù)據(jù)梯度進(jìn)行乘加運(yùn)算,然后乘以當(dāng)前層的輸入數(shù)據(jù)對(duì)應(yīng)的激活函數(shù)的導(dǎo)函數(shù)的值,得到輸出給前一層的數(shù)據(jù)梯度,最后,將該梯度輸出到存儲(chǔ)器,用以進(jìn)行其前一層的卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算。

卷積窗口依據(jù)卷積核的大小kx和ky,在大小為w和h的輸入數(shù)據(jù)集上,從最開(kāi)始選取出和卷積核同樣大小的輸入數(shù)據(jù),然后依據(jù)卷積窗口的平移位矢sx和卑y,以此先作水平平移,然后再做垂直平移,將整幅輸入圖像做遍歷。

圖2是本發(fā)明提供的指令集的格式示意圖,如圖2所示,卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算指令包括1個(gè)操作碼和7個(gè)操作域,其中,操作碼用于指示該卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算指令的功能,卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算單元通過(guò)識(shí)別該操作碼可進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算,操作域用于指示該卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算指令的數(shù)據(jù)信息,其中,數(shù)據(jù)信息可以是立即數(shù)或寄存器號(hào),包括輸入數(shù)據(jù)的起始地址和數(shù)據(jù)長(zhǎng)度,卷積核的起始地址和數(shù)據(jù)長(zhǎng)度,輸出梯度的起始地址和數(shù)據(jù)長(zhǎng)度以及激活函數(shù)的類(lèi)型。

指令集包含有不同功能的卷積神經(jīng)網(wǎng)絡(luò)compute指令以及config指令、io指令、nop指令、jump指令和move指令。在一種實(shí)施例中,compute指令包括:

卷積神經(jīng)網(wǎng)絡(luò)sigmoid指令。根據(jù)該指令,裝置分別從高速暫存存儲(chǔ)器的指定地址取出指定大小的輸入數(shù)據(jù)和卷積核,在卷積運(yùn)算部件中做卷積操作,然后將輸出結(jié)果做sigmoid激活。

卷積神經(jīng)網(wǎng)絡(luò)tanh指令。根據(jù)該指令,裝置分別從高速暫存存儲(chǔ)器的指定地址取出指定大小的輸入數(shù)據(jù)和卷積核,在卷積運(yùn)算部件中做卷積操作,然后將輸出結(jié)果做tanh激活。

卷積神經(jīng)網(wǎng)絡(luò)relu指令。根據(jù)該指令,裝置分別從高速暫存存儲(chǔ)器的指定地址取出指定大小的輸入數(shù)據(jù)和卷積核,在卷積運(yùn)算部件中做卷積 操作,然后將輸出結(jié)果做relu激活。

卷積神經(jīng)網(wǎng)絡(luò)group指令。根據(jù)該指令,裝置分別從高速暫存存儲(chǔ)器的指定地址取出指定大小的輸入數(shù)據(jù)和卷積核,劃分group之后,在卷積運(yùn)算部件中做卷積操作,然后將輸出結(jié)果做激活。

io指令實(shí)現(xiàn)從外部地址空間讀入計(jì)算需要的輸入數(shù)據(jù)以及在計(jì)算完成后將數(shù)據(jù)存回至外部空間;

nop指令負(fù)責(zé)清空當(dāng)前裝至內(nèi)部所有控制信號(hào)緩存隊(duì)列中的控制信號(hào),保證nop指令之前的所有指令全部指令完畢。nop指令本身不包含任何操作;

jump指令負(fù)責(zé)控制器將要從指令存儲(chǔ)單元讀取的下一條指令地址的跳轉(zhuǎn),用來(lái)實(shí)現(xiàn)控制流的跳轉(zhuǎn);

move指令負(fù)責(zé)將裝置內(nèi)部地址空間某一地址的數(shù)據(jù)搬運(yùn)至裝置內(nèi)部地址空間的另一地址,該過(guò)程獨(dú)立于運(yùn)算單元,在執(zhí)行過(guò)程中不占用運(yùn)算單元的資源。

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。

圖3是本發(fā)明實(shí)施例提供的卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算裝置的結(jié)構(gòu)示意圖。如圖3所示,該裝置包括指令存儲(chǔ)單元1、控制器單元2、數(shù)據(jù)訪問(wèn)單元3、互連模塊4、主運(yùn)算模塊5和多個(gè)從運(yùn)算模塊6。指令存儲(chǔ)單元1、控制器單元2、數(shù)據(jù)訪問(wèn)單元3、互連模塊4、主運(yùn)算模塊5和從運(yùn)算模塊6均可以通過(guò)硬件電路(例如包括但不限于fpga、cgra、專(zhuān)用集成電路asic、模擬電路和憶阻器等)實(shí)現(xiàn)。

指令存儲(chǔ)單元1通過(guò)數(shù)據(jù)訪問(wèn)單元3讀入指令并緩存讀入的指令。

控制器單元2從指令存儲(chǔ)單元1中讀取指令,將指令譯成控制其他模塊行為的控制信號(hào),所述其他模塊例如數(shù)據(jù)訪問(wèn)單元3、主運(yùn)算模塊5和從運(yùn)算模塊6等。

數(shù)據(jù)訪問(wèn)單元3能夠訪存外部地址空間,根據(jù)計(jì)算過(guò)程中所需要的如數(shù)據(jù)規(guī)模等數(shù)值,直接向裝置內(nèi)部的各個(gè)緩存單元讀寫(xiě)數(shù)據(jù)、數(shù)據(jù)梯度和卷積核數(shù)值,完成如上內(nèi)容的加載和存儲(chǔ)。

互連模塊4構(gòu)成主運(yùn)算模塊和所述多個(gè)從運(yùn)算模塊之間的數(shù)據(jù)通路, 互連模塊為以下任一種結(jié)構(gòu):樹(shù)狀結(jié)構(gòu)、環(huán)狀結(jié)構(gòu)、網(wǎng)格狀結(jié)構(gòu)、分級(jí)互連、總線結(jié)構(gòu)。

圖4示意性示出了互連模塊4的一種結(jié)構(gòu)。互連模塊4構(gòu)成主運(yùn)算模塊5和多個(gè)從運(yùn)算模塊6之間的數(shù)據(jù)通路,并且是具有h樹(shù)型的結(jié)構(gòu)。h樹(shù)是由多個(gè)節(jié)點(diǎn)構(gòu)成的二叉樹(shù)通路,每個(gè)節(jié)點(diǎn)將上游的數(shù)據(jù)同樣地發(fā)給下游的兩個(gè)節(jié)點(diǎn),將下游的兩個(gè)節(jié)點(diǎn)返回的數(shù)據(jù)進(jìn)行合并,并返回給上游的節(jié)點(diǎn)。例如,在人工神經(jīng)網(wǎng)絡(luò)卷積層訓(xùn)練開(kāi)始計(jì)算階段,主運(yùn)算模塊5內(nèi)的神經(jīng)元數(shù)據(jù)通過(guò)互連模塊4發(fā)送給各個(gè)從運(yùn)算模塊6;當(dāng)從運(yùn)算模塊6的計(jì)算過(guò)程完成后,當(dāng)從運(yùn)算模塊的計(jì)算過(guò)程完成后,首先進(jìn)行卷積核更新,然后每個(gè)從運(yùn)算模塊輸出的神經(jīng)元的值會(huì)在互連模塊中逐級(jí)拼成一個(gè)完整的由神經(jīng)元組成的向量,作為中間結(jié)果向量。舉例說(shuō)明,假設(shè)裝置中共有n個(gè)從運(yùn)算模塊,則中間結(jié)果向量按n分段,每段有n個(gè)元素,第i個(gè)從運(yùn)算模塊計(jì)算每段中的第i個(gè)元素。n個(gè)元素經(jīng)過(guò)互連模塊拼成長(zhǎng)度為n的向量并返回給主運(yùn)算模塊。所以如果網(wǎng)絡(luò)只有n個(gè)輸出神經(jīng)元,則每個(gè)從運(yùn)算單元只需輸出單個(gè)神經(jīng)元的值,若網(wǎng)絡(luò)有m*n個(gè)輸出神經(jīng)元,則每個(gè)從運(yùn)算單元需輸出m個(gè)神經(jīng)元值。

圖5示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行人工神經(jīng)網(wǎng)絡(luò)卷積層反向訓(xùn)練運(yùn)算的裝置中主運(yùn)算模塊5的結(jié)構(gòu)的示例框圖。如圖5所示,主運(yùn)算模塊5包括第一運(yùn)算單元51、第一數(shù)據(jù)依賴(lài)關(guān)系判斷單元52和第一存儲(chǔ)單元53。

其中,第一運(yùn)算單元51包括向量加法單元511以及激活單元512。第一運(yùn)算單元51接收來(lái)自控制器單元的控制信號(hào),完成主運(yùn)算模塊5的各種運(yùn)算功能,向量加法單元511用于實(shí)現(xiàn)人工神經(jīng)網(wǎng)絡(luò)卷積層反向訓(xùn)練運(yùn)算中的加偏置操作,該部件的輸入為從外部地址空間讀取出來(lái)的偏置向量,以及通過(guò)所述互連模塊4從從運(yùn)算模塊6傳送回來(lái)的中間結(jié)果向量,輸出為向量相加后的值,激活單元512用于實(shí)現(xiàn)人工神經(jīng)網(wǎng)絡(luò)卷積層激活函數(shù)導(dǎo)函數(shù)乘法操作。該部件的輸入為通過(guò)所述互連模塊4從從運(yùn)算模塊6傳送回來(lái)的中間結(jié)果,或向量加法單元511的輸出結(jié)果,輸出為與激活函數(shù)導(dǎo)函數(shù)相乘后的輸出數(shù)據(jù)梯度向量。

第一數(shù)據(jù)依賴(lài)關(guān)系判斷單元52是第一運(yùn)算單元51讀寫(xiě)第一存儲(chǔ)單元 53的端口,保證神經(jīng)元緩存單元中數(shù)據(jù)的讀寫(xiě)一致性。同時(shí),第一數(shù)據(jù)依賴(lài)關(guān)系判斷單元52也負(fù)責(zé)將讀取數(shù)據(jù)通過(guò)互連模塊4發(fā)送給從計(jì)算模塊,而從計(jì)算模塊6的輸出數(shù)據(jù)通過(guò)互連模塊4直接發(fā)送給第一運(yùn)算單元51。控制器單元2輸出的指令發(fā)送給計(jì)算單元51和第一數(shù)據(jù)依賴(lài)關(guān)系判斷單元52,來(lái)控制其行為;

第一存儲(chǔ)單元53用于緩存主運(yùn)算模塊5在計(jì)算過(guò)程中用到的輸入輸出數(shù)據(jù),輸入輸出數(shù)據(jù)梯度和卷積核數(shù)值。

圖6示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行人工神經(jīng)網(wǎng)絡(luò)卷積層反向訓(xùn)練運(yùn)算的裝置中從運(yùn)算模塊6的結(jié)構(gòu)的示例框圖。如圖6所示,每個(gè)從運(yùn)算模塊6包括第二運(yùn)算單元61、數(shù)據(jù)依賴(lài)關(guān)系判定單元62、第二存儲(chǔ)單元63和第三存儲(chǔ)單元64。

第二運(yùn)算單元61首先根據(jù)輸入數(shù)據(jù)和輸出數(shù)據(jù)的梯度,更新卷積核。然后第二運(yùn)算單元61接收控制器單元2發(fā)出的控制信號(hào)并進(jìn)行點(diǎn)積運(yùn)算。第二運(yùn)算單元61包括向量乘單元611,以及累加單元612。其中,向量乘單元611用于實(shí)現(xiàn)神經(jīng)元向量和權(quán)值向量的對(duì)位乘法,累加單元612用于實(shí)現(xiàn)對(duì)向量每一項(xiàng)累加到一起的操作。

第二數(shù)據(jù)依賴(lài)關(guān)系判斷單元62負(fù)責(zé)計(jì)算過(guò)程中對(duì)神經(jīng)元緩存單元的讀寫(xiě)操作。第二數(shù)據(jù)依賴(lài)關(guān)系判斷單元62執(zhí)行讀寫(xiě)操作之前會(huì)首先保證指令之間所用的數(shù)據(jù)不存在讀寫(xiě)一致性沖突。例如,所有發(fā)往數(shù)據(jù)依賴(lài)關(guān)系單元62的控制信號(hào)都會(huì)被存入數(shù)據(jù)依賴(lài)關(guān)系單元62內(nèi)部的指令隊(duì)列里,在該隊(duì)列中,讀指令的讀取數(shù)據(jù)的范圍如果與隊(duì)列位置靠前的寫(xiě)指令寫(xiě)數(shù)據(jù)的范圍發(fā)生沖突,則該指令必須等到所依賴(lài)的寫(xiě)指令被執(zhí)行后才能夠執(zhí)行。

第二存儲(chǔ)單元63緩存該從運(yùn)算模塊6的輸入神經(jīng)元向量數(shù)據(jù)和輸出神經(jīng)元值數(shù)據(jù)。

第三存儲(chǔ)單元64緩存該從運(yùn)算模塊6在計(jì)算過(guò)程中需要的卷積核數(shù)據(jù)。對(duì)于每一個(gè)從運(yùn)算模塊6,都只會(huì)存儲(chǔ)部分輸出神經(jīng)元對(duì)應(yīng)的部分卷積核。輸出神經(jīng)元按照從運(yùn)算單元的個(gè)數(shù)n進(jìn)行分段,每段的第n個(gè)輸出神經(jīng)元對(duì)應(yīng)的權(quán)值存放在第n個(gè)從運(yùn)算單元中。

從運(yùn)算模塊6實(shí)現(xiàn)人工神經(jīng)網(wǎng)絡(luò)卷積核層運(yùn)算過(guò)程中點(diǎn)積運(yùn)算的并行 性。當(dāng)對(duì)應(yīng)單個(gè)卷積窗口內(nèi)部的數(shù)據(jù)時(shí),人工神經(jīng)網(wǎng)絡(luò)卷積層中,單個(gè)卷積核對(duì)應(yīng)的過(guò)程為s=s(∑珊+b),并且每個(gè)人工神經(jīng)網(wǎng)絡(luò)卷積層包涵有多個(gè)卷積核,因此,可以依據(jù)卷積核,將整個(gè)卷積層的計(jì)算任務(wù)切分成多個(gè)并行的獨(dú)立的任務(wù),輸出數(shù)據(jù)與輸入數(shù)據(jù)是列向量,每個(gè)從運(yùn)算模塊6計(jì)算輸出數(shù)據(jù)中的部分和所對(duì)應(yīng)的卷積核與輸入數(shù)據(jù)的點(diǎn)積,得到的每個(gè)輸出向量都是最終結(jié)果的激活前的值,這些部分和在互連模塊4中逐級(jí)兩兩合并得到最后的結(jié)果。所以計(jì)算過(guò)程變成了并行的計(jì)算部分和的過(guò)程和后面的合并的過(guò)程。每個(gè)從運(yùn)算模塊6計(jì)算出輸出神經(jīng)元值,所有的輸出神經(jīng)元值在互連模塊4中拼成得到中間結(jié)果向量。每個(gè)從運(yùn)算模塊6只需要計(jì)算出中間結(jié)果向量y中與本模塊對(duì)應(yīng)的輸出神經(jīng)元值即可?;ミB模塊4對(duì)所有從運(yùn)算模塊6輸出的神經(jīng)元值合并,得到最終的中間結(jié)果向量y。

圖7是本發(fā)明實(shí)施例提供的卷積神經(jīng)網(wǎng)絡(luò)反向訓(xùn)練運(yùn)算裝置執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)指令的流程圖,如圖7所示,執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)指令的過(guò)程包括:

在步驟s1,在指令存儲(chǔ)單元1的首地址處預(yù)先存入一條io指令。

在步驟s2,運(yùn)算開(kāi)始,控制器單元2從指令存儲(chǔ)單元1的首地址讀取該條io指令,根據(jù)譯出的控制信號(hào),數(shù)據(jù)訪問(wèn)單元3從外部地址空間讀取相應(yīng)的所有人工神經(jīng)網(wǎng)絡(luò)卷積層運(yùn)算指令,并將其緩存在指令存儲(chǔ)單元1中。

在步驟s3,控制器單元2接著從指令存儲(chǔ)單元讀入下一條io指令,根據(jù)譯出的控制信號(hào),數(shù)據(jù)訪問(wèn)單元3從外部地址空間讀取主運(yùn)算模塊5需要的所有數(shù)據(jù)(例如,包括輸入數(shù)據(jù)、插值表、常數(shù)表和偏置等)至主運(yùn)算模塊5的第一存儲(chǔ)單元53。

在步驟s4,控制器單元2接著從指令存儲(chǔ)單元讀入下一條io指令,根據(jù)譯出的控制信號(hào),數(shù)據(jù)訪問(wèn)單元3從外部地址空間讀取從運(yùn)算模塊6需要的卷積核數(shù)據(jù)。

在步驟s5,控制器單元2接著從指令存儲(chǔ)單元讀入下一條config指令,根據(jù)譯出的控制信號(hào),裝置配置該層神經(jīng)網(wǎng)絡(luò)計(jì)算需要的各種常數(shù)。例如,第一運(yùn)算單元51、61根據(jù)控制信號(hào)里的參數(shù)配置單元內(nèi)部寄存器的值,所述參數(shù)包括例如激活函數(shù)需要的數(shù)據(jù)。

在步驟s6,控制器單元2接著從指令存儲(chǔ)單元讀入下一條compute 指令,根據(jù)譯出的控制信號(hào),主運(yùn)算模塊5首先通過(guò)互連模塊4將卷積窗口內(nèi)的當(dāng)前層的輸入數(shù)據(jù)和后一層的數(shù)據(jù)梯度向量發(fā)給各從運(yùn)算模塊6,保存至從運(yùn)算模塊6的第二存儲(chǔ)單元63,之后,再依據(jù)指令移動(dòng)卷積窗口。

在步驟s7,根據(jù)compute指令譯出的控制信號(hào),從運(yùn)算模塊6的第二運(yùn)算單元61從第三存儲(chǔ)單元64讀取卷積核向量,從第二存儲(chǔ)單元63讀取輸入數(shù)據(jù),完成卷積核向量和輸入數(shù)據(jù)的點(diǎn)積運(yùn)算,更新第三存儲(chǔ)單元64,計(jì)算輸出數(shù)據(jù)梯度,并將中間結(jié)果通過(guò)互連模塊返回。

在步驟s8,在互連模塊4中,各從運(yùn)算模塊6返回的中間結(jié)果被逐級(jí)拼成完整的中間結(jié)果向量。

在步驟s9,主運(yùn)算模塊5得到互連模塊4的返回值,根據(jù)compute指令譯出的控制信號(hào),從第一存儲(chǔ)單元53讀取偏置向量,與互連模塊4返回的向量通過(guò)向量加單元512相加,然后激活單元511對(duì)相加結(jié)果與激活函數(shù)的導(dǎo)函數(shù)相乘,并將最后的輸出寫(xiě)回至第一存儲(chǔ)單元53中。

在步驟s10,控制器單元2接著從指令存儲(chǔ)單元讀入下一條io指令,根據(jù)譯出的控制信號(hào),數(shù)據(jù)訪問(wèn)單元3將第一存儲(chǔ)單元53中的輸出的數(shù)據(jù)梯度存至外部地址空間指定地址,運(yùn)算結(jié)束。

通過(guò)采用用于執(zhí)行人工神經(jīng)網(wǎng)絡(luò)卷積層反向訓(xùn)練運(yùn)算的裝置和指令集,解決了cpu和gpu在進(jìn)行神經(jīng)網(wǎng)絡(luò)卷積層運(yùn)算時(shí)性能不足,前端譯碼開(kāi)銷(xiāo)大的問(wèn)題。有效提高了對(duì)多層人工神經(jīng)網(wǎng)絡(luò)卷積層反向訓(xùn)練運(yùn)算的支持。

通過(guò)采用針對(duì)多層人工神經(jīng)網(wǎng)絡(luò)卷積層反向訓(xùn)練運(yùn)算的專(zhuān)用片上緩存,充分挖掘了輸入神經(jīng)元和卷積核數(shù)據(jù)的重用性,避免了反復(fù)向內(nèi)存讀取這些數(shù)據(jù),降低了內(nèi)存訪問(wèn)帶寬,避免了內(nèi)存帶寬成為多層人工神經(jīng)網(wǎng)絡(luò)卷積層反向訓(xùn)練運(yùn)算性能瓶頸的問(wèn)題。

前面的附圖中所描繪的進(jìn)程或方法可通過(guò)包括硬件(例如,電路、專(zhuān)用邏輯等)、固件、軟件(例如,被具體化在非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)上的軟件),或兩者的組合的處理邏輯來(lái)執(zhí)行。雖然上文按照某些順序操作描述了進(jìn)程或方法,但是,應(yīng)該理解,所描述的某些操作能以不同順序來(lái)執(zhí)行。此外,可并行地而非順序地執(zhí)行一些操作。

在前述的說(shuō)明書(shū)中,參考其特定示例性實(shí)施例描述了本發(fā)明的各實(shí)施 例。顯然,可對(duì)各實(shí)施例做出各種修改,而不背離所附權(quán)利要求所述的本發(fā)明的更廣泛的精神和范圍。相應(yīng)地,說(shuō)明書(shū)和附圖應(yīng)當(dāng)被認(rèn)為是說(shuō)明性的,而不是限制性的。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1