CN110059810B 深度神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)的基于直方圖的每層數(shù)據(jù)格式選擇_第1頁(yè)
CN110059810B 深度神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)的基于直方圖的每層數(shù)據(jù)格式選擇_第2頁(yè)
CN110059810B 深度神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)的基于直方圖的每層數(shù)據(jù)格式選擇_第3頁(yè)
CN110059810B 深度神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)的基于直方圖的每層數(shù)據(jù)格式選擇_第4頁(yè)
CN110059810B 深度神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)的基于直方圖的每層數(shù)據(jù)格式選擇_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

(19)國(guó)家知識(shí)產(chǎn)權(quán)局(12)發(fā)明專利地址英國(guó)赫特福德郡有限責(zé)任公司11258GO6N3/063(2023.01)QuantizationofDeepConvolutionalNetworks.《Internationalmachinelearning.PMLR》.2016,第2849-2858深度神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)的基于直方圖的每本公開涉及深度神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)的基于輸入至和/或輸出自深度神經(jīng)網(wǎng)絡(luò)“DNN”的一個(gè)該方法包括獲得表示該層的一組值的預(yù)期分布的直方圖,該直方圖的每個(gè)bin與頻率值和浮點(diǎn)直方圖的頻率值和針對(duì)每個(gè)bin的距離值來估計(jì)總量化誤差,該距離值基于針對(duì)該bin的根據(jù)頻率值和距離值來估計(jì)總量化誤差存在更多可能的是走點(diǎn)數(shù)格式否基于總量化誤差來選擇可能的定點(diǎn)數(shù)格式21.一種標(biāo)識(shí)用于表示輸入至和/或輸出自深度神經(jīng)網(wǎng)絡(luò)“DNN”的一個(gè)層的一組值的定點(diǎn)數(shù)格式以用于配置DNN的硬件實(shí)現(xiàn)的計(jì)算機(jī)實(shí)現(xiàn)的方法(400),所述方法(400)包括:獲得表示該層的該組值的預(yù)期分布的直方圖,其中,所述直方圖的每個(gè)bin與頻率值相關(guān)聯(lián)(402);針對(duì)多個(gè)定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式(404,410):根據(jù)所述定點(diǎn)數(shù)格式來量化針對(duì)每個(gè)bin的浮點(diǎn)數(shù)格式的代表值(406);并且基于針對(duì)每個(gè)bin的頻率值和距離值來估計(jì)與所述定點(diǎn)數(shù)格式相關(guān)聯(lián)的總量化誤差(408),所述距離值基于針對(duì)該bin的代表值的量化;以及選擇多個(gè)定點(diǎn)數(shù)格式中與最小估計(jì)總量化誤差相關(guān)聯(lián)的定點(diǎn)數(shù)格式作為用于表示該層的該組值的定點(diǎn)數(shù)格式(412)。2.根據(jù)權(quán)利要求1所述的方法(400),其中,所述多個(gè)定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式包括指數(shù)和尾數(shù)位長(zhǎng)度。3.根據(jù)權(quán)利要求2所述的方法(400),其中,所述多個(gè)定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式包括相同的尾數(shù)位長(zhǎng)度和不同的指數(shù)。4.根據(jù)權(quán)利要求2所述的方法(400),其中,所述多個(gè)定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式包括不同的尾數(shù)位長(zhǎng)度和相同的指數(shù)。5.根據(jù)權(quán)利要求1所述的方法(400),其中,估計(jì)與定點(diǎn)數(shù)格式相關(guān)聯(lián)的總量化誤差包括確定針對(duì)每個(gè)bin的頻率值和距離值的乘積的總和。6.根據(jù)權(quán)利要求1所述的方法(400),其中,針對(duì)每個(gè)bin的距離值是浮點(diǎn)數(shù)格式的針對(duì)該bin的代表值與根據(jù)所述定點(diǎn)數(shù)格式量化的針對(duì)該bin的代表值之間的差。7.根據(jù)權(quán)利要求1所述的方法(400),其中,針對(duì)每個(gè)bin的距離值是浮點(diǎn)數(shù)格式的針對(duì)該bin的代表值與根據(jù)所述定點(diǎn)數(shù)格式量化的針對(duì)該bin的代表值之間的平方差。8.根據(jù)權(quán)利要求1所述的方法(400),其中,針對(duì)每個(gè)bin的距離值是浮點(diǎn)數(shù)格式的針對(duì)該bin的代表值與根據(jù)所述定點(diǎn)數(shù)格式量化的針對(duì)該bin的代表值之間的平方差與該bin的代表值的權(quán)重的乘積,其中,所述定點(diǎn)數(shù)格式的可表示范圍之外的代表值的權(quán)重高于所述定點(diǎn)數(shù)格式的可表示范圍內(nèi)的代表值的權(quán)重。9.根據(jù)權(quán)利要求8所述的方法(400),其中,當(dāng)代表值落入所述定點(diǎn)數(shù)格式中的最大可表示數(shù)與所述定點(diǎn)數(shù)格式中的最小可表示數(shù)之間時(shí),所述代表值處于所述定點(diǎn)數(shù)格式的可表示范圍內(nèi)。10.根據(jù)權(quán)利要求8所述的方法(400),其中,所述權(quán)重在所述定點(diǎn)數(shù)格式的可表示范圍之外線性地增加。11.根據(jù)權(quán)利要求1至10中任一項(xiàng)所述的方法(400),還包括存儲(chǔ)選擇的定點(diǎn)數(shù)格式以用于配置所述DNN的硬件實(shí)現(xiàn)。12.根據(jù)權(quán)利要求1至10中任一項(xiàng)所述的方法(400),還包括配置所述DNN的硬件實(shí)現(xiàn)以使用選擇的定點(diǎn)數(shù)格式來表示該組值。13.根據(jù)權(quán)利要求1至10中任一項(xiàng)所述的方法(400),其中,針對(duì)bin的代表值是所述bin的中心值。14.一種在其上編碼有計(jì)算機(jī)可讀指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀指令在計(jì)算機(jī)系統(tǒng)上執(zhí)行時(shí),使得所述計(jì)算機(jī)系統(tǒng)執(zhí)行權(quán)利要求1至10中任一項(xiàng)所述的方法。315.一種用于標(biāo)識(shí)用于表示輸入至和/或輸出自深度神經(jīng)網(wǎng)絡(luò)“DNN”的一個(gè)層的一組值的定點(diǎn)數(shù)格式以用于配置DNN的硬件實(shí)現(xiàn)的基于計(jì)算的設(shè)備,所述基于計(jì)算的設(shè)備包括:直方圖,表示該層的該組值的預(yù)期分布,其中,所述直方圖的每個(gè)bin與頻率值相關(guān)聯(lián);以及計(jì)算機(jī)可讀代碼,在由所述至少一個(gè)處理器執(zhí)行時(shí),使得所述至少一個(gè)處理器執(zhí)行以下操作:針對(duì)多個(gè)定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式:根據(jù)所述定點(diǎn)數(shù)格式來量化針對(duì)每個(gè)bin的浮點(diǎn)格式的代表值;并且基于針對(duì)每個(gè)bin的頻率值和距離值來估計(jì)與所述定點(diǎn)數(shù)格式相關(guān)聯(lián)的總量化誤差,所述距離值基于針對(duì)該bin的代表值的量化;以及選擇多個(gè)定點(diǎn)數(shù)格式中與最小估計(jì)總量化誤差相關(guān)聯(lián)的定點(diǎn)數(shù)格式作為用于表示該層的該組值的定點(diǎn)數(shù)格式。接收指示針對(duì)該層的輸入數(shù)據(jù)值的定點(diǎn)數(shù)格式的信息,針對(duì)該層的輸入數(shù)據(jù)值的定點(diǎn)數(shù)格式已經(jīng)根據(jù)權(quán)利要求1至10中任一項(xiàng)所述的方法被選擇;基于針對(duì)該層的輸入數(shù)據(jù)值的定點(diǎn)數(shù)格式來解釋輸入數(shù)據(jù)值;并且根據(jù)該層來處理經(jīng)解釋的輸入數(shù)據(jù)值以生成針對(duì)該層的輸出數(shù)據(jù)值。接收指示針對(duì)該層的輸出數(shù)據(jù)值的定點(diǎn)數(shù)格式的信息,針對(duì)該層的輸出數(shù)據(jù)值的定點(diǎn)數(shù)格式已經(jīng)根據(jù)權(quán)利要求1至10中任一項(xiàng)所述的方法被選擇;并且將針對(duì)該層的輸出數(shù)據(jù)值轉(zhuǎn)換為針對(duì)該層的輸出數(shù)據(jù)值的定點(diǎn)數(shù)格式。18.根據(jù)權(quán)利要求17所述的DNN的硬件實(shí)現(xiàn)裝置,其中,針對(duì)該層的輸入數(shù)據(jù)值的定點(diǎn)數(shù)格式不同于針對(duì)該層的輸出數(shù)據(jù)值的定點(diǎn)數(shù)格式。19.根據(jù)權(quán)利要求16所述的硬件實(shí)現(xiàn)裝置,其中,所述硬件邏輯還被配置為:接收針對(duì)該層的一組權(quán)重;接收指示針對(duì)該層的權(quán)重的定點(diǎn)數(shù)格式的信息,針對(duì)該層的權(quán)重的定點(diǎn)數(shù)格式已經(jīng)根據(jù)權(quán)利要求1至10中任一項(xiàng)所述的方法被選擇;基于針對(duì)該層的權(quán)重的定點(diǎn)數(shù)格式來解釋權(quán)重;并且根據(jù)經(jīng)解釋的權(quán)重來處理所述經(jīng)解釋的輸入數(shù)據(jù)值以生成針對(duì)該層的輸出數(shù)據(jù)值。20.一種在其上存儲(chǔ)有根據(jù)權(quán)利要求16所述的硬件實(shí)現(xiàn)裝置的計(jì)算機(jī)可讀描述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀描述在集成電路制造系統(tǒng)中處理時(shí),使得所述集成電路制造系統(tǒng)制造體現(xiàn)所述硬件實(shí)現(xiàn)的集成電路。4深度神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)的基于直方圖的每層數(shù)據(jù)格式選擇技術(shù)領(lǐng)域[0001]本發(fā)明涉及用于深度神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)的基于直方圖的每層數(shù)據(jù)格式選擇。背景技術(shù)[0002]深度神經(jīng)網(wǎng)絡(luò)(DNN)是可以用于機(jī)器學(xué)習(xí)應(yīng)用的一種人工神經(jīng)網(wǎng)絡(luò)。具體地,DNN可以用于信號(hào)處理應(yīng)用,包括圖像處理和計(jì)算機(jī)視覺應(yīng)用。[0003]DNN已經(jīng)在其中功率資源不是重要因素的應(yīng)用中被實(shí)現(xiàn)許多不同的技術(shù)領(lǐng)域,在這些領(lǐng)域中用于實(shí)現(xiàn)DNN的硬件資源的功耗、處理能力或硅面積是有限的。[0004]因此,需要實(shí)現(xiàn)被配置為以有效方式(即,以在操作時(shí)需要更少硅面積或更少處理能力的方式)實(shí)現(xiàn)DNN的硬件。此外,DNN可以以多種不同的方式被配置以用于各種不同的應(yīng)[0005]以下描述的實(shí)施例僅作為示例被提供,并且不限制解決深度神經(jīng)網(wǎng)絡(luò)的已知硬件實(shí)現(xiàn)的任意或所有缺點(diǎn)的實(shí)現(xiàn)方式。發(fā)明內(nèi)容[0006]本發(fā)明內(nèi)容被提供介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)的主題的范圍。[0007]本文描述的是一種選擇用于表示輸入至和/或輸出自深度神經(jīng)網(wǎng)絡(luò)(DNN)的一個(gè)層的一組值的定點(diǎn)數(shù)格式的基于直方圖的方法。該方法包括獲得表示該層的一組值的預(yù)期分布的直方圖,其中該直方圖的每個(gè)bin與頻率值相關(guān)聯(lián);根據(jù)多個(gè)可能的定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式來量化針對(duì)每個(gè)bin的浮點(diǎn)數(shù)格式的代表值;針對(duì)多個(gè)可能的定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式,基于直方圖的頻率值和針對(duì)每個(gè)bin的距離值來估計(jì)由量化產(chǎn)生的總量化誤差,該距離值基于針對(duì)該bin的代表值的量化;并且基于估計(jì)的總量化誤差來選擇用于表示該組值的定點(diǎn)數(shù)格式。[0008]第一方面提供了一種標(biāo)識(shí)用于表示輸入至和/或輸出自深度神經(jīng)網(wǎng)絡(luò)“DNN”的一個(gè)層的一組值的定點(diǎn)數(shù)格式以用于配置DNN的硬件實(shí)現(xiàn)的計(jì)算機(jī)實(shí)現(xiàn)的方法,方法包括:獲得表示該層的一組值的預(yù)期分布的直方圖,其中,直方圖的每個(gè)bin與頻率值相關(guān)聯(lián);針對(duì)多個(gè)定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式:根據(jù)定點(diǎn)數(shù)格式來量化針對(duì)每個(gè)bin的浮點(diǎn)數(shù)格式的代表值;并且基于針對(duì)每個(gè)bin的頻率值和距離值來估計(jì)與定點(diǎn)數(shù)格式相關(guān)聯(lián)的總量化誤差,距離值基于針對(duì)該bin的代表值的量化;以及選擇多個(gè)定點(diǎn)數(shù)格式中與最小估計(jì)總量化誤差相關(guān)聯(lián)的定點(diǎn)數(shù)格式作為用于表示該層的一組值的定點(diǎn)數(shù)格式。[0009]第二方面提供了一種用于標(biāo)識(shí)用于表示輸入至和/或輸出自深度神經(jīng)網(wǎng)絡(luò)“DNN”的一個(gè)層的一組值的定點(diǎn)數(shù)格式以用于配置DNN的硬件實(shí)現(xiàn)的基于計(jì)算的設(shè)備,基于計(jì)算的設(shè)備包括:至少一個(gè)處理器;以及存儲(chǔ)器,被耦合到至少一個(gè)處理器,存儲(chǔ)器包括:直方5讀代碼,在由至少一個(gè)處理器執(zhí)行時(shí),使得至少一個(gè)處理器執(zhí)行以下操作:針對(duì)多個(gè)定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式:根據(jù)定點(diǎn)數(shù)格式來量化針對(duì)每個(gè)bin的浮點(diǎn)格式的代表值;并且基于針對(duì)每個(gè)bin的頻率值和距離值來估計(jì)與定點(diǎn)數(shù)格式相關(guān)聯(lián)的總量化誤差,距離值基于針對(duì)該bin的代表值的量化;以及選擇多個(gè)定點(diǎn)數(shù)格式中與最小估計(jì)總量化誤差相關(guān)聯(lián)的定點(diǎn)數(shù)格式作為用于表示該層的一組值的定點(diǎn)數(shù)格式。接收DNN的一個(gè)層的輸入數(shù)據(jù)值;接收指示針對(duì)該層的輸入數(shù)據(jù)值的定點(diǎn)數(shù)格式的信息,針對(duì)該層的輸入數(shù)據(jù)值的定點(diǎn)數(shù)格式已經(jīng)根據(jù)第一方面的方法被選擇;基于針對(duì)該層的輸入數(shù)據(jù)值的定點(diǎn)數(shù)格式來解釋輸入數(shù)據(jù)值;以及根據(jù)該層來處理經(jīng)解釋的輸入數(shù)據(jù)值以生成針對(duì)該層的輸出數(shù)據(jù)值。[0011]DNN的硬件實(shí)現(xiàn)可以體現(xiàn)在集成電路上的硬件中??梢蕴峁┮环N在集成電路制造系統(tǒng)中制造硬件實(shí)現(xiàn)的方法??梢蕴峁┘呻娐范x數(shù)據(jù)集,該集成電路定義數(shù)據(jù)集在集成電路制造系統(tǒng)中處理時(shí),配置系統(tǒng)以制造DNN的硬件實(shí)現(xiàn)??梢蕴峁┮环N在其上存儲(chǔ)有DNN的硬件實(shí)現(xiàn)的計(jì)算機(jī)可讀描述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該DNN的硬件實(shí)現(xiàn)的計(jì)算機(jī)可讀描述在集成電路制造系統(tǒng)中處理時(shí),使得集成電路制造系統(tǒng)制造體現(xiàn)DNN的硬件實(shí)現(xiàn)的集成電路。[0012]可以提供一種集成電路制造系統(tǒng),包括:非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),在其上存儲(chǔ)有DNN的硬件實(shí)現(xiàn)的計(jì)算機(jī)可讀描述;布局處理系統(tǒng),被配置為處理計(jì)算機(jī)可讀描述以便生成體現(xiàn)DNN的硬件實(shí)現(xiàn)的集成電路的電路布局描述;以及集成電路生成系統(tǒng),被配置為根據(jù)[0013]可以提供用于執(zhí)行如本文描述的方法的計(jì)算機(jī)程序代碼??梢蕴峁┰谄渖洗鎯?chǔ)有計(jì)算機(jī)可讀指令的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀指令在計(jì)算機(jī)系統(tǒng)處執(zhí)行時(shí),使得計(jì)算機(jī)系統(tǒng)執(zhí)行如本文描述的方法。[0014]如技術(shù)人員顯而易見的,上述特征可以被適當(dāng)?shù)亟M合,并且可以與本文描述的示例的任何方面進(jìn)行組合。附圖說明[0015]現(xiàn)在將參考附圖詳細(xì)描述實(shí)施例,其中:[0016]圖1是示例深度神經(jīng)網(wǎng)絡(luò)(DNN)的示意圖;[0018]圖3是示出數(shù)據(jù)輸入至和輸出自DNN的一個(gè)層的示意圖;[0019]圖4是從多個(gè)可能的定點(diǎn)數(shù)格式中標(biāo)識(shí)用于表示輸入至或輸出自DNN的一個(gè)層的一組值的適當(dāng)定點(diǎn)數(shù)格式的示例基于直方圖的方法的流程圖;[0020]圖5是示例直方圖的示意圖;[0021]圖6是其中直方圖的每個(gè)bin的代表值已經(jīng)被量化的示例直方圖的示意圖;[0022]圖7是示例加權(quán)函數(shù)的示意圖;[0023]圖8是具有ImageNet驗(yàn)證數(shù)據(jù)集的AlexNetDNN的尾數(shù)位長(zhǎng)度與前1名的(Top-1)分類精度的關(guān)系圖,其中針對(duì)權(quán)重的指數(shù)是根據(jù)許多不同方法選擇的;6[0024]圖9是具有ImageNet驗(yàn)證數(shù)據(jù)集的AlexNetDNN的尾數(shù)位長(zhǎng)度與前5名的(Top-5)分類精度的關(guān)系圖,其中針對(duì)權(quán)重的指數(shù)是根據(jù)許多不同方法選擇的;[0025]圖10是具有ImageNet驗(yàn)證數(shù)據(jù)集的AlexNetDNN的尾數(shù)位長(zhǎng)度與前1名的分類精度的關(guān)系圖,其中針對(duì)權(quán)重和輸入數(shù)據(jù)值的指數(shù)是根據(jù)許多不同方法選擇的;[0026]圖11是具有ImageNet驗(yàn)證數(shù)據(jù)集的AlexNetDNN的尾數(shù)位長(zhǎng)度與前5名的分類精度的關(guān)系圖,其中針對(duì)權(quán)重和輸入數(shù)據(jù)值的指數(shù)是根據(jù)許多不同方法選擇的;[0027]圖12是具有ImageNet驗(yàn)證數(shù)據(jù)集的GoogLeNetDNN的尾數(shù)位長(zhǎng)度與前1名的分類精度的關(guān)系圖,其中針對(duì)權(quán)重的指數(shù)是根據(jù)許多不同方法選擇的;[0028]圖13是具有ImageNet驗(yàn)證數(shù)據(jù)集的GoogLeNetDNN的尾數(shù)位長(zhǎng)度與前5名的分類精度的關(guān)系圖,其中針對(duì)權(quán)重的指數(shù)是根據(jù)許多不同方法選擇的;[0029]圖14是具有ImageNet驗(yàn)證數(shù)據(jù)集的GoogLeNetDNN的尾數(shù)位長(zhǎng)度與前1名的分類精度的關(guān)系圖,其中針對(duì)權(quán)重和輸入數(shù)據(jù)值的指數(shù)是根據(jù)許多不同方法選擇的;[0030]圖15是具有ImageNet驗(yàn)證數(shù)據(jù)集的GoogLeNetDNN的尾數(shù)位長(zhǎng)度與前5名的分類精度的關(guān)系圖,其中針對(duì)權(quán)重和輸入數(shù)據(jù)值的指數(shù)是根據(jù)許多不同方法選擇的;[0032]圖17是示例基于計(jì)算的設(shè)備的框圖;[0033]圖18是其中實(shí)現(xiàn)DNN的硬件實(shí)現(xiàn)的示例[0034]圖19是用于生成體現(xiàn)如本文描述的DNN的硬件實(shí)現(xiàn)的集成電路的示例集成電路制造系統(tǒng)的框圖。其他形狀)代表邊界的一個(gè)示例。在一些示例中,可以將一個(gè)元件設(shè)計(jì)為多個(gè)元件,或可以將多個(gè)元件設(shè)計(jì)為一個(gè)元件。在整個(gè)附圖中使用共同的附圖標(biāo)記來適當(dāng)?shù)乇硎绢愃频奶鼐唧w實(shí)施方式[0036]通過示例的方式呈現(xiàn)以下描述以使得本領(lǐng)域技術(shù)人員能夠制造和使用本發(fā)明。本發(fā)明不限于本文描述的實(shí)施例,并且所公開的實(shí)施例的各種修改對(duì)于本領(lǐng)域技術(shù)人員來說是顯而易見的。僅通過示例的方式描述了實(shí)施例。[0037]深度神經(jīng)網(wǎng)絡(luò)(DNN)是一種人工神經(jīng)網(wǎng)絡(luò),包括多個(gè)互連層,使得DNN能夠執(zhí)行信號(hào)處理任務(wù),包括但不限于計(jì)算機(jī)視覺任務(wù)。圖1示出了包括多個(gè)層102-1、102-2、102-3的示例DNN100。每個(gè)層102-1、102-2、102-3接收輸入數(shù)據(jù),根輸出數(shù)據(jù)。輸出數(shù)據(jù)作為輸入數(shù)據(jù)提供給另一層,或作為DNN的最終輸出數(shù)據(jù)輸出。圖1的DNN100中,第一層102-1接收進(jìn)入DNN100的原始輸入數(shù)據(jù)104,并且根據(jù)第一層102-1來處理輸入數(shù)據(jù)以產(chǎn)生輸出數(shù)據(jù)。第一層102-1的輸出數(shù)據(jù)成為第二層102-2的輸入數(shù)據(jù),第二層102-2根據(jù)第二層102-2來處理輸入數(shù)據(jù)以產(chǎn)生輸出數(shù)據(jù)。第二層102-2的輸出數(shù)據(jù)成為第三層102-3的輸入數(shù)據(jù),第三層102-3根據(jù)第三層102-3來處理輸入數(shù)據(jù)以產(chǎn)生輸出[0038]對(duì)進(jìn)入層的輸入數(shù)據(jù)執(zhí)行的處理取決于層的類型。例如,DNN的每個(gè)層可以是多種7并且可能存在其他DNN層類型。[0039]針對(duì)卷積層,通過使用與該層相關(guān)聯(lián)的權(quán)重對(duì)輸入數(shù)據(jù)進(jìn)行卷積來處理輸入數(shù)據(jù)。具體地,每個(gè)卷積層與多個(gè)權(quán)重w?!瓀g(其也可以稱被分組以形成或定義一個(gè)或多個(gè)濾波器(其也可以稱為核),并且每個(gè)濾波器可以與偏移偏[0040]參考圖2,圖2示出了DNN中使用的數(shù)據(jù)格式的示例概述。如圖2所示,DNN中使用的數(shù)據(jù)可以被布置為P個(gè)平面的數(shù)據(jù),其中每個(gè)平面具有維度x×y。DNN可以包括一個(gè)或多個(gè)卷積層,每個(gè)卷積層與各自包括多個(gè)權(quán)重的多個(gè)濾波器相關(guān)聯(lián)。每個(gè)濾波器具有維度m×n×P(即,每個(gè)濾波器包括一組m×n×P權(quán)重w),并且根據(jù)在方向s和t上跨若干步的卷積運(yùn)算被應(yīng)用于輸入數(shù)據(jù),如圖2所示。濾波器的數(shù)量和每個(gè)濾波器的權(quán)重的數(shù)量可以在卷積層之間變化。卷積神經(jīng)網(wǎng)絡(luò)(CNN)(該CNN是針對(duì)圖像識(shí)別和分類有效的特定類型的DNN)通常包括多個(gè)卷積層。[0041]激活層(其通常(但不一定)跟隨卷積層)對(duì)進(jìn)入該層的輸入數(shù)據(jù)執(zhí)行一個(gè)或多個(gè)激活功能。激活函數(shù)采用單個(gè)數(shù)字并且對(duì)其執(zhí)行某一非線性數(shù)學(xué)運(yùn)算。在一些示例中,激活層可以通過實(shí)現(xiàn)ReLU函數(shù)(即,f(x)=max(0,x))來用作修正線性單元(ReLU),或通過實(shí)現(xiàn)PReLU函數(shù)來用作參數(shù)修正線性單元(PReLU)。[0042]歸一化層被配置為對(duì)輸入數(shù)據(jù)執(zhí)行歸一化函數(shù)(例如,局部響應(yīng)歸一化(LRN)函數(shù))。池化層(其通常(但不一定)插入連續(xù)卷積層之間)執(zhí)行池化函數(shù)(例如,最大或平均函數(shù))以匯總輸入數(shù)據(jù)的子集。因此,池化層的目的是減小表示的空間大小以減少網(wǎng)絡(luò)中的參數(shù)和計(jì)算的數(shù)量,并且因此還控制過度擬合。[0043]全連接層(其通常(但不一定)跟隨多個(gè)卷積層和池化層)采用一組三維輸入數(shù)據(jù)值并且輸出N維向量。在DNN用于分類的情況下,N是類的數(shù)量,向量中的每個(gè)值表示某個(gè)類的概率。N維向量是通過一組權(quán)重的矩陣乘法(可選地跟隨有偏置偏移)來生成的。因此,全連接層接收一組權(quán)重和/或偏置。[0044]因此,如圖3所示,DNN的每個(gè)層302接收輸入數(shù)據(jù)值并且生成輸出數(shù)據(jù)值;并且一些層(例如,卷積層和全連接層)也接收權(quán)重和/或偏置。[0045]DNN的硬件實(shí)現(xiàn)包括被配置為根據(jù)DNN的層來處理進(jìn)入DNN的輸入數(shù)據(jù)的硬件邏輯。具體地,DNN的硬件實(shí)現(xiàn)包括被配置為根據(jù)每個(gè)層來處理進(jìn)入該層的輸入數(shù)據(jù)并且生成針對(duì)該層的輸出數(shù)據(jù)(該輸出數(shù)據(jù)變?yōu)檫M(jìn)入另一層的輸入數(shù)據(jù),或變?yōu)镈NN的輸出)的硬件邏輯。例如,如果DNN包括卷積層并且卷積層之后跟隨有激活層,則該DNN的硬件實(shí)現(xiàn)包括被配置為使用與該卷積層相關(guān)聯(lián)的權(quán)重和偏置來對(duì)進(jìn)入DNN的輸入數(shù)據(jù)執(zhí)行卷積以產(chǎn)生針對(duì)卷積層的輸出數(shù)據(jù)的硬件邏輯,以及被配置為將激活函數(shù)應(yīng)用于進(jìn)入激活層的輸入數(shù)據(jù)[0046]如本領(lǐng)域技術(shù)人員所知,針對(duì)用于處理一組值的硬件,每個(gè)值用數(shù)字格式進(jìn)行表示。兩種最適當(dāng)?shù)臄?shù)字格式是定點(diǎn)數(shù)格式和浮點(diǎn)數(shù)格式。如本領(lǐng)域技術(shù)人員所知,定點(diǎn)數(shù)格式在基點(diǎn)(例如,十進(jìn)制小數(shù)點(diǎn)或二進(jìn)制小數(shù)點(diǎn))之后具有固定的位數(shù)。相反,浮點(diǎn)數(shù)格式?jīng)]浮點(diǎn)數(shù)格式表示輸入至和輸出自DNN的層的值可以允許產(chǎn)生更準(zhǔn)確或精確的輸出數(shù)據(jù),但8是在硬件中用浮點(diǎn)數(shù)格式處理數(shù)字是復(fù)雜的,與用定點(diǎn)數(shù)格式處理值的硬件相比,這往往會(huì)增加硬件的硅面積和復(fù)雜性。因此,硬件實(shí)現(xiàn)可以被配置為用定點(diǎn)數(shù)格式表示輸入至和/[0047]常見定點(diǎn)數(shù)格式是Q格式,其指定預(yù)定數(shù)量的整數(shù)位a和小數(shù)位b。因此,數(shù)字可以表示為Qa.b,其需要總共a+b+1位(包括符號(hào)位)。示例Q格式在下面的表1中示出。描述示例0個(gè)整數(shù)位和8個(gè)小數(shù)位[0050]然而,Q格式的缺點(diǎn)在于,用于表示數(shù)字的一些位可能被認(rèn)為是冗余的。在示例中,數(shù)字范圍[-0.125,0.125]將被表示為3位的精度。該示例范圍和精度所需的Q格式為Q0.5。然而,如果我們假設(shè)值的范圍是預(yù)先知道的,則該數(shù)字的前兩位將永遠(yuǎn)不會(huì)用于確定用Q格式表示的值。例如,表示的前兩位對(duì)最終數(shù)字沒有貢獻(xiàn),因?yàn)樗鼈兎謩e代表0.5和0.25,由此超出了所需范圍。然而,它們用于指示第三位位置的值(即,0.125以及歸因于相對(duì)位位置的其他值)。因此,上述Q格式是用于在DNN的硬件實(shí)現(xiàn)中使用的低效定點(diǎn)數(shù)格式,因?yàn)橐恍┪豢赡懿粋鬟_(dá)有用信息。[0051]因此,在一些情況下,代替使用Q格式,一些硬件實(shí)現(xiàn)可以被配置為針對(duì)輸入至或輸出自DNN的層的值使用以下定點(diǎn)數(shù)格式,其中每個(gè)值x由固定整數(shù)指數(shù)e和n位尾數(shù)m來表以用二進(jìn)制補(bǔ)碼格式表示,而在其他情況下,可以使用其他有符號(hào)或無符號(hào)整數(shù)格式。[0052]為了減小DNN的硬件實(shí)現(xiàn)的大小并且提高效率,硬件實(shí)現(xiàn)可以被配置為用以下定點(diǎn)數(shù)格式來表示輸入至或輸出自DNN的層的值,該定點(diǎn)數(shù)格式使用能夠表示每組值的預(yù)期或期望范圍的最小數(shù)量的位。由于不同組的值(例如,輸入數(shù)據(jù)重)的范圍可能在層內(nèi)以及層之間變化,因此在能夠使用可以在層內(nèi)以及層之間變化的定點(diǎn)數(shù)格式來表示輸入數(shù)據(jù)值、輸出數(shù)據(jù)值、DNN。例如,硬件實(shí)現(xiàn)能夠通過使用包括指數(shù)為2和尾數(shù)位長(zhǎng)度為6的定點(diǎn)數(shù)格式來表示針對(duì)第一層的輸入數(shù)據(jù)值,使用包括指數(shù)為3和尾數(shù)位長(zhǎng)度為12的定點(diǎn)數(shù)格式來表示第一層的權(quán)重,并且使用包括指數(shù)為4和尾數(shù)位長(zhǎng)度為6的定點(diǎn)數(shù)格式來表示針對(duì)第二層的輸入數(shù)據(jù)一個(gè)層的多組值的(例如,由指數(shù)和尾數(shù)位長(zhǎng)度定義的)定點(diǎn)數(shù)格式以允許硬件實(shí)現(xiàn)有效地處理該層。[0053]用于選擇用于表示輸入至或輸出自DNN的一個(gè)層的一組值的定點(diǎn)數(shù)格式的一種簡(jiǎn)單方法(本文可以稱為全范圍方法)可以包括針對(duì)給定尾數(shù)位深度n(或給定指數(shù)e)來選擇覆蓋針對(duì)一個(gè)層的預(yù)期一組值x的范圍的最小指數(shù)e(或最小尾數(shù)位深度n)。例如,針對(duì)給定尾數(shù)位深度n,可以根據(jù)等式(1)選擇指數(shù)e,使得該指數(shù)e覆蓋x的整個(gè)范圍,其中[.]是向上取整函數(shù):[0055]然而,這種方法對(duì)異常值很敏感。具體而言,在預(yù)期一組值x具有異常值的情況下,9通過選擇最小化由對(duì)一組值進(jìn)行量化而引入的總誤差的定點(diǎn)數(shù)格式(而不是選擇覆蓋針對(duì)來選擇用于表示輸入至或輸出自DNN的一個(gè)層的一組值的定點(diǎn)數(shù)格式的基于直方圖的方的每個(gè)bin與頻率值相關(guān)聯(lián);根據(jù)多個(gè)可能的定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式來量化每個(gè)擇與最小估計(jì)總量化誤差相關(guān)聯(lián)的定點(diǎn)數(shù)格式作為用于表示該層的一組值的最佳定點(diǎn)數(shù)[0057]一旦選擇了用于表示輸入至和/或輸出自一個(gè)層的一組值的定點(diǎn)數(shù)格式,該選擇選擇用于表示輸入至或輸出自DNN的多個(gè)層的多組值的定點(diǎn)數(shù)格式時(shí)產(chǎn)生更準(zhǔn)確的分類。[0059]現(xiàn)在參考圖4,圖4示出了用于確定能夠被用來配置DNN的硬件實(shí)現(xiàn)的用于表示輸指令的計(jì)算機(jī)可讀介質(zhì)(例如,存儲(chǔ)器),該計(jì)算機(jī)可讀介質(zhì)在由基于計(jì)算的設(shè)備的處理器收權(quán)重和/或偏置。輸入至或輸出自一個(gè)層的一組值可以是該層的輸入數(shù)據(jù)值的全部或一[0061]通過將一組值中的期望值的范圍劃分為區(qū)間或bin并且計(jì)算有多少期望值落入每每個(gè)bin(Bin)與指示該組值中落入該bin(Bin)的值的預(yù)期數(shù)量的頻率值(F?)相關(guān)聯(lián)。例如,圖5示出了具有五個(gè)bin(Bin?,Bin,Bin?,Bin?,Bin)的示例直方圖H(x),其中每個(gè)bin與頻率值(F?,F?,F?,F?和F?)相關(guān)聯(lián)。[0062]優(yōu)選地,bin的密度至少與多個(gè)可能的定點(diǎn)數(shù)格式的量化水平的最大密度一樣高。例如,具有尾數(shù)位長(zhǎng)度為4的定點(diǎn)數(shù)格式具有16個(gè)量化水平,因此優(yōu)選地存在至少16個(gè)bin。類似地,具有尾數(shù)位長(zhǎng)度為8的定點(diǎn)數(shù)格式具有256個(gè)量化水平,因此優(yōu)選地存在至少256個(gè)bin。用于確定總量化誤差的計(jì)算時(shí)間隨著bin的數(shù)量而增加,因此在計(jì)算時(shí)間和精度之間存在折衷。測(cè)試表明,大約1000個(gè)bin可以獲得良好的結(jié)[0063]針對(duì)DNN的一個(gè)層的實(shí)際的一組輸入數(shù)據(jù)值通常基于進(jìn)入DNN的輸入而變化,并且通常不能提前精確地知道。然而,可以通過例如通過DNN運(yùn)行一組訓(xùn)練數(shù)據(jù)或典型輸入數(shù)據(jù)集的已知樣本,記錄進(jìn)入每個(gè)層的可以被用來生成針對(duì)該層的預(yù)期輸入數(shù)據(jù)值的直方圖的輸入數(shù)據(jù)值,來確定輸入數(shù)據(jù)值的預(yù)期范圍和該范圍內(nèi)的分布??梢杂妙愃频姆绞絹泶_定針對(duì)一個(gè)層的輸出數(shù)據(jù)值的預(yù)期范圍和分布。[0064]相反,通常在訓(xùn)練DNN期間事先確定針對(duì)一個(gè)層的實(shí)際的一組權(quán)重和偏置。因此,針對(duì)一個(gè)層的權(quán)重或偏置的直方圖可以直接根據(jù)將用于該層的實(shí)際的一組權(quán)重或偏置來[0065]一旦獲得表示針對(duì)一個(gè)層的一組值的預(yù)期分布的直方圖(H(x)),方法400就進(jìn)行[0066]在框404處,選擇多個(gè)可能的定點(diǎn)數(shù)格式中的可能的定點(diǎn)數(shù)格式用于分析。多個(gè)可能的定點(diǎn)數(shù)格式包括可以被用來表示該層的該組值的多個(gè)不同的定點(diǎn)數(shù)格式。[0067]在一些情況下,每個(gè)可能的定點(diǎn)數(shù)格式由指數(shù)e和尾數(shù)位長(zhǎng)度n來定義,或包括指數(shù)e和尾數(shù)位長(zhǎng)度n。在一些情況下,方法400可以被用來標(biāo)識(shí)針對(duì)特定尾數(shù)位長(zhǎng)度n的最佳指數(shù)e。在這些情況下,多個(gè)可能的定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式可以包括相同的尾數(shù)位長(zhǎng)度n,但是包括不同的指數(shù)e。在其他情況下,方法400可以被用來標(biāo)識(shí)針對(duì)特定指數(shù)e的最佳尾數(shù)位長(zhǎng)度n。在這些情況下,多個(gè)可能的定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式可以包括相同的指數(shù)e,但是包括不同的尾數(shù)位長(zhǎng)度n。[0068]在一些情況下,多個(gè)可能的定點(diǎn)數(shù)格式可以包括所有可能的定點(diǎn)數(shù)格式。例如,在指數(shù)固定的情況下,多個(gè)可能的定點(diǎn)數(shù)格式可以包括針對(duì)每個(gè)可能的尾數(shù)位長(zhǎng)度n與固定指數(shù)e相組合的可能的定點(diǎn)數(shù)格式。在其他情況下,多個(gè)可能的定點(diǎn)數(shù)格式可以包括所有可能的定點(diǎn)數(shù)格式的子集。子集可以包括例如,基于一個(gè)或多個(gè)標(biāo)準(zhǔn)更可能是最佳定點(diǎn)數(shù)格式的可能的定點(diǎn)數(shù)格式。例如,在尾數(shù)位長(zhǎng)度固定的情況下,多個(gè)可能的定點(diǎn)數(shù)格式可以包括具有特定尾數(shù)位長(zhǎng)度n與僅可能的指數(shù)e的子集相組合的可能的定點(diǎn)數(shù)格式。一旦已經(jīng)選擇了可能的定點(diǎn)數(shù)格式,方法就進(jìn)行到框406。[0069]在框406處,根據(jù)在框404中選擇的可能的定點(diǎn)數(shù)格式來量化直方圖H(x)的每個(gè)bin的代表值(x:)。通過僅對(duì)每個(gè)bin的一個(gè)值進(jìn)行量化(與對(duì)落入該bin內(nèi)的所有值進(jìn)行量化相反),可以高效地執(zhí)行方法400。[0070]bin的代表值(x:)是落入bin內(nèi)的值。在一些情況下,如圖5所示,每個(gè)bin的代表值11[0071]針對(duì)每個(gè)bin的代表值(x)是浮點(diǎn)數(shù)格式。如上所述,其中定點(diǎn)數(shù)格式在基點(diǎn)(例如,十進(jìn)制小數(shù)點(diǎn)或二進(jìn)制小數(shù)點(diǎn))之后具有固定的位數(shù),浮點(diǎn)數(shù)表示沒有固定的基點(diǎn)(即,[0072]最常見的浮點(diǎn)數(shù)格式是針對(duì)浮點(diǎn)運(yùn)算的電氣和電子工程師協(xié)會(huì)(IEEE)標(biāo)準(zhǔn)針對(duì)固定的整數(shù)偏置,解釋該三個(gè)數(shù)字(s,exp,mant),如等式(2)所示:[0074]IEEE-754定義了表2中所示的針對(duì)具有不同精度的浮點(diǎn)數(shù)的四種基本格式。具體類型名稱符號(hào)寬度指數(shù)寬度尾數(shù)寬度半精度15單精度18雙精度1四精度1[0077]代表值可以是IEEE浮點(diǎn)數(shù)格式中的一個(gè)浮點(diǎn)數(shù)格式,或可以是另一浮點(diǎn)數(shù)格式。[0078]如本領(lǐng)域技術(shù)人員所知,量化是將數(shù)字從較高精度格式轉(zhuǎn)換為較低精度格式的過程。對(duì)較高精度格式的數(shù)字進(jìn)行量化通常包括使用較低表示數(shù)字來表示較高精度格式的數(shù)字,其中較低精度格數(shù)字由特定取整模式(例如但不限于,向最接近整數(shù)取整(RTN)、向零取整(RTZ)、向最接近偶數(shù)取整(RTE)、向正無窮大取整(RTP)、以及向負(fù)無窮大取整(RTN))來定義。例如,根據(jù)4位二進(jìn)制數(shù)格式對(duì)數(shù)字1.2進(jìn)行量化可以包括用二進(jìn)制數(shù)“0001”來表示數(shù)字1.2(該二進(jìn)制數(shù)定點(diǎn)數(shù)格式f的直方圖(H(x))的bin的代表值(x;)的量化版本在本文中表示為Q(x,f)。下面詳細(xì)描述根據(jù)定點(diǎn)數(shù)格式量化浮點(diǎn)數(shù)格式的值的示例方法。然而,可以使用任意適當(dāng)?shù)姆椒ǜ鶕?jù)可能的定點(diǎn)數(shù)格式來量化直方圖(H(x))的bin的代表值(x;)。[0079]一旦已經(jīng)根據(jù)在框404中選擇的可能的定點(diǎn)數(shù)格式量化了直方圖的每個(gè)bin的代表值(x;),方法400就進(jìn)行到框408。[0080]在框408處,基于直方圖(H(x))的頻率值(F)和針對(duì)每個(gè)bin的距離值,來估計(jì)由根據(jù)可能的定點(diǎn)數(shù)格式(f)對(duì)該組值進(jìn)行量化而引起的總量化誤差(T(f)),該距離值基于該bin的代表值的量化。[0081]具體地,直方圖(H(x))的頻率值(F?)指示該組值內(nèi)有多少值落入每個(gè)bin內(nèi)。因此,如果bin中的每個(gè)值的量化誤差由距離值近似(該距離值表示浮點(diǎn)數(shù)格式的該bin的代表值與可能的定點(diǎn)數(shù)格式的該bin的代表值之間的差(換句話說,距離值表示代表值的量化誤差)),則由根據(jù)可能的定點(diǎn)數(shù)格式(f)對(duì)該組值進(jìn)行量化而引起的總量化誤差T(f)可以通過對(duì)每個(gè)bin的頻率值(F?)與每個(gè)bin的距離值E。(x:,f)的乘積進(jìn)行求和來估計(jì),如公式[0083]最小化由根據(jù)定點(diǎn)數(shù)格式對(duì)該組值進(jìn)行量化而引起的量化誤差將最小化該層的數(shù)據(jù)向量d并且產(chǎn)生輸出a=wd的卷積層或全連接層,其中E(wk,f)是由指數(shù)e和尾數(shù)位長(zhǎng)[0085]將權(quán)重w和輸入數(shù)據(jù)值d作為隨機(jī)變量(分別用大寫字母W和D表示)處理,假設(shè)W獨(dú)離值(由此最小化量化誤差),可以最小化總量化誤差。與權(quán)重相關(guān)聯(lián)的總量化誤差在等式一組可能的尾數(shù)位數(shù)中最小化等式(8)的[0096]特定定點(diǎn)數(shù)格式f的一個(gè)bin的代表值(x;)的距離值(E?(x:,f))可以用(考慮一組值中的值在量化時(shí)從其原始浮點(diǎn)數(shù)格式移動(dòng)的距離的)任意適當(dāng)?shù)姆绞絹碛?jì)算。在一些情(x))的第二bin(Bin?)的代表值x?被量化為Q(x?,f),則根據(jù)等式(11),針對(duì)代表值x?的距離值E(x?,f)是x?-Q(x?,f)。[0099]測(cè)試表明,一些層的輸出誤差往往具有高斯分布。由于已知在存在高斯誤差的情況下,平方和產(chǎn)生更準(zhǔn)確的估計(jì),因此當(dāng)代表值的距離值被計(jì)算為浮點(diǎn)數(shù)格式的代表值與代表值的量化版本之間的平方差時(shí),可以確定總量化誤差的更準(zhǔn)確估計(jì),如等式(12)所示:[0101]在這種情況下,針對(duì)圖5和圖6的示例直方圖H(x)的定點(diǎn)數(shù)格式f的總量化誤差可以被估計(jì)為(F?*(x?-Q(x?,f))2)+(F?*(x?-Q(x?,f))2)+(F?*(x?-Q(x?,f))2)+(F?*(x?-Q(x?,f))2)+(F?*(x?-Q(x?,f))2)。一旦已經(jīng)估計(jì)了與可能的定點(diǎn)數(shù)格式相關(guān)聯(lián)的總量化誤差,方法400就進(jìn)行到框410。[0102]在框410處,確定是否存在尚未確定總量化誤差的估計(jì)的任意其他可能的定點(diǎn)數(shù)格式。如果確定在多個(gè)可能的定點(diǎn)數(shù)格式中存在尚未確定總量化誤差的估計(jì)的至少一個(gè)可能的定點(diǎn)數(shù)格式,則方法400返回到框404.然而,如果確定已經(jīng)針對(duì)多個(gè)可能的定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式確定了總量化誤差的估計(jì),則方法400進(jìn)行到框412,其中選擇一個(gè)可能的定點(diǎn)數(shù)格式作為期望的或最優(yōu)的定點(diǎn)數(shù)格式以表示針對(duì)該層的該組值。[0103]在框412處,基于與可能的定點(diǎn)數(shù)格式相關(guān)聯(lián)的估計(jì)總量化誤差,來選擇多個(gè)可能的定點(diǎn)數(shù)格式中的一個(gè)定點(diǎn)數(shù)格式作為用于表示該層的該組值的期望的或最優(yōu)的定點(diǎn)數(shù)格式。在一些情況下,選擇與最低估計(jì)總量化誤差相關(guān)聯(lián)的可能的定點(diǎn)數(shù)格式作為用于表示該層的該組值的定點(diǎn)數(shù)格式。但是,在其他情況下,可以使用其他標(biāo)準(zhǔn)來選擇定點(diǎn)數(shù)格式中的一個(gè)定點(diǎn)數(shù)格式。[0104]雖然在圖4的示例方法400中,根據(jù)多個(gè)可能的定點(diǎn)數(shù)格式中的每個(gè)定點(diǎn)數(shù)格式對(duì)每個(gè)bin的單個(gè)代表值進(jìn)行量化,并且量化的代表值的距離值被用來估計(jì)每個(gè)可能的定點(diǎn)數(shù)格式的總量化誤差,但是在其他示例中,可以量化一個(gè)或多個(gè)bin的多個(gè)代表值。在這些情況下,可以使用針對(duì)一個(gè)或多個(gè)bin中的每個(gè)bin的多個(gè)代表值的距離值的組合(例如,平均或平均值)來估計(jì)每個(gè)可能的定點(diǎn)數(shù)格式的總量化誤差。[0105]一旦已經(jīng)根據(jù)圖4的方法400確定了用于表示一個(gè)層的一組值的定點(diǎn)數(shù)格式,標(biāo)識(shí)的定點(diǎn)數(shù)格式可以被用來配置DNN的硬件實(shí)現(xiàn)。例如,標(biāo)識(shí)的定點(diǎn)數(shù)格式可以被用來配置DNN以期望用標(biāo)識(shí)的格式來接收輸入數(shù)據(jù)值或權(quán)重。這可以允許硬件實(shí)現(xiàn)更有效地處理該層的輸入數(shù)據(jù)。在另一示例中,針對(duì)一個(gè)層的標(biāo)識(shí)的定點(diǎn)數(shù)格式可以被用來將DNN配置為,在該DNN沒有接收到標(biāo)識(shí)的定點(diǎn)數(shù)格式的針對(duì)該層的輸入數(shù)據(jù)值或權(quán)重時(shí),將接收到的輸入數(shù)據(jù)值或權(quán)重轉(zhuǎn)換為標(biāo)識(shí)的定點(diǎn)數(shù)格式,以允許硬件實(shí)現(xiàn)更有效地處理該層的輸入數(shù)據(jù)值或權(quán)重。在又一示例中,標(biāo)識(shí)的定點(diǎn)數(shù)格式可以被用來將硬件實(shí)現(xiàn)配置為,將饋送到該層的另一層的輸出數(shù)據(jù)轉(zhuǎn)換為標(biāo)識(shí)的定點(diǎn)數(shù)格式,以便用標(biāo)識(shí)的定點(diǎn)數(shù)格式將該另一層的輸出數(shù)據(jù)提供給該層。下面參考圖16描述DNN的示例硬件實(shí)現(xiàn)以及可以如何使用標(biāo)識(shí)的格式來配置硬件實(shí)現(xiàn)。[0106]圖4的方法400可以被用來確定用于表示輸入至或輸出自DNN的任意一個(gè)層的任意一組值的適當(dāng)定點(diǎn)數(shù)格式。例如,圖4的方法400可以被用來確定用于表示DNN的任意一個(gè)層的輸入數(shù)據(jù)值、輸出數(shù)據(jù)值、權(quán)重或偏置的適當(dāng)定點(diǎn)數(shù)格式。方法400可以針對(duì)不同層的相同類型的值標(biāo)識(shí)不同的定點(diǎn)數(shù)格式。例如,方法400可以標(biāo)識(shí)一個(gè)定點(diǎn)數(shù)格式以用于表示一個(gè)層的輸入數(shù)據(jù)值,并且標(biāo)識(shí)不同的定點(diǎn)數(shù)格式以用于表示另一層的輸入數(shù)據(jù)值。硬件實(shí)現(xiàn)能夠針對(duì)不同的濾波器或不同的濾波器組使用不同的定點(diǎn)數(shù)格式。在這些情況部分的適當(dāng)定點(diǎn)數(shù)格式。的更適當(dāng)?shù)臋?quán)衡可以更加重視作為異常值的代表值(例如,落在定點(diǎn)數(shù)格式的可表示范圍定定點(diǎn)數(shù)格式表示的值的范圍之外的代表值相關(guān)聯(lián)的誤差被賦予更高的權(quán)重(相比于與落在可由特定定點(diǎn)數(shù)格式表示的值的范圍之內(nèi)的代表值相關(guān)聯(lián)的量化誤差)。這鼓勵(lì)優(yōu)化算Xin定義的)可表示范圍之外的代表值(相對(duì)于被賦予落在定點(diǎn)數(shù)格式的可表示范圍之內(nèi)的的代表值并且將線性增加的權(quán)重應(yīng)用于落在定點(diǎn)數(shù)格式的可表示范圍之外的代表值的加[0115]測(cè)試表明γ=20在一些情況下效果很好。常數(shù)c被選擇以確保一組值中的量化值(即,落在定點(diǎn)數(shù)格式的可表示范圍之內(nèi)的值)與該組值中的飽和值(即,落在定點(diǎn)數(shù)格式的可表示范圍之外的值)之間的連續(xù)性。測(cè)試表明c=1-γ效果很好。對(duì)于本領(lǐng)域技術(shù)人員顯而[0116]浮點(diǎn)數(shù)格式到定點(diǎn)數(shù)格式轉(zhuǎn)換[0117]如上所述,在圖4的方法400的框406處,直方圖(H(x))的bin的代表性輸入值(x;)從浮點(diǎn)數(shù)格式被量化到可能的定點(diǎn)數(shù)格式。等式(15)給出了用于將浮點(diǎn)數(shù)格式的值x量化為定點(diǎn)數(shù)格式的值Q(x,f)的示例公式,其中Xm是定點(diǎn)數(shù)格式中的最大可表示數(shù),X.n是定點(diǎn)數(shù)格式中的最小可表示數(shù),并且RND(x;)是取整函數(shù):[0119]等式(15)中示出的公式將浮點(diǎn)數(shù)格式的輸入數(shù)據(jù)值或權(quán)重量化為定點(diǎn)數(shù)格式中最接近的可用可表示數(shù)字,其中基于“最接近的”可用可表示數(shù)字基于取整函數(shù)RND被確定。取整函數(shù)RND可以是例如向零取整(RTZ)和向最接近偶數(shù)取整(RTE)中的一個(gè)。由于定點(diǎn)數(shù)格式的代表值相對(duì)于原始浮點(diǎn)數(shù)格式可能具有降低的精度,因此可能出現(xiàn)量化誤差。測(cè)試結(jié)果[0120]現(xiàn)在參考圖8至圖15,圖8至圖15示出了當(dāng)根據(jù)不同的方法選擇針對(duì)不同的層的權(quán)重的指數(shù)時(shí)的示例DNN的分類精度,該不同的方法包括上面針對(duì)等式(1)的全范圍方法描述的全范圍方法、上面針對(duì)圖4描述的其中距離值被計(jì)算為平方誤差的方法、以及上面針對(duì)圖4描述的其中距離值被計(jì)算為權(quán)重和平方誤差的乘積的方法。[0121]圖8和9分別示出了當(dāng)每個(gè)層的權(quán)重用定點(diǎn)數(shù)格式(其中尾數(shù)位長(zhǎng)度是固定的,并且指數(shù)是根據(jù)各種方法選擇的)表示時(shí)的具有ImageNet驗(yàn)證數(shù)據(jù)集的AlexNetDNN的前1名和前5名的分類精度的圖示800和900。具體地,曲線802和902示出了當(dāng)針對(duì)每個(gè)層的權(quán)重的指數(shù)是使用上面針對(duì)等式(1)描述的全范圍方法來選擇的時(shí),AlexNetDNN的前1名/前5名的分類精度;曲線804和904示出了當(dāng)針對(duì)每個(gè)層的權(quán)重的指數(shù)是使用上面針對(duì)等式(1)描述的全范圍方法來選擇的并且減少1時(shí),AlexNetDNN的前1名/前5名的分類精度;曲線806和906示出了當(dāng)針對(duì)每個(gè)層的權(quán)重的指數(shù)是使用圖4的方法400來選擇的并且距離值被計(jì)算為平方誤差(例如,距離值是根據(jù)等式(12)計(jì)算的)時(shí),AlexNetDNN的前1名/前5名的分類精度;并且曲線808和908示出了當(dāng)針對(duì)每個(gè)層的權(quán)重的指數(shù)是使用圖4的方法400來選擇的并且距離值被計(jì)算為權(quán)重和平方誤差的乘積(例如,距離值是根據(jù)等式(13)計(jì)算的)時(shí),AlexNetDNN的前1名/前5名的分類精度。如本領(lǐng)域技術(shù)人員所知,前1名的分類精度是對(duì)DNN的最高輸出是否是正確分類的度量,并且前5名的分類精度是對(duì)DNN的前五個(gè)輸出是否是正確分類的度量。[0122]圖10和11分別示出了當(dāng)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值用定點(diǎn)數(shù)格式(其中尾數(shù)位長(zhǎng)度是固定的,并且指數(shù)是根據(jù)各種方法選擇的)表示時(shí)的AlexNetDNN的前1名和前5名的分類精度的圖示1000和1100。具體地,曲線1002和1102示出了當(dāng)針對(duì)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值的指數(shù)是使用上面針對(duì)等式(1)描述的全范圍方法來選擇的時(shí),AlexNetDNN的前1名/前5名的分類精度;曲線1004和1104示出了當(dāng)針對(duì)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值的指數(shù)是使用上面針對(duì)等式(1)描述的全范圍方法來選擇的并且減少1時(shí),AlexNetDNN的前1名/前5名的分類精度;曲線1006和1106示出了當(dāng)針對(duì)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值的指數(shù)是使用圖4的方法400來選擇的并且距離值被計(jì)算為平方誤差(例如,距離值是根據(jù)等式(12)計(jì)算的)時(shí),AlexNetDNN的前1名/前5名的分類精度;并且曲線1008和1108示出了當(dāng)針對(duì)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值的指數(shù)是使用圖4的方法400來選擇的并且距離值被計(jì)算為權(quán)重和平方誤差的乘積(例如,距離值是根據(jù)等式(13)計(jì)算的)時(shí),AlexNetDNN的前1名/前5名的分類精度。[0123]圖12和13分別示出了當(dāng)每個(gè)層的權(quán)重用定點(diǎn)數(shù)格式(其中尾數(shù)位長(zhǎng)度是固定的,并且指數(shù)是根據(jù)各種方法選擇的)表示時(shí)的具有ImageNet驗(yàn)證數(shù)據(jù)集的GoogLeNetDNN的前1名和前5名的分類精度的圖示1200和1300。具體地,曲線1202和1302示出了當(dāng)針對(duì)每個(gè)層的權(quán)重的指數(shù)是使用上面針對(duì)等式(1)描述的全范圍方法來選擇的時(shí),GoogLeNetDNN的前1名/前5名的分類精度;曲線1204和1304示出了當(dāng)針對(duì)每個(gè)層的權(quán)重的指數(shù)是使用上面針對(duì)等式(1)描述的全范圍方法來選擇的并且減少1時(shí),GoogLeNetDNN的前1名/前5名的分類精度;曲線1206和1306示出了當(dāng)針對(duì)每個(gè)層的權(quán)重的指數(shù)是使用圖4的方法400來選擇的并且距離值被計(jì)算為平方誤差(例如,距離值是根據(jù)等式(12)計(jì)算的)時(shí),GoogLeNetDNN的前1名/前5名的分類精度;并且曲線1208和1308示出了當(dāng)針對(duì)每個(gè)層的權(quán)重的指數(shù)是使用圖4的方法400來選擇的并且距離值被計(jì)算為權(quán)重和平方誤差的乘積(例如,距離值是根據(jù)等式(13)計(jì)算的)時(shí),GoogLeNetDNN的前1名/前[0124]圖14和15分別示出了當(dāng)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值用定點(diǎn)數(shù)格式(其中尾數(shù)位長(zhǎng)度是固定的,并且指數(shù)是根據(jù)各種方法選擇的)表示時(shí)的GoogLeNetDNN的前1名和前5名的分類精度的圖示1400和1500。具體地,曲線1402和1502示出了當(dāng)針對(duì)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值的指數(shù)是使用上面針對(duì)等式(1)描述的全范圍方法來選擇的時(shí),GoogLeNetDNN的前1名/前5名的分類精度;曲線1404和1504示出了當(dāng)針對(duì)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值的指數(shù)是使用上面針對(duì)等式(1)描述的全范圍方法來選擇的并且減少1時(shí),GoogLeNetDNN的前1名/前5名的分類精度;曲線1406和1506示出了當(dāng)針對(duì)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值的指數(shù)是使用圖4的方法400來選擇的并且距離值被計(jì)算為平方誤差(例如,距離值是根據(jù)等式(12)計(jì)算的)時(shí),GoogLeNetDNN的前1名/前5名的分類精度;并且曲線1408和1508示出了當(dāng)針對(duì)每個(gè)層的權(quán)重和輸入數(shù)據(jù)值的指數(shù)是使用圖4的方法400來選擇的并且距離值被計(jì)算為權(quán)重和平方誤差的乘積(例如,距離值是根據(jù)等式(13)計(jì)算的)時(shí),GoogLeNetDNN的前1名/前5名的分類精度。[0125]從圖8-15可以看出,與使用全范圍方法選擇定點(diǎn)數(shù)格式相比,所描述的基于直方圖的方法選擇了提高分類精度的定點(diǎn)數(shù)格式,特別是在小數(shù)字(即,小尾數(shù)位長(zhǎng)度)的情況[0127]現(xiàn)在參考圖16,圖16示出了可以被配置為基于使用圖4的方法400標(biāo)識(shí)的格式的[0128]圖16的硬件實(shí)現(xiàn)1600被配置為通過一系列硬件通道(pass)(其也可以稱為處理通一部分,并且根據(jù)該層(并且可選地根據(jù)一個(gè)或多個(gè)后續(xù)層)處理接收到的輸入數(shù)據(jù)以產(chǎn)生經(jīng)處理的數(shù)據(jù)。經(jīng)處理的數(shù)據(jù)被輸出到存儲(chǔ)器以用作后續(xù)硬件通道的輸入數(shù)據(jù),或被輸出作為DNN的輸出。硬件實(shí)現(xiàn)在單個(gè)硬件通道期間可以處理的層的數(shù)量可以基于數(shù)據(jù)的大小、硬件實(shí)現(xiàn)、和層的順序。例如,在硬件實(shí)現(xiàn)包括用于執(zhí)行每個(gè)可能的層類型的硬件的情況件通道中接收初始DNN輸入數(shù)據(jù)并且根據(jù)第一卷積層和第一激活層來處理該輸入數(shù)據(jù)并且然后將激活層的輸出輸出到存儲(chǔ)器中,然后在第二個(gè)硬件通道中從存儲(chǔ)器中接收該數(shù)據(jù)作為輸入并且根據(jù)第二卷積層、第二激活層、和池化層來處理該數(shù)據(jù)以產(chǎn)生DNN的輸出數(shù)據(jù)。[0129]圖16的示例硬件實(shí)現(xiàn)1600包括:輸入模塊1601、卷積引擎1602、累積緩沖器1604、和輸出模塊1615.每個(gè)模塊或引擎實(shí)現(xiàn)或處理一種或多種類型的層中的全部或一部分。具體地,卷積引擎1602和累積緩沖器1604一起實(shí)現(xiàn)或處理卷積層或全連接層。激活模塊1608處理或?qū)崿F(xiàn)激活層。歸一化模塊1610處理或?qū)崿F(xiàn)歸一化層。池化模塊1612實(shí)現(xiàn)池化層,并且輸出交織模塊1614處理或?qū)崿F(xiàn)交織層。[0130]輸入模塊1601,被配置為接收要被處理的輸入數(shù)據(jù),并且將該輸入數(shù)據(jù)提供給下游模塊以用于處理。[0131]卷積引擎1602被配置為使用與特定卷積層相關(guān)聯(lián)的權(quán)重對(duì)接收到的輸入數(shù)據(jù)執(zhí)行卷積運(yùn)算。DNN的每個(gè)卷積層的權(quán)重可以存儲(chǔ)在系數(shù)緩沖器1616中(如圖16所示),并且在卷積引擎1602正在處理特定卷積層時(shí),可以將該特定卷積層的權(quán)重提供給卷積引擎1602。在硬件實(shí)現(xiàn)支持可變權(quán)重格式的情況下,卷積引擎1602可以被配置為接收指示正在被處理的當(dāng)前卷積層的權(quán)重的一個(gè)或多個(gè)格式的信息,以允許卷積引擎正確地解釋和處理接收到的權(quán)重。[0132]卷積引擎1602可以包括多個(gè)乘法器(例如,128個(gè))和多個(gè)加法器(該多個(gè)加法器將乘法器的結(jié)果相加以產(chǎn)生單個(gè)總和)。雖然圖16中示出了單個(gè)卷積引擎1602,但是在其他示例中,可以存在多個(gè)(例如,8個(gè))卷積引擎,從而可以同時(shí)處理多個(gè)窗口。出被饋送到累積緩沖器1604。[0133]累積緩沖器1604被配置為接收卷積引擎的輸出,并且將卷積引擎的輸出添加到累積緩沖器1604的當(dāng)前內(nèi)容。以這種方式,累積緩沖器1604累積卷積引擎1602的結(jié)果。雖然圖16中示出了單個(gè)累積緩沖器1604,但是在其他示例中,可以存在多個(gè)(例如,8個(gè),每個(gè)卷積引擎有一個(gè)累積緩沖器)累積緩沖器。累積緩沖器1604將累積結(jié)果輸出到按元素操作模塊1606,按元素操作模塊1606可以基于在當(dāng)前硬件通道期間是否要處理按元素層來對(duì)累積結(jié)果進(jìn)行操作或不進(jìn)行操作。[0134]按元素操作模塊1606被配置為接收針對(duì)當(dāng)前硬件通道的輸入數(shù)據(jù)(例如,當(dāng)在當(dāng)前硬件通道中未處理卷積層時(shí))或來自累積緩沖器1604的累積結(jié)果(例如,當(dāng)在當(dāng)前硬件通道中處理卷積層時(shí))。按元素操作模塊1606可以處理接收到的輸入數(shù)據(jù),或?qū)⒔邮盏降妮斎霐?shù)據(jù)傳遞到另一模塊(例如,激活模塊1608和/或歸一化模塊1610),這取決于在當(dāng)前硬件通道中是否處理按元素層,和/或取決于是否要在按元素層之前處理激活層。當(dāng)按元素操作模塊1606被配置為處理接收到的輸入數(shù)據(jù)時(shí),按元素操作模塊1606對(duì)接收到的數(shù)據(jù)執(zhí)行按元素操作(可選地與另一數(shù)據(jù)集一起(可以從外部存儲(chǔ)器獲得該另一數(shù)據(jù)集))。按元素操作模最小值。然后,根據(jù)是否要在按元素層之后處理激活層,將按元素操作的結(jié)果提供給激活模塊1608或歸一化模塊1610。[0135]激活模塊1608被配置為接收以下各項(xiàng)中的一項(xiàng)作為輸入數(shù)據(jù):進(jìn)入硬件通道的原始輸入(通過按元素操作模塊1606)(例如,當(dāng)在當(dāng)前硬件通道中未處理卷積層時(shí));累積數(shù)據(jù)(通過按元素操作模塊1606)(例如,當(dāng)在當(dāng)前硬件通道中處理卷積層并且在當(dāng)前硬件通道中未處理按元素層或在當(dāng)前硬件通道中處理按元素層但跟隨有激活層時(shí))。激活模塊1608被配置為將激活函數(shù)應(yīng)用于輸入數(shù)據(jù)并且將輸出數(shù)據(jù)提供回按元素操作模塊1606(其中,該輸出數(shù)據(jù)被直接轉(zhuǎn)發(fā)到歸一化模塊1610,或在按元素操作模塊1606對(duì)其進(jìn)行處理之后被轉(zhuǎn)發(fā)到歸一化模塊1610)。在一些情況下,應(yīng)用于由激活模塊1608接收的數(shù)據(jù)的激活函數(shù)可以根據(jù)激活層而變化。在這些情況下,可以(例如,在存儲(chǔ)器中)存儲(chǔ)指定要應(yīng)用于每個(gè)激活層的激活函數(shù)的一個(gè)或多個(gè)屬性的信息,并且可以在特定硬件通道期間將針對(duì)在該硬件通道中處理的激活層的相關(guān)信息提供給激活模塊1608。[0136]在一些情況下,激活模塊1608可以被配置為在查找表的條目中存儲(chǔ)表示激活函數(shù)的數(shù)據(jù)。在這些情況下,輸入數(shù)據(jù)可被用來查找查找表中的一個(gè)或多個(gè)條目,并且輸出表示激活函數(shù)的輸出的值。例如,激活模塊1608可以被配置為通過在從查找表讀取的兩個(gè)或多個(gè)條目之間進(jìn)行插值來計(jì)算輸出值。[0137]在一些示例中,激活模塊1608可以被配置為通過實(shí)現(xiàn)修正線性單元(ReLU)函數(shù)來[0139]在其他示例中,激活模塊1608可以被配置為通過實(shí)現(xiàn)參數(shù)修正線性單元(PReLU)函數(shù)來作為PReLU操作。PReLU函數(shù)執(zhí)行與ReLU函數(shù)類似的操作。具體地,在w?,W?,b?,b?∈R是常數(shù)的情況下,PReLU被配置為生成輸出元素y1,,,如等式(17)所示:[0141]歸一化模塊1610被配置為接收以下各項(xiàng)中的一項(xiàng)作為輸入數(shù)據(jù):針對(duì)硬件通道的原始輸入數(shù)據(jù)(通過按元素操作模塊1606)(例如,當(dāng)在當(dāng)前硬件通道中未處理卷積層并且在當(dāng)前硬件通道中既不處理按元素層也不處理激活層時(shí));累積輸出(通過按元素操作模塊1606)(例如,當(dāng)在當(dāng)前硬件通道中處理卷積層并且在當(dāng)前硬件通道中既不處理按元素層也不處理激活層時(shí));以及按元素操作模塊和/或激活模塊的輸出數(shù)據(jù)。然后,歸一化模塊1610對(duì)接收到的輸入數(shù)據(jù)執(zhí)行歸一化函數(shù)以產(chǎn)生歸一化數(shù)據(jù)。在一些情況下,歸一化模塊1610可以被配置為執(zhí)行局部響應(yīng)歸一化(LRN)函數(shù)和/或局部對(duì)比歸一化(LCN)函數(shù)。然而,對(duì)于本領(lǐng)域技術(shù)人員顯而易見的是,這些僅是示例,并且歸一化模塊1610可以被配置為實(shí)現(xiàn)任意適當(dāng)?shù)臍w一化函數(shù)。不同的歸一化層可以被配置為應(yīng)用不同的歸一化函數(shù)。[0142]池化模塊1612可以從歸一化模塊1610接收歸一化數(shù)據(jù),或可以經(jīng)由歸一化模塊1610接收進(jìn)入歸一化模塊1610的輸入數(shù)據(jù)。在一些情況下,可以通過XBar1618在歸一化模塊1610和池化模塊1612之間傳輸數(shù)據(jù)。本文使用的術(shù)語(yǔ)“XBar”指的是包括以動(dòng)態(tài)方式將多個(gè)模塊連接在一起的路由邏輯的簡(jiǎn)單硬件模塊。在該示例中,XBar可以基于將在當(dāng)前硬件通道中處理哪些層來動(dòng)態(tài)地連接歸一化模塊1610、池化模塊1612、和/或輸出交織模塊[0143]池化模塊1612被配置為對(duì)接收到的數(shù)據(jù)執(zhí)行池化函數(shù)(例如但不限于,取最大值函數(shù)或平均函數(shù))以產(chǎn)生池化數(shù)據(jù)。池化層的目的是減小表示的空間大小以減少網(wǎng)絡(luò)中的參數(shù)和計(jì)算的數(shù)量,并且因此還控制過度擬合。在一些示例中,池化操作在每個(gè)池化層定義的滑動(dòng)窗口上執(zhí)行。[0144]輸出交織模塊1614可以接收來自歸一化模塊1610的歸一化數(shù)據(jù)、進(jìn)入歸一化函數(shù)的輸入數(shù)據(jù)(通過歸一化模塊1610)、或來自池化模塊1612的池化數(shù)據(jù)。在一些情況下,可以通過XBar1618在歸一化模塊1610、池化模塊1612、和輸出交織模塊1614之間傳輸數(shù)據(jù)。輸出交織模塊1614被配置為執(zhí)行重新排列操作以產(chǎn)生預(yù)定順序的數(shù)據(jù)。這可以包括對(duì)接收到的數(shù)據(jù)進(jìn)行排序和/或轉(zhuǎn)置。由最后一層產(chǎn)生的數(shù)據(jù)被提供給輸出模塊1615,其中,該數(shù)據(jù)被轉(zhuǎn)換成針對(duì)當(dāng)前硬件通道的期望輸出格式。[0145]歸一化模塊1610、池化模塊1612和輸出交織模塊1614各自可以訪問共享緩沖器1620,共享緩沖器1620可以由這些模塊1610、1612和1614使用以寫入數(shù)據(jù)和從中取回?cái)?shù)據(jù)。例如,共享緩沖器1620可以由這些模塊1610、1612、1614使用以重新排列接收到的數(shù)據(jù)或生成的數(shù)據(jù)的順序。例如,這些模塊1610、1612、1614中的一個(gè)或多個(gè)可以被配置為將數(shù)據(jù)寫入共享緩沖器1620并且以不同的順序讀出相同的數(shù)據(jù)。在一些情況下,雖然歸一化模塊1610、池化模塊1612和輸出交織模塊1614中的每一個(gè)都可以訪問共享緩沖器1620,但是歸一化模塊1610、池化模塊1612和輸出交織模塊1614中的每一個(gè)可以被分配有僅它們才能訪問的共享緩沖器1620的一部分。在這些情況下,歸一化模塊1610、池化模塊1612和輸出交織模塊1614中的每一個(gè)可能僅能夠從共享緩沖器1620中讀取它們已經(jīng)寫入共享緩沖器1620的數(shù)據(jù)。[0146]如上所述,在任意硬件通道期間使用或激活的硬件實(shí)現(xiàn)1600的模塊基于在該硬件通道期間處理的層。具體地,僅使用或激活與在當(dāng)前硬件通道期間處理的層相關(guān)的模塊或組件。如上所述,基于DNN中的層的順序以及可選地一個(gè)或多個(gè)其他因素(例如,數(shù)據(jù)的大小)來確定在特定硬件通道期間處理的層(通常預(yù)先通過例如軟件工具來確定)。例如,在一些情況下,硬件實(shí)現(xiàn)可以被配置為根據(jù)每個(gè)硬件通道來執(zhí)行單個(gè)層的處理,除非可以處理多個(gè)層而不需要在層之間向存儲(chǔ)器寫入數(shù)據(jù)。例如,如果第一卷積層緊接跟隨有第二卷積層,則每個(gè)卷積層將必須在單獨(dú)的硬件通道中執(zhí)行,因?yàn)閬碜缘谝痪矸e的輸出數(shù)據(jù)在其能夠被用作進(jìn)入第二卷積的輸入之前需要被寫入存儲(chǔ)器。在這些硬件通道中的每個(gè)硬件通道中,可以僅使用或激活與卷積層相關(guān)的模塊、組件或引擎,例如卷積引擎1602和累積緩沖器[0147]雖然圖16的硬件實(shí)現(xiàn)1600示出了其中模塊、引擎等被布置的特定順序以及因此數(shù)可以以不同的方式被布置。此外,其他硬件實(shí)現(xiàn)可以實(shí)現(xiàn)附加或替代類型的DNN層,并且因[0148]圖17示出了示例性通用的基于計(jì)算的設(shè)備1700的各種組件,該基于計(jì)算的設(shè)備1700可以被實(shí)現(xiàn)為任意形式的計(jì)算和/或電子設(shè)備,并且在其中可以實(shí)現(xiàn)上述方法400的實(shí)施例。[0149]基于計(jì)算的設(shè)備1700包括一個(gè)或多個(gè)處理器1702,該一個(gè)或多個(gè)處理器1702可以是微處理器、控制器或任意其他適當(dāng)類型的處理器,用于處理計(jì)算機(jī)可執(zhí)行指令以控制設(shè)備的操作,以便評(píng)估由硬件設(shè)計(jì)定義的集成電路在完成任務(wù)時(shí)的性能。在一些示例中,例如在使用片上系統(tǒng)架構(gòu)的情況下,處理器1702可以包括一個(gè)或多個(gè)固定功能塊(也稱為加速器),該一個(gè)或多個(gè)固定功能塊用硬件(而不是軟件或固件)來實(shí)現(xiàn)確定用于表示針對(duì)輸入至和輸出自DNN的一個(gè)層的一組值的定點(diǎn)數(shù)格式的方法的一部分??梢栽诨谟?jì)算的設(shè)備處提供包括操作系統(tǒng)1704的平臺(tái)軟件或任意其他適當(dāng)?shù)钠脚_(tái)軟件,以啟用應(yīng)用軟件,例如,在設(shè)備上執(zhí)行以用于實(shí)現(xiàn)圖4的方法400的計(jì)算機(jī)可執(zhí)行代碼1705。[0150]可以使用可由基于計(jì)算的設(shè)備1700訪問的任意計(jì)算機(jī)可讀介質(zhì)來提供計(jì)算機(jī)可執(zhí)行指令。計(jì)算機(jī)可讀介質(zhì)可以包括例如計(jì)算機(jī)存儲(chǔ)介質(zhì)(例如,存儲(chǔ)器1706)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)(即,非暫態(tài)機(jī)器可讀介質(zhì)),例如,存儲(chǔ)器1706,包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)之類的信息的任意方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于RAM、ROM、EPROM、帶、磁盤存儲(chǔ)器或其他磁存儲(chǔ)設(shè)備、或能夠用于存儲(chǔ)信息以供計(jì)算設(shè)備訪問的任意其他非傳輸介質(zhì)。相反,通信介質(zhì)可以用調(diào)制數(shù)據(jù)信號(hào)(例如,載波)或其他傳輸機(jī)制來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。如本文所定義的,計(jì)算機(jī)存儲(chǔ)介質(zhì)不包括通信介質(zhì)。雖然在基于計(jì)算的設(shè)備1700內(nèi)示出了計(jì)算機(jī)存儲(chǔ)介質(zhì)(即,非暫態(tài)機(jī)器可讀介質(zhì),例如,存儲(chǔ)器1706),但是應(yīng)當(dāng)理解,存儲(chǔ)裝置可以被遠(yuǎn)程分布或定位,并且可以經(jīng)由網(wǎng)絡(luò)或其他通信鏈路被訪問(例如,使用通信接口1708)。[0151]基于計(jì)算的設(shè)備1700還包括輸入/輸出控制器1710,該輸入/輸出控制器1710被布置為將顯示信息輸出到顯示設(shè)備1712,該顯示設(shè)備1712可以與基于計(jì)算的設(shè)備1700分離或集成在一起。顯示信息可以提供圖形用戶接口。輸入/輸出控制器1710還被布置為接收和處理來自一個(gè)或多個(gè)設(shè)備(例如,用戶輸入設(shè)備1714(例如,鼠標(biāo)或鍵盤))的輸入。在一個(gè)實(shí)施例中,如果顯示設(shè)備1712是觸敏顯示設(shè)備,則顯示設(shè)備1712還可以用作用戶輸入設(shè)備1714。輸入/輸出控制器1710還可以將數(shù)據(jù)輸出到除顯示設(shè)備之外的設(shè)備,例如,本地連接的打印設(shè)備(圖17中未示出)。[0152]圖18示出了其中可以實(shí)現(xiàn)本文描述的DNN的硬件實(shí)現(xiàn)的計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)機(jī)1820.DNN的硬件實(shí)現(xiàn)1810(對(duì)應(yīng)于圖16的DNN的硬件實(shí)現(xiàn)1600)可以在GPU1804上實(shí)現(xiàn),1810提供控制信息。計(jì)算機(jī)系統(tǒng)的組件可以經(jīng)由通信總線1822彼此進(jìn)行通信。[0153]圖16的DNN的硬件實(shí)現(xiàn)1600被示出為包括多個(gè)功能塊。這僅是示意性的,并且不旨在定義這類實(shí)體的不同邏輯元素之間的嚴(yán)格劃分??梢砸匀我膺m當(dāng)?shù)姆绞教峁┟總€(gè)功能塊。應(yīng)當(dāng)理解,本文描述的由DNN的硬件實(shí)現(xiàn)或處理模塊形成的中間值不需要由DNN的硬件實(shí)現(xiàn)或處理模塊在任意點(diǎn)處物理地生成,并且可以僅表示方便地描述由DNN硬件實(shí)現(xiàn)或處理模塊執(zhí)行處理的在該處理的輸入和輸出之間的邏輯值。[0154]本文描述的DNN的硬件實(shí)現(xiàn)可以在集成電路上的硬件中實(shí)現(xiàn)。通常,上述任意功表示在處理器上執(zhí)行時(shí)執(zhí)行指定任務(wù)的程序代碼。本文描述的算法和方法可以由一個(gè)或多個(gè)處理器執(zhí)行,該一個(gè)或多個(gè)處理器執(zhí)行使得(一個(gè)或多個(gè))處理器執(zhí)行算法/方法的代碼。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例包括隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、光盤、閃存、硬盤存儲(chǔ)器、以及可以使用磁性、光學(xué)和其他技術(shù)來存儲(chǔ)指令或其他數(shù)據(jù)并且可以由機(jī)器訪問的其他存儲(chǔ)器設(shè)備。[0155]本文使用的術(shù)語(yǔ)計(jì)算機(jī)程序代碼和計(jì)算機(jī)可讀指令是指用于處理器的任意類型的可執(zhí)行代碼,包括以機(jī)器語(yǔ)言、解釋語(yǔ)言或腳本語(yǔ)言表示的代碼??蓤?zhí)行代碼包括二進(jìn)制C、Java或OpenCL之類的編程語(yǔ)言代碼表示的代碼。可執(zhí)行代碼可以是例如任意類型的軟運(yùn)行時(shí),使得計(jì)算機(jī)系統(tǒng)的處理器在支持可執(zhí)行代碼來執(zhí)行代碼指定的任務(wù)。[0156]處理器、計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)可以是具有處理能力以便能夠執(zhí)行指令的任意類型的設(shè)備、機(jī)器或?qū)S秒娐?、或其集合或部分。處理器可以是任意類型的通用或?qū)S锰幚砥?,?chǎng)可編程門陣列(FPGA)等。計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)可以包括一個(gè)或多個(gè)處理器。[0157]還旨在涵蓋定義如本文描述的硬件的配置的軟件,例如HDL(硬件描述語(yǔ)言)軟件,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),在其上編碼有集成電路定義數(shù)據(jù)集形式的計(jì)算機(jī)可讀程序代碼,當(dāng)在集成電路制造系統(tǒng)中處理(即,運(yùn)行)時(shí),配置系統(tǒng)以制造本文描述的DNN的硬件實(shí)現(xiàn)。集成電路定義數(shù)據(jù)集可以是例如集成電路描述。[0158]因此,可以提供一種在集成電路制造系統(tǒng)處制造如本文描述的DNN的硬件實(shí)現(xiàn)的方法。此外,可以提供集成電路定義數(shù)據(jù)集,當(dāng)在集成電路制造系統(tǒng)中處理時(shí),使得執(zhí)行制[0159]集成電路定義數(shù)據(jù)集可以是計(jì)算機(jī)代碼的形式,例如,網(wǎng)表、用于配置可編程芯片的代碼、(定義適用于在任意級(jí)別的集成電路中制造的硬件的)硬件描述語(yǔ)言,包括寄存器 (RTM)、和GDSII)。在邏輯上定義適用于在集成電路中制造的硬件的更高級(jí)表示(例如RTL),可以在(被配置用于在(包括電路元件的定義和用于組合這些元件的規(guī)則的)軟件環(huán)境的上下文中生成集成電路的制造定義的)計(jì)算機(jī)系統(tǒng)處被執(zhí)行,以便生成由該表示定義的集成電路的制造定義。類似于通常在計(jì)算機(jī)系統(tǒng)處執(zhí)行軟件以定義機(jī)器的情況,可能需要一個(gè)或多個(gè)中間用戶步驟(例如,提供命令、變量等),以使得(被配置用于生成集成電路的制造定義的)計(jì)算機(jī)系統(tǒng)執(zhí)行定義集成電路的代碼,從而生成該集成電路的制造定義。[0160]現(xiàn)在將參考圖19描述在集成電路制造系統(tǒng)處對(duì)集成電路定義數(shù)據(jù)集進(jìn)行處理以[0161]圖19示出了(被配置為制造本文的任意示例中描述的DNN的硬件實(shí)現(xiàn)的)集成電路(IC)制造系統(tǒng)1902的示例。具體地,IC制造系統(tǒng)1902包括布局處理系統(tǒng)1904、和集成電路生成系統(tǒng)1906.IC制造系統(tǒng)1902被配置為接收IC定義數(shù)據(jù)集(例如,定義本文的任意示例中描述的DNN的硬件實(shí)現(xiàn)),處理IC定義數(shù)據(jù)集,并且根據(jù)IC定義數(shù)據(jù)集來生成IC(例如,該IC體現(xiàn)本文的任意示例中描述的DNN的硬件實(shí)現(xiàn))。對(duì)IC定義數(shù)據(jù)集的處理將IC制造系統(tǒng)1902配置為制造體現(xiàn)本文的任意示例中描述的DNN的硬件實(shí)現(xiàn)的集成電路。[0162]布局處理系統(tǒng)1904被配置為接收并且處理IC定義數(shù)據(jù)集以確定電路布局。從IC定義數(shù)據(jù)集確定電路布局的方法在本領(lǐng)域中是已知的,并且例如可以包括合成RTL代碼以確定要生成的電路的門級(jí)表示(gatelevelrepresentation),例如,在邏輯組件(例如,組件)方面。通過確定邏輯組件的位置信息,可以從電路的門級(jí)表示確定電路布局。這可以自動(dòng)完成,或?yàn)榱藘?yōu)化電路布局在用戶參與下完成。在布局處理系統(tǒng)1904已經(jīng)確定了電路布局時(shí),其可以向IC生成系統(tǒng)1906輸出電路布局定義。電路布局定義可以是例如電路布

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論