TWI837298B - 類神經網路處理裝置、類神經網路處理方法及類神經網路處理程式 - Google Patents
類神經網路處理裝置、類神經網路處理方法及類神經網路處理程式 Download PDFInfo
- Publication number
- TWI837298B TWI837298B TW109103954A TW109103954A TWI837298B TW I837298 B TWI837298 B TW I837298B TW 109103954 A TW109103954 A TW 109103954A TW 109103954 A TW109103954 A TW 109103954A TW I837298 B TWI837298 B TW I837298B
- Authority
- TW
- Taiwan
- Prior art keywords
- processing
- aforementioned
- neural network
- input
- result
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 238
- 238000003672 processing method Methods 0.000 title claims description 20
- 230000001537 neural effect Effects 0.000 title claims 4
- 238000013139 quantization Methods 0.000 claims abstract description 102
- 238000013528 artificial neural network Methods 0.000 claims description 78
- 238000000034 method Methods 0.000 claims description 39
- 230000008569 process Effects 0.000 claims description 38
- 238000004364 calculation method Methods 0.000 claims description 22
- 238000006243 chemical reaction Methods 0.000 claims description 22
- 230000003247 decreasing effect Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 8
- 230000004913 activation Effects 0.000 claims description 4
- 238000010606 normalization Methods 0.000 claims description 4
- 239000000872 buffer Substances 0.000 abstract description 64
- 238000013527 convolutional neural network Methods 0.000 description 87
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 13
- 230000011218 segmentation Effects 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 5
- 230000007423 decrease Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000010354 integration Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 1
- 101100233916 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR5 gene Proteins 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000012887 quadratic function Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Abstract
CNN處理裝置具備有:輸入緩衝器,儲存給予至CNN的輸入訊號;權重緩衝器,儲存權重;卷積運算部,進行包含輸入訊號與權重的積和運算之卷積運算;儲存部,將卷積運算的運算結果設為輸入,並依據事先規定的條件來轉換已輸入之值,而將已轉換的資料的位元精度減少並量化,且將該減少並量化之轉換-量化處理的結果設為輸出時,儲存已對轉換-量化處理的輸入與輸出互相建立關連的表格;及處理部,參照表格來取得與卷積運算的運算結果相對應的轉換-量化處理的輸出。
Description
本發明是有關於一種類神經網路處理裝置、類神經網路處理方法及類神經網路處理程式。
近年來,卷積類神經網路(Convolutional Neural Network:CNN)已作為用於將圖像分類成複數個類別的深度類神經網路而逐漸受到注目。CNN的特徵在於:在深度類神經網路中具有卷積層。在卷積層中,會對輸入資料應用濾波器。更詳細而言,在卷積層中是進行積和運算,前述積和運算是使濾波器的窗口以一定的步輻(stride)滑動,來對濾波器的要素與輸入資料之對應的要素進行乘算,並求出其和。
圖13是顯示一般的CNN的訊號處理之流程的圖。CNN具有輸入層、中間層及輸出層(例如,參照非專利文獻1及非專利文獻2)。在中間層中是進行對輸入訊號乘上權重的卷積運算。
如圖13所示,在中間層中,是對卷積運算的結果,因應需要而進行ReLU(線性整流單元,Rectified Linear Units)之檢測處理或BN(批次正規化,Batch Normalization)等之正規化(以下,有時會將這些統稱為「轉換」)。又,根據情況來進行池化(pooling)處理。
透過卷積運算而提取出的輸入訊號之特徵,會被放入由全連接層所形成的分類器,並且從輸出層輸出分類結果。如此,在CNN等之類神經網路中,可將反覆進行積和運算及轉換運算之情形列舉為其特徵的1個。
在此,使用於CNN的輸入資料的輸入值或權重雖然會有包含小數點的情況,但是在以往的CNN等之類神經網路的積和運算中,如圖13的「輸入訊號」、「權重」及「卷積運算」的各值所示,會進行確保了運算結果的位數之形式的運算處理。如此,在以往的CNN等之類神經網路中,在以多層所構成的中間層等中,變得必須對位數較多的大量的輸入值,進行大量的運算處理。
先前技術文獻
非專利文獻
非專利文獻1:K.He、X.Zhang、S.Ren、與J.Sun. Deep residual learning for image recognition. In Proc.of CVPR,2016.(*ResNet)
非專利文獻2:麻生英樹等,「Deep Learning 深層學習」 近代科學社,2015年11月
發明欲解決之課題
但是,藉由FPGA(現場可程式閘陣列,Field Programmable Gate Array)或微電腦等之組入用的硬體來實作以往的CNN等之類神經網路的情況下,因為計算資源有限度,所以對位數較多之大量的輸入值之因大量的運算處理所造成的處理速度的降低即成為課題。
本發明是為了解決上述之課題而作成的發明,目的在於提供一種即使在使用了組入用的硬體之情況下仍然可以抑制類神經網路的處理速度之降低的類神經網路處理裝置、以及類神經網路處理方法。
用以解決課題之手段
為了解決上述之課題,本發明之類神經網路處理裝置的特徵在於具備:第1記憶體,儲存給予至類神經網路的輸入訊號;第2記憶體,儲存前述類神經網路的權重;運算部,進行包含前述輸入訊號與前述權重的積和運算之前述類神經網路的卷積運算;第3記憶體,於將前述運算部所進行之卷積運算的運算結果設為輸入,並依據事先規定的條件來轉換已輸入之值,而將已轉換的資料的位元精度減少並量化,且將該減少並量化之轉換-量化處理的結果設為輸出時,儲存已對前述轉換-量化處理的輸入與輸出互相建立關連的表格;及處理部,參照前述表格,取得與前述運算部所進行之運算結果相對應的前述轉換-量化處理的輸出。
為了解決上述之課題,本發明之類神經網路處理方法的特徵在於具備以下步驟:第1步驟,將給予至類神經網路的輸入訊號儲存於第1記憶體;第2步驟,將前述類神經網路的權重儲存於第2記憶體;第3步驟,進行包含前述輸入訊號與前述權重的積和運算之前述類神經網路的卷積運算;第4步驟,於將前述第3步驟中之卷積運算的運算結果設為輸入,並依據事先規定的條件來轉換已輸入之值,而將已轉換的資料的位元精度減少並量化,且將該減少並量化之轉換-量化處理的結果設為輸出時,將已對前述轉換-量化處理的輸入與輸出互相建立關連的表格儲存於第3記憶體;及第5步驟,參照前述表格,取得與在前述第3步驟中之運算結果相對應的前述轉換-量化處理的輸出。
為了解決上述之課題,本發明之類神經網路處理程式的特徵在於使電腦執行以下步驟:第1步驟,將給予至類神經網路的輸入訊號儲存於第1記憶體;第2步驟,將前述類神經網路的權重儲存於第2記憶體;第3步驟,進行包含前述輸入訊號與前述權重的積和運算之前述類神經網路的卷積運算;第4步驟,於將前述第3步驟中之卷積運算的運算結果設為輸入,並依據事先規定的條件來轉換已輸入之值,而將已轉換的資料的位元精度減少並量化,且將該減少並量化之轉換-量化處理的結果設為輸出時,將已對前述轉換-量化處理的輸入與輸出互相建立關連的表格儲存於第3記憶體;及第5步驟,參照前述表格,取得與在前述第3步驟中之運算結果相對應的前述轉換-量化處理的輸出。
發明效果
根據本發明,由於是依據事先規定的條件來轉換卷積運算的運算結果,且將已轉換的資料的位元精度減少並量化,而參照已將該減少並量化之轉換-量化處理的輸入與輸出互相建立關連的表格,來取得與卷積運算的運算結果相對應的轉換-量化處理的輸出,因此即使在使用了組入用的硬體之情況下,仍然可以抑制類神經網路的處理速度之降低。
用以實施發明之形態
以下,參照圖1至圖12來詳細地說明本發明之較佳的實施形態。
[CNN處理裝置之概要]
本發明之類神經網路處理裝置是使用CNN來作為類神經網路的CNN處理裝置1。
本實施形態之CNN處理裝置1是以下的運算處理裝置:進行給予至CNN的輸入訊號與CNN的權重之積和運算並輸出運算結果,且進一步對運算結果應用ReLU來轉換積和運算的結果。此運算處理包含:CNN的中間層中的卷積層之積和運算(以下,有時會稱為「卷積運算」)、與依據事先規定的條件來轉換卷積運算的運算結果之轉換運算。再者,在以下,說明對卷積運算的運算結果應用ReLU之情況來作為「轉換」的一例。
CNN處理裝置1是進行輸入訊號與權重的卷積運算,並且將ReLU應用於該運算結果,而得到1層份的卷積層的輸出。
在以下,為了簡單說明,是設成以下構成:將ReLU應用於卷積層的積和運算之結果,並將所計算出的運算結果使用作為下一個卷積層的輸入訊號。CNN處理裝置1是反覆進行輸入訊號與權重的積和運算及轉換運算,來執行與事先設定的CNN模型所具有的卷積層之數量相應的次數之積和運算及轉換處理。
[CNN處理裝置的功能方塊]
上述CNN處理裝置1具備輸入緩衝器(第1記憶體)10、權重緩衝器(第2記憶體)11、卷積運算部(運算部)12、運算結果緩衝器13、處理部14、輸出緩衝器15、及儲存部(第3記憶體)16。
輸入緩衝器10是儲存給予至CNN的輸入訊號之記憶體。更詳細而言,輸入緩衝器10是藉由後述的主儲存裝置103而實現,且可在此輸入緩衝器10中儲存例如從外部所給予的圖像資料等。給予至輸入緩衝器10的輸入訊號亦可為已事先進行前處理的圖像資料。作為前處理的例子,可列舉單色轉換、對比調整、及亮度調整等。又,亦可將輸入訊號縮小,以成為與在CNN處理裝置1中事先設定的CNN模型相應而設定的位元深度。
作為給予至輸入緩衝器10的輸入訊號之值,可使用例如以32位元或16位元精度之浮點的陣列所表現的包含小數點之值、或將這些值減少成事先設定的位元數表現之值。
權重緩衝器11是儲存CNN的權重之記憶體。更詳細而言,權重緩衝器11是藉由後述的主儲存裝置103而實現,在此權重緩衝器11中載入有CNN的權重參數,前述CNN的權重參數是事先儲存於設置在CNN處理裝置1的外部的伺服器(未圖示)或儲存部16等。在本實施形態中,作為權重之值,可使用以32位元或16位元精度之浮點的陣列所表現的包含小數點之值、或將這些值減少成事先設定的位元數表現之值。
卷積運算部12是進行包含輸入訊號與權重之積和運算的CNN的卷積運算,前述輸入訊號是儲存於輸入緩衝器10,前述權重是儲存於權重緩衝器11。更詳細而言,卷積運算部12是從輸入緩衝器10與權重緩衝器11分別讀出輸入訊號與權重,並進行與構成CNN處理裝置1中事先設定的CNN模型的卷積層相應之卷積運算。卷積運算部12所輸出的運算結果是供給至運算結果緩衝器13。
運算結果緩衝器13是緩衝卷積運算部12所進行之卷積運算的結果。
處理部14是參照已儲存在儲存部16的表格160,而對從運算結果緩衝器13所讀出的卷積運算之結果進行了轉換及量化的處理(以下,有時會稱為「轉換-量化處理」),並將已進行轉換及量化的處理之結果輸出。更詳細而言,處理部14是讀出已儲存在運算結果緩衝器13的卷積運算之結果,並參照儲存有轉換-量化處理的輸入輸出關係之表格160,來取得並輸出與轉換-量化處理之輸入相對應之值。
在此,卷積運算之結果的轉換是指以下之情形:包含例如ReLU等之激勵函數的應用、或使用了BN等之正規化,而依據事先規定的條件來轉換卷積運算的運算結果。激勵函數會決定卷積運算的運算結果。
對卷積運算之結果所應用的ReLU為下述之斜坡函數:若卷積運算之結果為負則為0,若為正則使卷積運算之結果轉換成進行線性轉換後之值。如此,事先規定有ReLU等對卷積運算的運算結果進行轉換的處理之輸入輸出關係。
另一方面,已將卷積運算的運算結果透過ReLU等而轉換之值,會為了運算負荷的減輕而將位元精度減少並量化。資料的量化是指包含例如四捨五入、無條件進位、無條件捨去、最近鄰數值簡化等已眾所皆知的數值簡化處理,來將已透過ReLU轉換卷積運算的結果之值,例如包含小數點之值整數化等,而施加限制之情形。
處理部14是參照表格160,前述表格160是將例如對ReLU的輸入,亦即,積和運算的結果、與已將ReLU的輸出進一步量化後的值互相建立關連而儲存。因此,處理部14可以將卷積運算的運算結果之由ReLU所進行的轉換處理與量化處理一起執行。
亦即,處理部14是參照表格160,取得經過2個運算處理後之值,前述2個運算處理是與卷積運算的結果相對應之由ReLU等所進行的轉換處理及量化處理。
輸出緩衝器15是暫時地儲存處理部14所取得的輸出。
儲存部16具備表格160。儲存部16是保存輸出緩衝器15所暫時地儲存之來自處理部14的輸出。
表格160是將轉換-量化處理的輸入與輸出互相建立關連來儲存。更具體而言,表格160是儲存以下資料:將事先規定的ReLU等之轉換處理的輸入、與藉由事先設定的數值簡化處理而對由ReLU所轉換之值進行量化後之輸出互相建立關連的資料。
[CNN處理裝置的硬體構成]
接著,利用圖2的方塊圖來說明具有上述之功能的CNN處理裝置1的硬體構成的例子。
如圖2所示,CNN處理裝置1可以藉由電腦與程式來實現,前述電腦具備例如透過匯流排101而連接的處理器102、主儲存裝置103、通訊介面104、輔助儲存裝置105、輸入輸出裝置106,前述程式是控制這些硬體資源之程式。
在主儲存裝置103中,事先保存有用於讓處理器102進行各種控制或運算的程式。藉由處理器102與主儲存裝置103,可實現圖1所示之包含卷積運算部12及處理部14的CNN處理裝置1的各種功能。
藉由主儲存裝置103,可實現圖1中所說明的輸入緩衝器10、權重緩衝器11、運算結果緩衝器13、及輸出緩衝器15。
通訊介面104是用於透過通訊網路NW來進行與各種外部電子機器的通訊之介面電路。亦可透過通訊介面104,從外部的伺服器等接收CNN處理裝置1所使用的圖像資料等之輸入訊號或權重。
輔助儲存裝置105是以可讀寫的儲存媒體、與用於對該儲存媒體讀寫程式或資料等之各種資訊的驅動裝置所構成。在輔助儲存裝置105中,可以使用硬碟或快閃記憶體等之半導體記憶體來作為儲存媒體。
輔助儲存裝置105具有儲存區域或程式保存區域,前述儲存區域是儲存從外部取得的輸入資料或權重,前述程式保存區域是保存用於讓CNN處理裝置1進行卷積運算等之CNN的運算處理的程式。藉由輔助儲存裝置105,可實現圖1中所說明的儲存部16。此外,亦可具有例如用於備份上述資料或程式等的備份區域等。
輸入輸出裝置106是藉由I/O端子所構成,前述I/O端子供來自外部機器的訊號輸入,且將訊號輸出至外部機器。亦可透過輸入輸出裝置106,並設置未圖示的顯示裝置等,來顯示藉由CNN處理裝置1所輸出的運算結果。
在此,已保存在輔助儲存裝置105的程式保存區域的程式,亦可為按照本說明書中所說明的CNN處理方法的順序而依時間序列來進行處理的程式,亦可為並列地、或在進行了呼叫時等之必要的時間點下進行處理的程式。又,程式亦可為藉由1個電腦來處理的程式,亦可為藉由複數個電腦來分散處理的程式。
[CNN處理方法]
接著,參照圖3來說明具有上述之構成的CNN處理裝置1的動作之概要。首先,輸入緩衝器10及權重緩衝器11是分別暫時地儲存從設置在CNN處理裝置1的外部之伺服器等所給予的輸入訊號A及權重U(步驟S1、步驟S2)。
輸入訊號A為已向量化的輸入圖像資料,並具有縱方向與橫方向的維度。輸入訊號A之值是以例如複數位之包含小數點之值來表現。另一方面,權重U是以矩陣所表示之核心(kernel)的要素,且是藉由CNN的學習來調整及更新而最終地決定的參數。針對權重U之值,也具有縱方向及橫方向的維度,各要素是以例如複數位之包含小數點之值來表現。
接著,卷積運算部12分別從輸入緩衝器10及權重緩衝器11讀出輸入訊號A及權重U,並且進行卷積運算(步驟S3)。更詳細而言,卷積運算部12是對輸入訊號A的向量與權重U的矩陣進行乘算。
具體而言,卷積運算部12是使事先設定之CNN的濾波器的窗口以預定的步幅來滑動。卷積運算部12是在濾波器各自的位置上,對權重U的要素、與輸入訊號A之對應的要素進行乘算,並且求出其和。
卷積運算部12是將此積和運算之卷積運算的運算結果X保存於運算結果緩衝器13之對應的位置(步驟S4)。
之後,處理部14從運算結果緩衝器13讀出卷積運算的結果X,並參照儲存部16的表格160,而取得對運算結果X進行轉換-量化處理後的輸出Y(步驟S5)。所取得的輸出Y會暫時地儲存於輸出緩衝器15,並藉由處理器102而被讀出並輸出(步驟S6)。
再者,亦可因應於需要而對處理部14所取得的輸出Y進行已眾所皆知的池化(pooling)處理(參照非專利文獻2)。在步驟S6中所得到的輸出Y,是作為CNN的特徵提取部的輸出,而輸入至後續之構成未圖示的分類器的全連接層,並且進行輸入訊號A的圖像資料的判別。
如以上所說明,本發明之CNN處理裝置1是將表格160儲存於儲存部16,前述表格160是將對ReLU等之轉換處理的輸入、與對已藉由ReLU所轉換之值進行量化後的輸出互相建立關連的表格。CNN處理裝置1是參照表格160,而取得與卷積運算的運算結果相對應之轉換-量化處理的輸出。因此,和將ReLU等之轉換處理、與對已轉換之值的量化處理各自獨立來執行的情況相較之下,可以減少CNN處理裝置1的計算負荷。又,作為其結果,變得可做到CNN的訊號處理的高速化。
[第1實施形態]
接著,作為具有上述之構成的CNN處理裝置1的具體的例子,說明本發明的第1實施形態之CNN處理裝置1。圖4是顯示CNN處理裝置1的處理部14的功能構成的方塊圖。CNN處理裝置1的其他構成和圖1中已說明的構成是同樣的。又,圖5是說明表格160的資料構造的圖。圖6是說明處理部14所進行之轉換-量化處理的圖。
[處理部之功能方塊]
處理部14具備輸入判定部140及輸出取得部141。
輸入判定部140是從運算結果緩衝器13讀出卷積運算的運算結果,並且進行與事先設定的轉換-量化處理的各輸入區間之比較,而對卷積運算的運算結果,亦即包含轉換-量化處理的輸入之值的輸入區間進行判定。
在此,已儲存在儲存部16的表格160是儲存以下資料:將輸入區間的每一個、與對已藉由ReLU等所轉換之值進行量化後之值互相建立關連之資料,前述輸入區間是將轉換-量化處理的輸入分割成連續的複數個區間之輸入區間。
具體而言,如圖5所示,在表格160中,是將例如轉換-量化處理的輸入分成5個區間,而儲存有已將各輸入區間與轉換-量化處理的輸出互相建立關連的資料。例如,當卷積運算的運算結果X為「1」的情況下,輸入判定部140是藉由與各輸入區間的比較,來判定運算結果X相當於輸入區間「1≦X<2」。
輸出取得部141是參照儲存部16所儲存的表格160,來取得對應於輸入區間的轉換-量化處理之輸出Y,前述輸入區間是因應於輸入判定部140的判定結果。
具體而言,如圖6所示,輸出取得部141是取得與藉由輸入判定部140所判定出的5個輸入區間當中的其中任一個相對應的轉換-量化處理之輸出Y。在圖6所示之轉換-量化處理的例子中,是將根據ReLU之轉換處理、以及根據事先設定的數值簡化處理之量化處理之2個運算處理一起進行。
[CNN處理方法]
接著,參照圖3來說明具有上述之輸入判定部140的本實施形態之CNN處理裝置1的動作。再者,在本實施形態之CNN處理方法中,從步驟S1到步驟S4是和已在CNN處理方法的概要中所說明的處理同樣。
首先,輸入緩衝器10及權重緩衝器11是分別暫時地儲存從設置在CNN處理裝置1的外部之伺服器等所給予的輸入訊號A及權重U(步驟S1、步驟S2)。
接著,卷積運算部12分別從輸入緩衝器10及權重緩衝器11讀出輸入訊號A及權重U,並且進行卷積運算(步驟S3)。更詳細而言,卷積運算部12是對輸入訊號A的向量與權重U的矩陣進行乘算。
接著,卷積運算部12將根據此積和運算之卷積運算的運算結果X保存於運算結果緩衝器13之對應的位置(步驟S4)。
之後,處理部14從運算結果緩衝器13讀出卷積運算的結果X,並參照儲存部16的表格160,而取得對運算結果X進行轉換-量化處理後的輸出Y(步驟S5)。更詳細而言,輸入判定部140是針對卷積運算的結果X,亦即轉換-量化處理的輸入X,按事先設定的轉換-量化處理的每個輸入區間來進行值的比較,而判定包含運算結果X的值的輸入區間。之後,輸出取得部141是參照表格160,來取得與輸入判定部140所判定出的輸入區間相對應的轉換-量化處理之輸出Y。
所取得的輸出Y會暫時地儲存於輸出緩衝器15,並藉由處理器102而被讀出並輸出(步驟S6)。
如以上所說明,根據第1實施形態之CNN處理裝置1,即可判定卷積運算的運算結果亦即轉換-量化處理的輸入之值,在轉換-量化處理的連續的複數個輸入區間當中包含於哪一個輸入區間,而依據判定結果,並參照表格160來取得轉換-量化處理的輸出。
因此,由於可以藉由輸入區間的判定及表格160的參照來執行ReLU等之轉換處理、與卷積運算的運算結果的量化處理,因此即使在使用了組入用的硬體之情況下,仍然可以抑制CNN的運算負荷的減少及處理速度的降低。
又,顯示轉換-量化處理的輸入輸出關係的表格160是保存於輔助儲存裝置105等之硬體的儲存區域。因此,可以藉由因應於類神經網路的形態來置換表格160之值,而更靈活地藉由硬體來實現具有所期望的處理功能的類神經網路。
[第2實施形態]
接著,說明本發明的第2實施形態。再者,在以下的說明中,針對和上述之第1實施形態相同的構成是附加相同的符號,並省略其說明。
在第1實施形態中已針對以下情況進行說明:處理部14具備輸入判定部140,輸入判定部140是比較卷積運算的運算結果、與轉換-量化處理中的連續的複數個輸入區間。相對於此,在第2實施形態中,處理部14具備閾值處理部(第1閾值處理部)142,前述閾值處理部142是進行對轉換-量化處理的輸入之閾值處理。以下,以和第1實施形態不同的構成為中心來說明。
[處理部之功能方塊]
處理部14具備輸出取得部141及閾值處理部142。
閾值處理部142是從運算結果緩衝器13讀出卷積運算的運算結果,並進行和對轉換-量化處理的輸入所事先設定的閾值之比較。
在此,在本實施形態之儲存部16的表格160A中,如圖8所示,對轉換-量化處理的輸入設定有例如5個閾值,且儲存有已將各閾值與轉換-量化處理的輸出互相建立關連的資料。
閾值處理部142是比較例如卷積運算的運算結果X為小於所設定的閾值或為閾值以上。具體而言,在卷積運算中運算結果X為「1」的情況下,閾值處理部142是輸出運算結果X(「1」)為小於所設定的閾值「2」且為閾值「1」以上之比較結果。
輸出取得部141是依據閾值處理部142的比較結果,參照表格160A,取得與因應於比較結果之輸入的閾值相對應的轉換-量化處理的輸出Y。藉由輸出取得部141所取得的輸出是暫時地儲存於輸出緩衝器15。
[CNN處理方法]
接著,參照圖9來說明具有上述之閾值處理部142的本實施形態之CNN處理裝置1的動作。再者,在本實施形態之CNN處理方法中,從步驟S1到步驟S4是和已在圖3的CNN處理方法的概要中所說明的處理同樣。
首先,輸入緩衝器10及權重緩衝器11是分別暫時地儲存從設置在CNN處理裝置1的外部之伺服器等所給予的輸入訊號A及權重U(步驟S1、步驟S2)。
接著,卷積運算部12分別從輸入緩衝器10及權重緩衝器11讀出輸入訊號A及權重U,並且進行卷積運算(步驟S3)。更詳細而言,卷積運算部12是對輸入訊號A的向量與權重U的矩陣進行乘算。
接著,卷積運算部12將根據此積和運算之卷積運算的運算結果X保存於運算結果緩衝器13之對應的位置(步驟S4)。
之後,處理部14從運算結果緩衝器13讀出卷積運算的結果X,並參照儲存部16的表格160A,而取得對運算結果X進行轉換-量化處理後的輸出Y(步驟S5A)。更詳細而言,閾值處理部142是針對卷積運算的結果X,進行和對轉換-量化處理的輸入所事先設定的閾值之比較,並且輸出低於運算結果X的閾值。之後,輸出取得部141是參照表格160A,來取得藉由閾值處理部142所輸出之與輸入的閾值相對應的輸出Y。
所取得的輸出Y會暫時地儲存於輸出緩衝器15,並藉由處理器102而被讀出並輸出(步驟S6)。
如以上所說明,根據第2實施形態之CNN處理裝置1,可將對轉換-量化處理的輸入所事先設定的閾值、與將該閾值和轉換-量化處理的輸出互相建立關連的表格160A儲存於儲存部16。又,輸出取得部141是依據卷積運算的運算結果與閾值的比較結果,並參照表格160A來取得轉換-量化處理的輸出。
因此,可以藉由閾值處理來執行對卷積運算的運算結果之根據ReLU等之轉換處理、與卷積運算的運算結果的量化處理。從而,在轉換-量化處理的輸出為單調增加或單調減少的情況下,可以藉由和閾值的比較而以唯一的形式決定轉換-量化處理的輸出。
特別是,相對於使用了輸入區間之比較必須進行逐次處理的構成,在藉由某特定的硬體來實現CNN處理裝置1的情況下,可以讓輸入與閾值之比較一併地進行。從而,根據CNN處理裝置1,即使是使用了組入用的硬體的情況下,仍然可以更高速地進行CNN的運算處理。
[第3實施形態]
接著,說明本發明的第3實施形態。再者,在以下的說明中,針對和上述之第1及第2實施形態相同的構成是附加相同的符號,並省略其說明。
在第2實施形態中是說明以下情況:在轉換-量化處理的輸出為單調增加或單調減少的情況下,閾值處理部142是進行和對轉換-量化處理的輸入所事先設定的閾值之比較。相對於此,在第3實施形態中,是依據分割資訊而僅在轉換-量化處理的輸入之值所屬的其中任一個輸入的區間內進行閾值處理,前述分割資訊是對轉換-量化處理的輸出為單調增加之輸入的區間、與單調減少之輸入的區間進行識別之資訊。以下,以和第1及第2實施形態不同的構成為中心來說明。
[處理部之功能方塊]
處理部14具備有輸入判定部140、輸出取得部141、及閾值處理部(第2閾值處理部)142。
輸入判定部140是依據分割資訊,來判定由前述運算部所進行之卷積運算的運算結果X所屬的前述轉換-量化處理之輸入的區間,前述分割資訊是對轉換-量化處理的輸出為單調增加之輸入的區間、與單調減少之輸入的區間進行識別之資訊。
閾值處理部142是在藉由輸入判定部140所判定出之輸入的區間內,比較卷積運算部12之運算結果X、與對轉換-量化處理的輸入所事先設定的複數個閾值,而輸出與運算結果X相對應的閾值。
輸出取得部141是參照儲存部16所儲存的表格160B,來取得與藉由閾值處理部142所輸出之閾值相對應的轉換-量化處理的輸出Y。
儲存部16是儲存表格160B。如圖11所示,在表格160B中,儲存有將分割資訊、複數個閾值、及轉換-量化處理的輸出互相建立關連的資料,前述分割資訊是對轉換-量化處理的輸出為單調增加之輸入的區間、與單調減少之輸入的區間進行識別之資訊,前述複數個閾值是對轉換-量化處理的輸入所事先設定的閾值,前述轉換-量化處理的輸出是與複數個閾值的每一個相對應。
分割資訊在例如已將透過激勵函數等之轉換處理的卷積運算的運算結果進一步量化的輸出,以如二次函數一般地單調增加的區間與單調減少的區間來構成的情況下,包含表示切換該單調增加與單調減少的頂點之資訊等。
如圖11的例子所示,在轉換-量化處理的輸入輸出之關係中,輸出Y以輸入X=6為交界而為單調增加及單調減少。
在圖11的例子中,設成例如卷積運算的運算結果X(輸入X)為小於「6」(X<6)。在此情況下,輸入判定部140會判定為對轉換-量化處理的輸入X是屬於單調增加之輸入的區間。
[CNN處理方法]
接著,參照圖12來說明具有上述之構成的本實施形態之CNN處理裝置1的動作。再者,在本實施形態之CNN處理方法中,從步驟S1到步驟S4是和圖3的CNN處理方法的概要中所說明的處理同樣。
首先,輸入緩衝器10及權重緩衝器11是分別暫時地儲存從設置在CNN處理裝置1的外部之伺服器等所給予的輸入訊號A及權重U(步驟S1、步驟S2)。
接著,卷積運算部12分別從輸入緩衝器10及權重緩衝器11讀出輸入訊號A及權重U,並且進行卷積運算(步驟S3)。更詳細而言,卷積運算部12是對輸入訊號A的向量與權重U的矩陣進行乘算。
接著,卷積運算部12將根據此積和運算之卷積運算的運算結果X保存於運算結果緩衝器13之對應的位置(步驟S4)。
之後,處理部14從運算結果緩衝器13讀出卷積運算的結果X,並參照儲存部16的表格160B,而取得對運算結果X進行轉換-量化處理後的輸出Y(步驟S5B)。
更詳細而言,輸入判定部140是依據分割資訊,來判定對轉換-量化處理的輸入X亦即卷積運算的運算結果X所屬之輸入的區間,前述分割資訊是對轉換-量化處理的輸出為單調增加之輸入的區間、與單調減少之輸入的區間進行識別之資訊。
之後,閾值處理部142是在藉由輸入判定部140所判定出之輸入的區間內,比較卷積運算的運算結果X(輸入X)、與對轉換-量化處理的輸入X所事先設定的閾值,並輸出與比較結果相應的閾值。之後,輸出取得部141是參照表格160B,來取得與藉由閾值處理部142所輸出之閾值相對應的轉換-量化處理的輸出Y。
所取得的輸出Y會暫時地儲存於輸出緩衝器15,並藉由處理器102而被讀出並輸出(步驟S6)。
如以上所說明,根據第3實施形態之CNN處理裝置1,依據分割資訊來判定轉換-量化處理的輸入X所屬之區間,前述分割資訊是對轉換-量化處理的輸出Y為單調增加之輸入輸出的區間與單調減少之輸入輸出的區間進行識別之資訊。並且,在已判定的輸入的區間內,進行對轉換-量化處理的輸入X之閾值處理,並且參照表格160B,而取得轉換-量化處理的輸出Y。
因此,即使在轉換-量化處理的輸入輸出的關係並非單調增加或單調減少的情況下,由於是按每個單調增加及單調減少的區間來進行閾值處理,因此仍然可以更高速地進行CNN的運算處理。
以上,雖然針對本發明的類神經網路處理裝置、類神經網路處理方法、及類神經網路處理程式中的實施形態進行了說明,但是本發明並非限定於所說明的實施形態,且可在請求項所記載之發明的範圍內進行本發明所屬技術領域中具有通常知識者可設想得到的各種變形。
例如,在所說明的實施形態中,雖然列舉CNN作為類神經網路的一例來說明,但是類神經網路處理裝置所採用的類神經網路並不受限於CNN。
再者,和在此所揭示的實施形態相關連而記載的各種功能方塊、模組、及電路,可使用以下來執行:通用處理器、GPU、數位訊號處理器(DSP)、特定應用積體電路(ASIC)、FPGA或其他的可程式邏輯元件、離散閘(discrete gate)或電晶體邏輯(transistor logic)、離散硬體零件、或為了實現上述功能而設計之上述任何一種的組合。
雖然可以使用微處理器來作為通用處理器,但是也可以取代地使用以往技術之處理器、控制器、微控制器、或狀態機器。處理器也可以作為例如DSP與微處理器的組合、複數個微處理器、連接於DSP核心之1個以上的微處理器、或這類的任意的構成即計算元件的組合來實現。
1:CNN處理裝置
10:輸入緩衝器
11:權重緩衝器
12:卷積運算部
13:運算結果緩衝器
14:處理部
15:輸出緩衝器
16:儲存部
101:匯流排
102:處理器
103:主儲存裝置
104:通訊介面
105:輔助儲存裝置
106:輸入輸出裝置
140:輸入判定部
141:輸出取得部
142:閾值處理部
160,160A,160B:表格
A:輸入訊號
NW:通訊網路
S1~S6,S5A,S5B:步驟
U:權重
X:運算結果
Y:輸出
圖1是說明本發明的實施形態之CNN處理裝置的功能之概要的方塊圖。
圖2是顯示本發明的實施形態之CNN處理裝置的硬體構成的方塊圖。
圖3是用於說明本發明的實施形態之CNN處理方法的流程之概要的圖。
圖4是說明第1實施形態之處理部的功能的方塊圖。
圖5是用於說明第1實施形態之表格的構成的圖。
圖6是用於說明第1實施形態之處理部的功能的圖。
圖7是說明第2實施形態之處理部的功能的方塊圖。
圖8是用於說明第2實施形態之表格的構成的圖。
圖9是用於說明第2實施形態之CNN處理方法的流程的圖。
圖10是說明第3實施形態之處理部的功能的方塊圖。
圖11是用於說明第3實施形態之表格的構成的圖。
圖12是用於說明第3實施形態之CNN處理方法的流程的圖。
圖13是用於說明以往的CNN的運算處理的圖。
160:表格
A:輸入訊號
S1~S6:步驟
U:權重
X:運算結果
Y:輸出
Claims (15)
- 一種類神經網路處理裝置,其特徵在於:具備:第1運算部,依據給予至類神經網路的輸入訊號而進行前述類神經網路的第1卷積運算,前述第1卷積運算包含與前述第1權重的積和運算;處理部,將前述第1運算部的運算結果設為輸入,使用顯示前述運算結果與對該運算結果進行了轉換-量化處理時所得到的處理結果之間的關係的資料,取得與前述輸入相對應的前述處理結果,並且將取得之前述處理結果輸出,前述轉換-量化處理包含預定之轉換及量化;及第2運算部,依據前述處理部之前述輸出而進行前述類神經網路的第2卷積運算,前述第2卷積運算包含與前述第2權重的積和運算,前述轉換-量化處理所包含之前述量化是較前述輸入訊號減少位元精度的量化。
- 如請求項1之類神經網路處理裝置,其中前述轉換-量化處理是將包含小數之前述輸入變成較前述輸入訊號減少位元精度而不包含小數之值,前述處理部將前述不包含小數之值作為前述輸出。
- 如請求項1之類神經網路處理裝置,其更具備:儲存部,儲存前述資料所包含之使用於前述轉換-量化處理的參數;及置換部,因應前述類神經網路的態樣而置換前述參數。
- 如請求項1之類神經網路處理裝置,其中前述處理部具有:表格,包含於前述資料,且將前述處理部的輸入分割為複數個區間而成的複數個輸入區間與前述處理部的輸出互相建立關連;輸入判定部,使用前述表格來判定包含有前述處理部之輸入的輸入區間,前述處理部之輸入是基於前述第1卷積運算的運算結果;及 輸出取得部,使用前述表格來因應前述輸入判定部的判定結果而取得前述處理部的輸出。
- 如請求項1之類神經網路處理裝置,其中前述處理部具有:閾值處理部,對基於前述第1卷積運算的運算結果之前述處理部的輸入,輸出與包含於前述資料之預先設定之複數個閾值的比較結果;及輸出取得部,依據與前述閾值處理部之比較結果相對應的閾值,使用包含於前述資料且顯示前述複數個閾值與前述處理結果之間的關係的資料來取得前述處理結果。
- 如請求項5之類神經網路處理裝置,其中前述處理部更具有識別部,前述識別部識別前述處理結果對輸入是單調增加或單調減少,前述閾值處理部依據前述識別部的識別結果而從預先設定之前述複數個閾值中選擇用於前述比較的閾值。
- 如請求項1之類神經網路處理裝置,其中給予至前述類神經網路的輸入訊號是圖像資料,前述圖像資料是預先進行過前處理的圖像資料。
- 如請求項1之類神經網路處理裝置,其更具備通訊介面,前述通訊介面從外部的伺服器取得前述輸入訊號、前述第1權重、或者前述第2權重。
- 如請求項1之類神經網路處理裝置,其中前述轉換-量化處理的轉換包含活性化運算及正規化運算的至少一者。
- 如請求項9之類神經網路處理裝置,其中前述轉換-量化處理是與活性化運算及正規化運算的至少一者一起進行對前述第1卷積運算的運算結果的量化。
- 如請求項1之類神經網路處理裝置,其更具有用於往外部的顯示裝置輸出訊號的輸出部, 前述輸出部是將前述類神經網路處理裝置的前述類神經網路的輸出並且是基於前述第2運算部之運算結果的輸出輸出至前述顯示裝置。
- 如請求項1之類神經網路處理裝置,其中前述類神經網路是具有至少1層中間層的多層類神經網路。
- 如請求項1之類神經網路處理裝置,其中前述處理部是由下列的1個以上所構成:處理器、特定應用積體電路、可程式邏輯元件、離散構件。
- 一種類神經網路處理方法,其特徵在於具備以下步驟:第1運算步驟,依據給予至類神經網路的輸入訊號而進行前述類神經網路的第1卷積運算,前述第1卷積運算包含與前述第1權重的積和運算;處理步驟,將前述第1運算部的運算結果設為輸入,使用顯示前述運算結果與對該運算結果進行了轉換-量化處理時所得到的處理結果之間的關係的資料,取得與前述輸入相對應的前述處理結果,並且將取得之前述處理結果輸出,前述轉換-量化處理包含預定之轉換及量化;及第2運算步驟,依據前述處理部之前述輸出而進行前述類神經網路的第2卷積運算,前述第2卷積運算與前述第2權重的積和運算,前述轉換-量化處理所包含之前述量化是較前述輸入訊號減少位元精度的量化。
- 一種類神經網路處理程式,使電腦執行以下步驟:第1運算步驟,依據給予至類神經網路的輸入訊號而進行前述類神經網路的第1卷積運算,前述第1卷積運算包含與前述第1權重的積和運算;處理步驟,將前述第1運算部的運算結果設為輸入,使用顯示前述運算結果與對該運算結果進行了轉換-量化處理時所得到的處理結果之間的關係的資料,取得與前述輸入相對應的前述處理結果,並且將取得之前述處理結果輸出,前述轉換-量化處理包含預定之轉換及量化;及 第2運算步驟,依據前述處理部之前述輸出而進行前述類神經網路的第2卷積運算,前述第2卷積運算與前述第2權重的積和運算,前述轉換-量化處理所包含之前述量化是較前述輸入訊號減少位元精度的量化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109103954A TWI837298B (zh) | 2020-02-07 | 類神經網路處理裝置、類神經網路處理方法及類神經網路處理程式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109103954A TWI837298B (zh) | 2020-02-07 | 類神經網路處理裝置、類神經網路處理方法及類神經網路處理程式 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202131239A TW202131239A (zh) | 2021-08-16 |
TWI837298B true TWI837298B (zh) | 2024-04-01 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006154992A (ja) | 2004-11-26 | 2006-06-15 | Akita Prefecture | ニューロプロセッサ |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006154992A (ja) | 2004-11-26 | 2006-06-15 | Akita Prefecture | ニューロプロセッサ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7013143B2 (ja) | 畳み込みニューラルネットワークハードウエア構成 | |
WO2017157112A1 (en) | Method and system for bit-depth reduction in artificial neural networks | |
CN110009099B (zh) | 用于确定表示dnn的层的值的定点数格式的方法和系统 | |
CN110555450B (zh) | 人脸识别神经网络调整方法和装置 | |
JP6886747B2 (ja) | ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、およびニューラルネットワーク処理プログラム | |
WO2021208151A1 (zh) | 一种模型压缩方法、图像处理方法以及装置 | |
US11887005B2 (en) | Content adaptive attention model for neural network-based image and video encoders | |
US20190147338A1 (en) | Recognition method, corresponding system and computer program product | |
WO2019194299A1 (ja) | 学習装置、学習方法および学習プログラム | |
CN111240746B (zh) | 一种浮点数据反量化及量化的方法和设备 | |
CN110796624B (zh) | 一种图像生成方法、装置及电子设备 | |
GB2568082A (en) | Hierarchical mantissa bit length selection for hardware implementation of deep neural network | |
CN111160523A (zh) | 基于特征值区域的动态量化方法、系统及介质 | |
CN113689383B (zh) | 一种图像处理方法、装置、设备及存储介质 | |
TWI837298B (zh) | 類神經網路處理裝置、類神經網路處理方法及類神經網路處理程式 | |
EP4293575A1 (en) | Hardware implementation of an attention-based neural network | |
CN110097184B (zh) | 信息处理方法以及信息处理系统 | |
WO2020026475A1 (ja) | ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム | |
US20220391676A1 (en) | Quantization evaluator | |
TW202131239A (zh) | 類神經網路處理裝置、類神經網路處理方法及類神經網路處理程式 | |
CN112950652B (zh) | 机器人及其手部图像分割方法和装置 | |
CN115841590A (zh) | 神经网络推理优化方法、装置、设备及可读存储介质 | |
CN115409159A (zh) | 对象操作方法、装置、计算机设备以及计算机存储介质 | |
JP7040771B2 (ja) | ニューラルネットワーク処理装置、通信装置、ニューラルネットワーク処理方法、およびプログラム | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 |