神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法及神經(jīng)網(wǎng)絡(luò)處理器的制造方法
【專利摘要】本發(fā)明實施例提供一種神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法及神經(jīng)網(wǎng)絡(luò)處理器。該方法包括:通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),輸入數(shù)據(jù)和權(quán)重絕對值為n元向量,依次將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的n項數(shù)據(jù)進行n次第一非線性映射。將第一非線性映射后的結(jié)果通過累加器進行n次累加操作,累加操作包括權(quán)重符號位控制的加法操作和減法操作,將n次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和第一非線性映射的逆映射制定。從而提高了量化效率,降低了數(shù)據(jù)的存儲需求和帶寬需求。
【專利說明】
神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法及神經(jīng)網(wǎng)絡(luò)處理器
技術(shù)領(lǐng)域
[0001]本發(fā)明實施例涉及電子芯片技術(shù)領(lǐng)域,尤其涉及一種神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法及神經(jīng)網(wǎng)絡(luò)處理器。
【背景技術(shù)】
[0002]神經(jīng)網(wǎng)絡(luò)及深度學(xué)習(xí)算法已經(jīng)獲得了非常成功的應(yīng)用,并處于迅速發(fā)展的過程中,業(yè)界普遍預(yù)期新的計算方式有助于實現(xiàn)更為普遍、復(fù)雜的智能應(yīng)用。神經(jīng)網(wǎng)絡(luò)及深度學(xué)習(xí)算法近年來在圖像識別應(yīng)用領(lǐng)域取得了非常突出的成就,因此業(yè)界對神經(jīng)網(wǎng)絡(luò)及深度學(xué)習(xí)算法的優(yōu)化及高效率實現(xiàn)開始關(guān)注并重視,諸如facebook,Qualcomm,baidu,google等公司都投入了神經(jīng)網(wǎng)絡(luò)優(yōu)化算法的研究。Qualcomm公司發(fā)布了在下一代芯片中集成神經(jīng)網(wǎng)絡(luò)處理模塊的計劃,提高神經(jīng)網(wǎng)絡(luò)算法的處理效率,相關(guān)算法的改進,及芯片實現(xiàn)的效率是其關(guān)注和研究的核心問題。
[0003]圖1為一個η級(層)的神經(jīng)網(wǎng)絡(luò)計算模型示意圖,神經(jīng)網(wǎng)絡(luò)處理其中的一個神經(jīng)元的計算形如:y = f(xl*wl+x2*w2+^_+xn*wn+b),計算是分級進行的,前一級的輸出是后一級的輸入。圖2為傳統(tǒng)的計算方法流程圖,前級輸出作為數(shù)據(jù)輸入(^^2、...?),^、^、..^分別與對應(yīng)的權(quán)參數(shù)相乘,然后由累加器完成xl*wl+x2*w2+…+xn*wn+b的累加操作,再經(jīng)過非線性映射y = f(累加后的結(jié)果)得到計算結(jié)果,最后完成數(shù)據(jù)輸出。
[0004]可以看出,在上述數(shù)據(jù)處理方法中,由于涉及到的乘法的計算復(fù)雜度比較高,在一定計算精度要求下,對應(yīng)數(shù)據(jù)的存儲需求和帶寬需求也比較高,計算效率不高。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供一種神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法及神經(jīng)網(wǎng)絡(luò)處理器,以解決現(xiàn)有的處理方法中存在的數(shù)據(jù)的存儲需求和帶寬需求較高、計算效率不高的問題。
[0006]第一方面,本發(fā)明實施例提供一種神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法,該方法包括:首先通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),輸入數(shù)據(jù)和權(quán)重絕對值為η元向量。接著依次將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射。然后將第一非線性映射后的結(jié)果通過累加器進行η次累加操作,累加操作包括權(quán)重符號位控制的加法操作和減法操作。最后將η次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和第一非線性映射的逆映射制定。從而實現(xiàn)了將復(fù)雜的乘法計算轉(zhuǎn)變?yōu)榧臃ㄓ嬎悖岣吡肆炕?,存儲的容量和帶寬可以壓縮,因此降低了數(shù)據(jù)的存儲需求和帶寬需求,提高了計算效率。而且輸入數(shù)據(jù)不限于0/1 二元量化,使得計算精度滿足實際應(yīng)用網(wǎng)絡(luò)的需求,能適用除神經(jīng)網(wǎng)絡(luò)計算以外更廣范圍的應(yīng)用目標。
[0007]在一個可能的設(shè)計中,第一非線性映射為2的M次冪變換,M為輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)中的各項。采用2的M次冪變換由于映射關(guān)系簡單,硬件實現(xiàn)代價低。
[0008]在一個可能的設(shè)計中,當(dāng)?shù)谝环蔷€性映射是m的M次冪變換,m不等于2時,為使電路實現(xiàn)簡單,將m的M次冪變換轉(zhuǎn)換為2的M次冪變換,通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前,還包括:對輸入數(shù)據(jù)乘以比例系數(shù)K1,和/或,對權(quán)重絕對值乘以比例系數(shù)K2,仏與1(2相等或不等;或者,通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之后,還包括:對相加后的η項數(shù)據(jù)中的各項乘以比例系數(shù)K3。其中,K1、K2、Κ3不等于O。
[0009]在一個可能的設(shè)計中,HK3為1+1/2〃或1-1/2\
[0010]在一個可能的設(shè)計中,輸入數(shù)據(jù)或權(quán)重絕對值等于O時,累加操作為當(dāng)前累加項維持不變。權(quán)重符號位為負時,累加操作為減法操作。累加器處于維持狀態(tài),由于在實際的神經(jīng)網(wǎng)絡(luò)計算過程中,無論數(shù)輸入數(shù)據(jù)還是權(quán)重,存在大量的0,因此這樣可以簡化處理,降低功耗。
[0011]在一個可能的設(shè)計中,通過模擬電路實現(xiàn)第一非線性映射或第二非線性映射或累加操作。模擬非線性轉(zhuǎn)換,加法的實現(xiàn)都是可以瞬時完成的,不依懶于數(shù)字時鐘的速率。
[0012]第二方面,本發(fā)明實施例提供一種神經(jīng)網(wǎng)絡(luò)處理器,包括:加法電路,用于將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),輸入數(shù)據(jù)和權(quán)重絕對值為η元向量。第一非線性映射電路,用于依次將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射。累加電路,用于將第一非線性映射后的結(jié)果進行η次累加操作,累加操作包括權(quán)重符號位控制的加法操作和減法操作。第二非線性映射電路,用于將η次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和第一非線性映射的逆映射制定。
[0013]在一個可能的設(shè)計中,第一非線性映射電路為2的M次冪變換電路,M為輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)中的各項。
[0014]在一個可能的設(shè)計中,還包括:第一乘法電路,用于在加法電路將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前,對輸入數(shù)據(jù)乘以比例系數(shù)K1;和/或,第二乘法電路,用于在加法電路將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前,對權(quán)重絕對值乘以比例系數(shù)!^,!^與!^相等或不等;或者,第三乘法電路,用于在加法電路將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之后,對相加后的η項數(shù)據(jù)中的各項乘以比例系數(shù)K3;其中,K1、K2、Κ3不等于O。
[0015]在一個可能的設(shè)計中,HK3為1+1/2〃或1_1/2\
[0016]在一個可能的設(shè)計中,輸入數(shù)據(jù)或權(quán)重絕對值等于O時,累加操作為當(dāng)前累加項維持不變;權(quán)重符號位為負時,累加操作為減法操作。
[0017]上述第二方面以及上述第二方面的各可能的設(shè)計中所提供的神經(jīng)網(wǎng)絡(luò)處理器,其有益效果可以參見上述第一方面和第一方面的各可能的設(shè)計中所帶來的有益效果,在此不再贅述。
[0018]本發(fā)明實施例提供的神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法及神經(jīng)網(wǎng)絡(luò)處理器,通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),接著依次將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射,將第一非線性映射后的結(jié)果通過累加器進行η次累加操作,累加操作包括權(quán)重符號位控制的加法操作和減法操作,最后將η次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和第一非線性映射的逆映射制定。從而實現(xiàn)了將復(fù)雜的乘法計算轉(zhuǎn)變?yōu)榧臃ㄓ嬎悖岣吡肆炕?,存儲的容量和帶寬可以壓縮,因此降低了數(shù)據(jù)的存儲需求和帶寬需求,提高了計算效率。而且輸入數(shù)據(jù)不限于0/1 二元量化,使得計算精度滿足實際應(yīng)用網(wǎng)絡(luò)的需求,能適用除神經(jīng)網(wǎng)絡(luò)計算以外更廣范圍的應(yīng)用目標。
【附圖說明】
[0019]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明實施例的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0020]圖1為一個η級(層)的神經(jīng)網(wǎng)絡(luò)計算模型示意圖;
[0021 ]圖2為傳統(tǒng)的計算方法流程圖;
[0022]圖3為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法實施例一的流程圖;
[0023]圖4為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法實施例二的計算框圖;
[0024]圖5為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法實施例三的計算框圖;
[0025]圖6為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法實施例三中2的M次冪變換示意圖;
[0026]圖7為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器實施例一的結(jié)構(gòu)示意圖;
[0027]圖8為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器實施例二的結(jié)構(gòu)示意圖;
[0028]圖9為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器實施例三的結(jié)構(gòu)示意圖。
【具體實施方式】
[0029]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明實施例一部分實施例,而不是全部的實施例?;诒景l(fā)明實施例中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明實施例保護的范圍。
[0030]本發(fā)明實施例提供一種神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法及神經(jīng)網(wǎng)絡(luò)處理器,可應(yīng)用于例如圖像數(shù)據(jù)、語音數(shù)據(jù)、視頻數(shù)據(jù)等數(shù)據(jù)需要進行神經(jīng)網(wǎng)絡(luò)計算的場景,接收到的數(shù)據(jù)作為輸入數(shù)據(jù)進行神經(jīng)網(wǎng)絡(luò)計算(單級神經(jīng)網(wǎng)絡(luò)計算或多級神經(jīng)網(wǎng)絡(luò)計算),通過本發(fā)明實施例提供的下述數(shù)據(jù)處理方法,復(fù)雜的乘法計算轉(zhuǎn)變?yōu)榧臃ㄓ嬎?,提高了量化效率,存儲的容量和帶寬可以壓縮,因此降低了數(shù)據(jù)的存儲需求和帶寬需求,提高了計算效率。
[0031]本發(fā)明實施例提供的神經(jīng)網(wǎng)絡(luò)處理器可能有物理實體形式。例如,在云端服務(wù)器應(yīng)用場合,可以是獨立的處理芯片,在終端(如手機)應(yīng)用上,可以是終端處理器芯片里的一個模塊。信息的輸入來自語音、圖像、自然語言等需要智能處理的各種信息輸入,經(jīng)過必要的預(yù)處理(如采樣,模數(shù)轉(zhuǎn)換,特征提取等)形成待進行神經(jīng)網(wǎng)絡(luò)運算的數(shù)據(jù)。信息的輸出送到其他后續(xù)處理模塊或軟件,例如圖形或其他可以理解可用的表現(xiàn)方式。其中,在云端應(yīng)用形態(tài)下,神經(jīng)網(wǎng)絡(luò)處理器的前后級的處理單元例如可以由其他服務(wù)器運算單元承擔(dān),在終端應(yīng)用環(huán)境下,神經(jīng)網(wǎng)絡(luò)處理器的前后級處理單元可由終端軟硬件的其他部分(如包括傳感器、接口電路等)完成。
[0032]圖3為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法實施例一的流程圖,如圖1所示,本實施例的方法可以包括:
[0033]S101、通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),輸入數(shù)據(jù)和權(quán)重絕對值為η元向量。
[0034]對于多級神經(jīng)網(wǎng)絡(luò),前一級的輸出作為后一級的輸入。其中的權(quán)重包括權(quán)重絕對值和權(quán)重符號位。
[0035]S102、依次將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射。
[0036]其中,第一非線性映射可以是任意底數(shù)m的M次冪變換,還可以是形如y= A*mB,y =B*B的非線性變換。優(yōu)選地,第一非線性映射為2的M次冪變換,M為輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的數(shù)據(jù)中的各項。采用2的M次冪變換由于映射關(guān)系簡單,硬件實現(xiàn)代價低。
[0037]S103、將第一非線性映射后的結(jié)果通過累加器進行η次累加操作。
[0038]累加操作包括權(quán)重符號位控制的加法操作和減法操作,即就是說,權(quán)重符號位為負,則累加器做減法運算,權(quán)重符號位為正,累加器做加法運算。
[0039]S104、將η次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和第一非線性映射的逆映射制定。
[0040]其中,當(dāng)?shù)谝环蔷€性映射是m的M次冪變換,m不等于2時,為使電路實現(xiàn)簡單,將m的M次冪變換轉(zhuǎn)換為2的M次冪變換,具體通過:SlOl中通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前,還包括:
[0041 ]對輸入數(shù)據(jù)乘以比例系數(shù)K1,和/或,對權(quán)重絕對值乘以比例系數(shù)K2 ,KAK2相等或不等;或者,通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之后,還包括:對相加后的η項數(shù)據(jù)中的各項乘以比例系數(shù)Κ3。其中,HK3不等于0,可選地,HK3可以為l + l/2Ml-
1/2ν。
[0042]通過上述操作,在電路實現(xiàn)時可以將m的M次冪變換轉(zhuǎn)化為2的M次冪變換來實現(xiàn),因為2的M次冪變換的映射關(guān)系簡單,硬件實現(xiàn)代價低。
[0043]進一步地,輸入數(shù)據(jù)或權(quán)重絕對值存在等于O的情況,權(quán)重也存在為負數(shù)的情況,因此,輸入數(shù)據(jù)或權(quán)重絕對值等于O時,累加操作為當(dāng)前累加項維持不變。累加器處于維持狀態(tài),由于在實際的神經(jīng)網(wǎng)絡(luò)計算過程中,無論數(shù)輸入數(shù)據(jù)還是權(quán)重,存在大量的0,因此這樣可以簡化處理,降低功耗。
[0044]權(quán)重符號位為負時,累加操作為減法操作,即累加器做減法運算。做減法就是對原來的數(shù)取反加I。
[0045]可選地,可以通過模擬電路實現(xiàn)第一非線性映射或第二非線性映射或累加操作。模擬非線性轉(zhuǎn)換,加法的實現(xiàn)都是可以瞬時完成的,不依懶于數(shù)字時鐘的速率。
[0046]需要說明的是,本發(fā)明實施例中上文提到的加法器、累加器以及下文提到的乘法器是分立的、物理的電路,不是通過通用CPU實現(xiàn)的軟件模塊。
[0047]本實施例提供的神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法,通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),接著依次將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射,將第一非線性映射后的結(jié)果通過累加器進行η次累加操作,累加操作包括權(quán)重符號位控制的加法操作和減法操作,最后將η次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和第一非線性映射的逆映射制定。從而實現(xiàn)了將復(fù)雜的乘法計算轉(zhuǎn)變?yōu)榧臃ㄓ嬎悖岣吡肆炕?,存儲的容量和帶寬可以壓縮,因此降低了數(shù)據(jù)的存儲需求和帶寬需求,提高了計算效率。而且輸入數(shù)據(jù)不限于0/1 二元量化,使得計算精度滿足實際應(yīng)用網(wǎng)絡(luò)的需求,能適用除神經(jīng)網(wǎng)絡(luò)計算以外更廣范圍的應(yīng)用目標。
[0048]下面結(jié)合公式推導(dǎo)過程和一個具體的實施例詳細說明本發(fā)明實施例提供的神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法的處理過程。
[0049]具體地,采用m的M次冪變換將復(fù)雜的乘法計算轉(zhuǎn)變?yōu)榧臃ㄓ嬎?,詳細的計算公式推?dǎo)過程如下:
[0050]以【背景技術(shù)】中提到形如y = f (xl*wl+x2*w2+…+xn*wn+b)的計算為例,
[0051 ]先假設(shè)x>0,s (W)為W的符號位。
[0052]y = f(s(wl)eln(xl)+ln(|wl|)+s(w2)eln(x2)+ln(|w2|)+…s(wn)eln(xn)+ln(|wn|)+b)
[0053]ln(y) = ln(f(s(wl)eln(xl)+ln(|wl|)+s(w2)eln(x2)+ln(|w2|)+…s(wn)eln(xn)+ln(|wn|)+b))
[0054]假設(shè)u = in(y) ,v = ln(x) ,c = ln( w|),這個公式重新表示為:
[0055]u = ln(f(s(wl) evl+cl+s (w2) ev2+c2+...s (wn) evn+cn+b))
[0056]如果指數(shù)關(guān)系是2的指數(shù),對數(shù)關(guān)系是以2為底的對數(shù),計算公式寫為:
[0057]y = f(s(wl)2log2(xl)+log2(|wl|)+s(w2)2log2(x2)+log2(|w2|h"+s(wn)2log2(xn)+log2(|wn|)...+b)
[0058]l0g2y = l0g2f(s(wl)2log2(xl)+log2(|wl|)+s(w2)2log2(x2)+log2(|w2|h"+s(wn)2log2(xn
)+log2(|wn|)...+b)
[0059]假設(shè)u=log2y,v=log2X,C = log2 |w|,這個公式重新表示為:
[0060]u = log2f (s (wl) 2vl+cl+s (w2) 2v2+c2+...s (wn) 2vn+cn+b)
[0061 ]令 g(x) =2(x),ff(x) = log2f(x),則計算公式簡寫為:
[0062]u = ff (s(wl )g(vl+cl )+s(w2)g(v2+c2)+---s(wn)g(vn+cn)+b)
[0063]其中,g(x)對應(yīng)第一非線性映射,ff(x)對應(yīng)第二非線性映射。圖4為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法實施例二的計算框圖,如圖4所示,前級輸出作為輸入數(shù)據(jù),輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值為η元向量,首先通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,得到相加后的η項數(shù)據(jù)vl+cl、v2+c2、、、vn+cn,依次將相加后的η項數(shù)據(jù)vl+cl、v2+c2、、、vn+cn進行η次第一非線性映射(g(x) = 2(x)),得到第一非線性映射后的結(jié)果2vl+c;1、2v2+c;2、、、2vn+cn,接著進行η次累加操作得到2vl+d+2v2+d+...2vn+cn+b,如果輸入數(shù)據(jù)或權(quán)重為O,則當(dāng)前累加項維持不變。如果權(quán)重符號位為負,則累加器做減法運算。最后將η次累加操作后的結(jié)果進行第二非線性映射(fT(x))得到處理結(jié)果并進行數(shù)據(jù)輸出。
[0064]如果指數(shù)關(guān)系是以m為底的指數(shù),對數(shù)關(guān)系是以m為底的對數(shù),計算公式寫為:
[0065]y = f(s(wl )rnlogm(xl)+logm(|wl 1 }+s(w2 )rnlogm(x2)+logm( |w21 )+...+s (wn )mlcigm(xn)+lc\(1 wn 1)...+b)
[0066]1gmy = logmf(s(wl)mlogm(xl)+logm(|wl|)+s(w2)mlogm(x2)+logm(|w2|)+---+s(wn)mlogm(xn
)+logm(|wn|)."+b)
[0067]假設(shè)u = i0gmy,v = i0gmX,c = i0gm|w|,這個公式重新表示為:
[0068]U = 1gmf (s(wl )mvl+cl+s (w2 )mv2+c2+...+s (wn )mvn+cn+b)
[0069]u = I ogmf (s (wl )2(vl+cl)*log2m+s (w2 )2(v2+c2)*log2m+...+s (wn) 2(vn+cn)*log2m+b)
[0070]令 g(x) =2(x),ff(x) = l0gmf(x),k=log2m,則計算公式簡寫為:
[0071 ] u = ff(s(wl )g(cl*k+vl*k)+s(w2)g(c2*k+v2*k)+."s(wn)g(cn*k+vn*k)+b)
[0072]其中g(shù)(x)對應(yīng)第一非線性映射,ff(x)對應(yīng)第二非線性映射。如圖5所示,圖5為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法實施例三的計算框圖。上述計算公式中的k為所乘的比例系數(shù),通過在加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前或之后乘以比例系數(shù)k,可將m的M次冪變換轉(zhuǎn)換為2的M次冪變換,使得映射關(guān)系簡單,電路實現(xiàn)上也簡單,進而硬件實現(xiàn)代價低。結(jié)合圖5,本實施的方法包括:
[0073]S201、從η-1級數(shù)據(jù)輸出單元輸出的數(shù)據(jù)(即前級輸出)作為η級的輸入數(shù)據(jù)。
[0074]S202、η級的加法器對本級的輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值做相加操作。
[0075]S203、在輸入數(shù)據(jù)和權(quán)重絕對值相加的通道上,或者在輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的結(jié)果上,乘以比例系數(shù)k,常用的比例系數(shù)k例如型如1+1/2'1-1/2~的比例系數(shù)。
[0076]S204、依次將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射。
[0077]其中,第一非線性映射例如是可以簡化設(shè)計的2的M次冪變換。圖6為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法實施例三中2的M次冪變換示意圖,如圖6所示,具體包括:
[0078]S2041、相加后的數(shù)據(jù)中,數(shù)據(jù)的浮點部分,經(jīng)過譯碼器電路,轉(zhuǎn)換為反映浮點權(quán)實際大小的二進制數(shù)。
[0079]S2042、數(shù)據(jù)的小數(shù)部分,經(jīng)過查表或簡化的組合電路,完成數(shù)據(jù)的指數(shù)變換映射。
[0080]S2043、指數(shù)變換后的數(shù)據(jù),和浮點的權(quán),通過組合電路結(jié)合完成非常簡單的I位對η位乘法,形成最后的結(jié)果。
[0081]S205、累加器對第一非線性映射后輸出的累加項進行η次累加操作。如果輸入數(shù)據(jù)或權(quán)重為0,則當(dāng)前累加項維持不變。如果權(quán)重符號位為負,則累加器做減法運算。
[0082]S206、將η次累加操作后的結(jié)果進行第二非線性映射。一般地,該第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和第一非線性映射的逆映射制定。該變換的一個特例是包括了 2種變換的級聯(lián),其I是神經(jīng)網(wǎng)絡(luò)原始的非線性變換,例如SigmoicUReLU等,其2是調(diào)整數(shù)據(jù)分布規(guī)律的對數(shù)變換。
[0083]S207、將處理結(jié)果進行數(shù)據(jù)輸出。
[0084]例如,對應(yīng)一個形如:y = f (xl*wl+x2*w2+…+xn*wn+b)的計算,x,w,y的原始數(shù)據(jù)精度需要單精度的浮點(32bit),至少也需要16bit的定點數(shù),對應(yīng)的數(shù)據(jù)帶寬按16bit成比例計算,同時需要16bit的乘法器。
[0085]首先可以對x,w,y都進行對數(shù)變換,A=1gmB。實驗表明,變換后的數(shù)據(jù),8比特的量化可以滿足實用的要求,甚至還可以進一步做到6比特,4比特。
[0086]變換后的數(shù)據(jù)記為P.Q,其中P是小數(shù)點前的部分,Q是小數(shù)點后面的部分,P有P位,Q有q位,P+q是數(shù)據(jù)的總比特數(shù)。
[0087]本實施例中用Pv.Qv表示對應(yīng)的,經(jīng)過變換后的X,w,y數(shù)據(jù)。
[0088]因此,經(jīng)過對數(shù)變換后的加法計算就轉(zhuǎn)變?yōu)?
[0089]沒有進位的情況:?1.(^+?*.(^=(?1+?¥).(Qx+Qw)或
[0090]有進位的情況:Px.Qx+Pw.Qw=(Px+Pw+l).(Qx+Qw-1)
[0091]記做:Pt.Qt
[0092]對Pt.Qt做一個簡單的乘法,乘的系數(shù)為:Log2Hi,通過這個乘法,可以把后續(xù)需要做的 mpt.Qt,轉(zhuǎn)換為 2Ps.Qs 來做。而Ps.Qs = Pt.Qt*Log2m。
[0093]在多數(shù)情況下,取2的對數(shù)或指數(shù)可以滿足應(yīng)用要求。特殊情況下,如果適當(dāng)調(diào)整的對數(shù)關(guān)系可以更好地滿足應(yīng)用的要求,可以通過乘這個系數(shù)來適當(dāng)調(diào)節(jié)。通過一次加法,可以滿足的調(diào)整范圍為型如:1+1/2N,1-1/2N的任意系數(shù)。假設(shè)Pt是4bit,Qt是4bit,后續(xù)的計算,Pt直接送到4線轉(zhuǎn)16線的譯碼器,而Qt直接送一個4bit到4bit的查找表,或反映指數(shù)映射數(shù)據(jù)規(guī)律的簡單組合電路。
[0094]圖7為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器實施例一的結(jié)構(gòu)示意圖,如圖7所示,本實施例的神經(jīng)網(wǎng)絡(luò)處理器可以包括:加法電路11、第一非線性映射電路12、累加電路13和第二非線性映射電路14。其中,加法電路11用于將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),輸入數(shù)據(jù)和權(quán)重絕對值為η元向量。第一非線性映射電路12用于依次將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射。累加電路13用于將第一非線性映射后的結(jié)果進行η次累加操作,累加操作包括權(quán)重符號位控制的加法操作和減法操作。第二非線性映射電路14用于將η次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和第一非線性映射的逆映射制定。
[0095]其中,第一非線性映射電路12可以是任意底數(shù)m的M次冪變換電路,還可以是形如y=A*mB,y = B*B的非線性變換電路。優(yōu)選地,第一非線性映射電路12為2的M次冪變換電路,M為輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)中的各項。
[0096]進一步地,當(dāng)?shù)谝环蔷€性映射電路12是m的M次冪變換電路,m不等于2時,為使電路實現(xiàn)簡單,將m的M次冪變換轉(zhuǎn)換為2的M次冪變換,具體地,圖8為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器實施例二的結(jié)構(gòu)示意圖,如圖8所示,在圖7所示神經(jīng)網(wǎng)絡(luò)處理器的基礎(chǔ)上,進一步地,還包括:第一乘法電路15,用于在加法電路11將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前,對輸入數(shù)據(jù)乘以比例系數(shù)K1;和/或,第二乘法電路16,用于在加法電路11將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前,對權(quán)重絕對值乘以比例系數(shù)K2,仏與1(2相等或不等。
[0097]圖9為本發(fā)明神經(jīng)網(wǎng)絡(luò)處理器實施例三的結(jié)構(gòu)示意圖,如圖9所示,在圖7所示神經(jīng)網(wǎng)絡(luò)處理器的基礎(chǔ)上,進一步地,還包括:第三乘法電路17,用于在加法電路11將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之后,對相加后的η項數(shù)據(jù)中的各項乘以比例系數(shù)K3。
[0098]其中,HK3不等于O??蛇x的,K1J2J3可以為1+1/2〃或1-1/2\
[0099]進一步地,輸入數(shù)據(jù)或權(quán)重絕對值等于O時,累加操作為當(dāng)前累加項維持不變;權(quán)重符號位為負時,累加操作為減法操作。累加器處于維持狀態(tài),由于在實際的神經(jīng)網(wǎng)絡(luò)計算過程中,無論數(shù)輸入數(shù)據(jù)還是權(quán)重,存在大量的0,因此這樣可以簡化處理,降低功耗。
[0100]本實施例的裝置,可以用于執(zhí)行圖3所示方法實施例的技術(shù)方案,其實現(xiàn)原理類似,此處不再贅述。
[0101]本實施例提供的神經(jīng)網(wǎng)絡(luò)處理器,通過加法電路將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),接著第一非線性映射電路依次將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射,累加電路將第一非線性映射后的結(jié)果通過累加器進行η次累加操作,累加操作包括權(quán)重符號位控制的加法操作和減法操作,最后第二非線性映射電路將η次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和第一非線性映射的逆映射制定。從而實現(xiàn)了將復(fù)雜的乘法計算轉(zhuǎn)變?yōu)榧臃ㄓ嬎?,提高了量化效率,存儲的容量和帶寬可以壓縮,因此降低了數(shù)據(jù)的存儲需求和帶寬需求,提高了計算效率。而且輸入數(shù)據(jù)不限于0/I 二元量化,使得計算精度滿足實際應(yīng)用網(wǎng)絡(luò)的需求,能適用除神經(jīng)網(wǎng)絡(luò)計算以外更廣范圍的應(yīng)用目標。
[0102]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0103]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明實施例的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明實施例進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實施例各實施例技術(shù)方案的范圍。
【主權(quán)項】
1.一種神經(jīng)網(wǎng)絡(luò)處理器的數(shù)據(jù)處理方法,其特征在于,包括: 通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,所述輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),所述輸入數(shù)據(jù)和所述權(quán)重絕對值為η元向量; 依次將所述輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射;將第一非線性映射后的結(jié)果通過累加器進行η次累加操作,所述累加操作包括權(quán)重符號位控制的加法操作和減法操作; 將η次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,所述第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和所述第一非線性映射的逆映射制定。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一非線性映射為2的M次冪變換,M為所述輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)中的各項。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前,還包括: 對所述輸入數(shù)據(jù)乘以比例系數(shù)仏,和/或,對所述權(quán)重絕對值乘以比例系數(shù)!(^仏與仏相等或不等;或者, 所述通過加法器將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之后,還包括: 對相加后的η項數(shù)據(jù)中的各項乘以比例系數(shù)K3 ; 其中,KhK^K3不等于O。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,HK3為l+l/2NSl-l/2N。5.根據(jù)權(quán)利要求1-4任一項所述的方法,其特征在于, 所述輸入數(shù)據(jù)或所述權(quán)重絕對值等于O時,所述累加操作為當(dāng)前累加項維持不變; 所述權(quán)重符號位為負時,所述累加操作為減法操作。6.根據(jù)權(quán)利要求1-5任一項所述的方法,其特征在于,通過模擬電路實現(xiàn)所述第一非線性映射或所述第二非線性映射或所述累加操作。7.一種神經(jīng)網(wǎng)絡(luò)處理器,其特征在于,包括: 加法電路,用于將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加,所述輸入數(shù)據(jù)為前一級輸出的數(shù)據(jù),所述輸入數(shù)據(jù)和所述權(quán)重絕對值為η元向量; 第一非線性映射電路,用于依次將所述輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)進行η次第一非線性映射; 累加電路,用于將第一非線性映射后的結(jié)果進行η次累加操作,所述累加操作包括權(quán)重符號位控制的加法操作和減法操作。 第二非線性映射電路,用于將η次累加操作后的結(jié)果進行第二非線性映射得到處理結(jié)果并進行數(shù)據(jù)輸出,所述第二非線性映射根據(jù)神經(jīng)網(wǎng)絡(luò)非線性映射的規(guī)律和所述第一非線性映射的逆映射制定。8.根據(jù)權(quán)利要求7所述的神經(jīng)網(wǎng)絡(luò)處理器,其特征在于,所述第一非線性映射電路為2的M次冪變換電路,M為所述輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加后的η項數(shù)據(jù)中的各項。9.根據(jù)權(quán)利要求7所述的神經(jīng)網(wǎng)絡(luò)處理器,其特征在于,還包括: 第一乘法電路,用于在所述加法電路將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前,對所述輸入數(shù)據(jù)乘以比例系數(shù)K1;和/或, 第二乘法電路,用于在所述加法電路將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之前,對所述權(quán)重絕對值乘以比例系數(shù)!^,!^與仏相等或不等; 或者, 第三乘法電路,用于在所述加法電路將輸入數(shù)據(jù)和相應(yīng)的權(quán)重絕對值相加之后,對相加后的η項數(shù)據(jù)中的各項乘以比例系數(shù)K3 ; 其中,KhK^K3不等于O。10.根據(jù)權(quán)利要求9所述的神經(jīng)網(wǎng)絡(luò)處理器,其特征在于,HK3為l+l/2NSl-l/2N。11.根據(jù)權(quán)利要求7-10任一項所述的神經(jīng)網(wǎng)絡(luò)處理器,其特征在于,所述輸入數(shù)據(jù)或所述權(quán)重絕對值等于O時,所述累加操作為當(dāng)前累加項維持不變; 所述權(quán)重符號位為負時,所述累加操作為減法操作。
【文檔編號】G06N3/06GK105844330SQ201610165618
【公開日】2016年8月10日
【申請日】2016年3月22日
【發(fā)明人】費旭東
【申請人】華為技術(shù)有限公司