TWI630544B - 卷積神經網路的運算裝置及方法 - Google Patents

卷積神經網路的運算裝置及方法 Download PDF

Info

Publication number
TWI630544B
TWI630544B TW106104513A TW106104513A TWI630544B TW I630544 B TWI630544 B TW I630544B TW 106104513 A TW106104513 A TW 106104513A TW 106104513 A TW106104513 A TW 106104513A TW I630544 B TWI630544 B TW I630544B
Authority
TW
Taiwan
Prior art keywords
data
layer
convolution
neural network
weighting
Prior art date
Application number
TW106104513A
Other languages
English (en)
Other versions
TW201830232A (zh
Inventor
李一雷
杜源
杜力
管延城
劉峻誠
Original Assignee
耐能股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 耐能股份有限公司 filed Critical 耐能股份有限公司
Priority to TW106104513A priority Critical patent/TWI630544B/zh
Priority to US15/801,887 priority patent/US20180232621A1/en
Application granted granted Critical
Publication of TWI630544B publication Critical patent/TWI630544B/zh
Publication of TW201830232A publication Critical patent/TW201830232A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

一種卷積神經網路的運算方法,包括:對多個輸入數據進行一加法運算以輸出一累加數據;對累加數據進行一位元移位運算以輸出一移位數據;以及對移位數據進行一加權運算以輸出一加權數據,其中加權運算的一因子依據輸入數據的數量、位元移位運算中向右移位的位元數量以及卷積神經網路的一後續層的一縮放權值而定。

Description

卷積神經網路的運算裝置及方法
本發明係關於一種卷積神經網路的運算方法,特別是關於一種執行平均池化運算的裝置及方法。
卷積神經網路(Convolutional Neural Network,CNN)是一種前饋型神經網路,其通常包含多組的卷積層(convolution layer)及池化層(pooling layer)。池化層可針對輸入數據某個區域上的特定特徵進行最大池化(max pooling)或平均池化(average pooling)運算,以減小參數量及神經網路中的運算。以平均池化運算而言,傳統的方式是先進行加法運算,再將加總結果進行除法運算。然而,除法運算需耗費較多的處理器效能,故容易造成硬體資源的負擔過重。此外,當進行多個數據的累加運算時,也容易發生溢位(overflow)的情形。
因此,如何提供一種池化運算方式,可使用較少的處理器效能執行平均池化運算,實為當前重要的課題之一。
有鑑於此,本發明之一目的為提供一種卷積運算裝置及池化運算方法,可避免硬體資源的負擔過重,以增進池化運算的效能。
一種卷積神經網路的運算方法,包括:對多個輸入數據進行一加法運算以輸出一累加數據;對累加數據進行一位元移位運算以輸出一移位數據;以及對移位數據進行一加權運算以輸出一加權數據,其中加權運算的一因子依據輸入數據的數量、位元移位運算中向右移位的位元數量以及卷積神經網路的一後續層的一縮放權值而定。
在一實施例中,加權運算的因子隨縮放權值以及位元移位運 算中向右移位的位元數量呈正比,加權運算的因子隨輸入數據的數量呈反比,加權數據等於移位數據乘以因子。
在一實施例中,位元移位運算中向右移位的位元數量依據一池化窗的規模而定,輸入數據的數量依據池化窗的規模而定。
在一實施例中,後續層為卷積神經網路的一次一層卷積層,縮放權值為次一層卷積層的一濾波器係數,加法運算以及位元移位運算是卷積神經網路的一池化層中的運算。
在一實施例中,池化層中的除法運算整合在次一層卷積層的乘法運算中進行。
一種卷積神經網路的運算方法,包括:在一池化層中對多個輸入數據進行一加法運算以輸出一累加數據;以及在一後續層中對累加數據進行一加權運算以輸出一加權數據,其中加權運算的一因子依據輸入數據的數量以及後續層的一縮放權值而定,加權數據等於累加數據乘以因子。
在一實施例中,後續層為一次一層卷積層,縮放權值為一濾波器係數,加權運算為卷積運算,加權運算的因子等於濾波器係數除以等輸入數據的數量。
在一實施例中,輸入數據的數量依據池化窗的規模而定。
一種卷積神經網路的運算方法包括:將一縮放權值與一原始濾波器係數相乘以產生一加權後濾波器係數;以及在一卷積層對一輸入數據以及加權後濾波器係數進行卷積運算。
在一實施例中,運算方法更包括:對輸入數據進行一位元移位運算;以及將位元移位運算後的輸入數據輸入至該卷積層,其中,縮放權值依據一原始縮放權值以及位元移位運算中向右移位的位元數量而定。
一種卷積神經網路的運算裝置,能夠進行前述之方法。
承上所述,本發明的運算裝置及運算方法中,以兩階段進行平均池化運算,池化單元僅進行加法運算,並搭配位元移位運算,以避免累加過程所造成的數據溢位,再對池化單元的輸出結果進行加權運算,而得到最終的平均結果。由於池化單元並未做除法運算,故可避免處理器耗費較多的效能,進而達成提升池化運算之效能的功效。
1‧‧‧記憶體
2‧‧‧緩衝裝置
21‧‧‧記憶體控制單元
3‧‧‧卷積運算模組
4‧‧‧交錯加總單元
5‧‧‧加總緩衝單元
51‧‧‧部分加總區塊
52‧‧‧池化單元
6‧‧‧係數擷取控制器
7‧‧‧控制單元
71‧‧‧指令解碼器
72‧‧‧數據讀取控制器
ADD_IN、RD、WR‧‧‧線路
C1~Cn‧‧‧數據
DMA‧‧‧直接記憶體存取
F1~Fn、WF1~WFn‧‧‧濾波器係數
P1~Pn‧‧‧數據
W‧‧‧縮放權值
圖1為卷積神經網路的部分層的一示意圖。
圖2為卷積神經網路的整合運算的一示意圖。
圖3為卷積神經網路的一示意圖。
圖4為依據本發明一實施例的一卷積運算裝置的功能方塊圖。
以下將參照相關圖式,說明依據本發明具體實施例的卷積運算裝置及方法,其中相同的元件將以相同的元件符號加以說明,所附圖式僅為說明用途,並非用於侷限本發明。
圖1為卷積神經網路的部分層的一示意圖。請參閱圖1所示,卷積神經網路具有多個運算層,例如卷積層、池化層等,卷積層以及池化層的層數可以是多層,各層的輸出可以當作另一層或後續層的輸入,例如第N層卷積層的輸出是第N層池化層的輸入或是其他後續層的輸入,第N層池化層的輸出是第N+1層卷積層的輸入或是其他後續層的輸入,第N層運算層的輸出可以是第N+1層運算層的輸入。
為了提升運算效能,不同層但性質接近的運算可以適當的整合在一起運算,舉例來說,池化層的池化運算是平均池化運算,除法的運算可以整合在次一層運算層中,次一層運算層例如是卷積層,也就是池化層的平均池化的除法是和次一層卷積層的卷積乘法一起運算。另外,池化層也可以進行移位運算來替代平均計算所需的除法,並將尚未除完的部分整合在次一層運算層中一起計算,也就是池化層的平均池化的除法未能利用移位運算完整替代的部分是和次一層卷積層的卷積乘法一起運算。
圖2為卷積神經網路的整合運算的一示意圖。請參閱圖2所示,在卷積層中,多個數據P1~Pn和多個濾波器係數F1~Fn進行卷積運算以產生多個數據C1~Cn,數據C1~Cn作為池化層的多個輸入數據。在池化層中,多個輸入數據進行一加法運算以輸出一累加數據。在一後續層中對,累加數據進行一加權運算以輸出一加權數據,其中加權運算的一 縮放權值W依據輸入數據的數量以及後續層的一縮放權值而定,加權數據等於累加數據乘以縮放權值W。
舉例來說,後續層可以是次一層卷積層,縮放權值為一濾波器係數,加權運算為卷積運算,加權運算的因子等於濾波器係數除以等輸入數據的數量。另外,輸入數據的數量依據池化窗的規模而定。
另一方面,累加數據在另一層計算之前,可以藉由移位運算來得到部分的除法結果。舉例來說,累加數據可進行一位元移位運算以輸出一移位數據,然後對移位數據進行一加權運算以輸出一加權數據,其中加權運算的一縮放權值W依據輸入數據的數量、位元移位運算中向右移位的位元數量以及卷積神經網路的一後續層的一縮放權值而定。加權運算的縮放權值W隨縮放權值以及位元移位運算中向右移位的位元數量呈正比,加權運算的縮放權值W隨輸入數據的數量呈反比,加權數據等於移位數據乘以縮放權值W。
位元移位運算中向右移位的位元數量依據一池化窗的規模而定,向右移位一個位元相當於除以2一次,若向右移位的位元數量為n,則2的n次方為最接近但不超過池化窗的規模冪次方。以2×2的池化窗為例,池化窗的規模為4,n則為2,向右移位2位元;以3×3的池化窗為例,池化窗的規模為9,n則為3,向右移位3位元。
輸入數據的數量依據池化窗的規模而定。後續層為卷積神經網路的一次一層卷積層,縮放權值為次一層卷積層的一濾波器係數,加法運算以及位元移位運算是卷積神經網路的一池化層中的運算。
舉例來說,若某一特徵區域內有9個數據待進行平均池化運算,可先對該9個數據進行累加而得到一累加值,為避免該累加值發生溢位的情形,可對該累加值進行位元移位運算,例如將該累加值向右移兩個位元,而得到一移位值,即相當於將該累加值除4的效果,再將該移位值乘上一加權係數,而得到一加權值。加權係數的選擇是依據位元移位的偏移量而定,於本實施例中,加權係數為1/2.25,故最終得到的加權值即等同於將該累加值除9的效果。由於位元移位運算及加權運算不會占用太多的處理程序,故透過位元移位及加權兩階段的運算方式,可讓處理器使用較 少的效能便可進行平均池化運算,進而提升池化運算的效能。
圖3為卷積神經網路的整合運算的一示意圖。請參閱圖3所示,卷積層的卷積運算是將輸入的數據與濾波器係數相乘,當輸入的數據需要加權或縮放時,這個加權或縮放的運算可以整合在卷積運算時一起處理。也就是說,卷積層的輸入加權(或縮放)以及卷積運算可以在同一個乘法運算中完成。
輸入至卷積層的數據P1~Pn可以是影像的畫素或是卷積神經網路的上一層的輸出,例如是前一層池化層、隱藏層等。在圖3中,卷積神經網路的運算方法包括:將一縮放權值W與原始的濾波器係數F1~Fn相乘以產生加權後的濾波器係數WF1~WFn;以及在一卷積層對輸入數據P1~Pn以及加權後的濾波器係數WF1~WFn進行卷積運算。原本的卷積運算是輸入的數據P1~Pn與原始的濾波器係數F1~Fn進行乘法,為了整合加權或縮放的運算,卷積層實際運算所使用的係數是加權後的濾波器係數WF1~WFn而非原始的濾波器係數F1~Fn。卷積層的輸入不用額外利用乘法運算來進行加權或縮放。
另外,當加權或縮放需進行除法運算、或是加權或縮放的值小於1,運算方法可先對輸入數據進行一位元移位運算,然後將位元移位運算後的輸入數據輸入至卷積層。縮放權值W依據一原始縮放權值以及位元移位運算中向右移位的位元數量而定。例如原始縮放權值是0.4,位元移位運算則設為向右移位1位元(相當於乘上0.5),然後縮放權值W則設為0.8,這樣整個運算結果仍會是相當於輸入數據有乘上原始縮放權值(0.5*0.8=0.4)。另外,將除法運算改為移位運算可以降低硬體負擔,卷積層的輸入不用額外利用乘法運算來進行加權或縮放。
圖4為依據本發明一實施例的的卷積運算裝置的功能方塊圖。請參閱圖3所示,卷積運算裝置包括一記憶體1、一緩衝裝置2、一卷積運算模組3、一交錯加總單元4、一加總緩衝單元5、一係數擷取控制器6以及一控制單元7。卷積運算裝置可用在卷積神經網路(Convolutional Neural Network,CNN)的應用。
記憶體1儲存待卷積運算的數據,可例如為影像、視頻、音 頻、統計、卷積神經網路其中一層的數據等等。以影像數據來說,其例如是像素(pixel)數據;以視頻數據來說,其例如是視頻視框的像素數據或是移動向量、或是視頻中的音訊;以卷積神經網路其中一層的數據來說,其通常是一個二維陣列數據,以影像數據而言,則通常是一個二維陣列的像素數據。另外,在本實施例中,係以記憶體1為一靜態隨機存取記憶體(static random-access memory,SRAM)為例,其除了可儲存待卷積運算的數據之外,也可以儲存卷積運算完成的數據,並且可以具有多層的儲存結構並分別存放待運算與運算完畢的數據,換言之,記憶體1可做為如卷積運算裝置內部的快取記憶體(cache memory)。
實際應用時,全部或大部分的數據可先儲存在其他地方,例如在另一記憶體中,另一記憶體可選擇如動態隨機存取記憶體(dynamic random access memory,DRAM)或其他種類之記憶體。當卷積運算裝置要進行卷積運算時,再全部或部分地將數據由另一記憶體載入至記憶體1中,然後通過緩衝裝置2將數據輸入至卷積運算模組3來進行卷積運算。若輸入的數據是串流數據,記憶體1隨時會寫入最新的串流數據以供卷積運算。
緩衝裝置2耦接有記憶體1、卷積運算模組3以及加總緩衝單元5。並且,緩衝裝置2也與卷積運算裝置的其他元件進行耦接,例如交錯加總單元4以及控制單元7。此外,對於影像數據或視頻的視框數據運算來說,處理的順序是逐行(column)同時讀取多列(row),因此在一個時序(clock)中,緩衝裝置2係從記憶體1輸入同一行不同列上的數據,對此,本實施例的緩衝裝置2係作為一種行緩衝(column buffer)的緩衝裝置。欲進行運算時,緩衝裝置2可先由記憶體1擷取卷積運算模組3所需要運算的數據,並於擷取後將該些數據調整為可順利寫入卷積運算模組3的數據型式。另一方面,由於緩衝裝置2也與加總緩衝單元5耦接,加總緩衝單元5運算完畢後之數據,也將透過緩衝裝置2暫存重新排序(reorder)後再傳送回記憶體1儲存。換言之,緩衝裝置2除了具有行緩衝的功能之外,其還具有類似中繼暫存數據的功能,或者說緩衝裝置2可做為一種具有排序功能的數據暫存器。
值得一提的是,緩衝裝置2還包括一記憶體控制單元21, 當緩衝裝置2在進行與記憶體1之間的數據擷取或寫入時可經由記憶體控制單元21控制。另外,由於其與記憶體1之間具有有限的一記憶體存取寬度,或又稱為帶寬或頻寬(bandwidth),卷積運算模組3實際上能進行的卷積運算也與記憶體1的存取寬度有關。換言之,卷積運算模組3的運算效能會受到前述存取寬度而有所限制。因此,如果記憶體1的輸入有瓶頸,則卷積運算的效能將受到衝擊而下降。
卷積運算模組3具有多個卷積單元,各卷積單元基於一濾波器以及多個當前數據進行一卷積運算,並於卷積運算後保留部分的當前數據。緩衝裝置2從記憶體1取得多個新數據,並將新數據輸入至卷積單元,新數據不與當前數據重複。卷積運算模組3的卷積單元基於濾波器、保留的當前數據以及新數據進行次輪卷積運算。交錯加總單元4耦接卷積運算模組3,依據卷積運算的結果產生一特徵輸出結果。加總緩衝單元5耦接交錯加總單元4與緩衝裝置2,暫存特徵輸出結果;其中,當指定範圍的卷積運算完成後,緩衝裝置2從加總緩衝單元5將暫存的全部數據寫入到記憶體1。
係數擷取控制器6耦接卷積運算模組3,而控制單元7則耦接緩衝裝置2。實際應用時,對於卷積運算模組3而言,其所需要的輸入來源除了數據本身以外,還需輸入有濾波器(filter)的係數,始得進行運算。於本實施例中所指即為3×3的卷積單元陣列之係數輸入。係數擷取控制器6可藉由直接記憶體存取DMA(direct memory access)的方式由外部之記憶體,直接輸入濾波器係數。除了耦接卷積運算模組3之外,係數擷取控制器6還可與緩衝裝置2進行連接,以接受來自控制單元7的各種指令,使卷積運算模組3能夠藉由控制單元7控制係數擷取控制器6,進行濾波器係數的輸入。
控制單元7可包括一指令解碼器71以及一數據讀取控制器72。指令解碼器71係從數據讀取控制器72得到控制指令並將指令解碼,藉以得到目前輸入數據的大小、輸入數據的行數、輸入數據的列數、輸入數據的特徵編號以及輸入數據在記憶體1中的起始位址。另外,指令解碼器71也可從數據讀取控制器72得到有關濾波器的種類資訊以及輸出特徵 的編號,並輸出適當的空置訊號到緩衝裝置2。緩衝裝置2則根據指令解碼後所提供的資訊來運行,也進而控制卷積運算模組3以及加總緩衝單元5的運作,例如數據從記憶體1輸入到緩衝裝置2以及卷積運算模組3的時序、卷積運算模組3的卷積運算的規模、數據從記憶體1到緩衝裝置2的讀取位址、數據從加總緩衝單元5到記憶體1的寫入位址、卷積運算模組3及緩衝裝置2所運作的卷積模式。
另一方面,控制單元7則同樣可藉由直接記憶體存取DMA的方式由外部之記憶體提取所需的控制指令及卷積資訊,指令解碼器71將指令解碼之後,該些控制指令及卷積資訊由緩衝裝置2擷取,指令可包含移動窗的步幅大小、移動窗的位址以及欲提取特徵的影像數據行列數。
加總緩衝單元5耦接交錯加總單元4,加總緩衝單元5包括一部分加總區塊51以及一池化單元52。部分加總區塊51暫存交錯加總單元4輸出的數據。池化單元52對暫存於部分加總區塊51的數據進行池化運算。池化運算為最大值池化或平均池化。
舉例來說,加總緩衝單元5可將經由卷積運算模組3卷積計算結果及交錯加總單元4的輸出特徵結果予以暫存於部分加總區塊51。接著,再透過池化單元52對暫存於部分加總區塊51的數據進行池化(pooling)運算,池化運算可針對輸入數據某個區域上的特定特徵,取其平均值或者取其最大值作為概要特徵提取或統計特徵輸出,此統計特徵相較於先前之特徵而言不僅具有更低的維度,還可改善運算的處理結果。
須說明者,此處的暫存,仍係將輸入數據中的部分運算結果相加(partial sum)後才將其於部分加總區塊51之中暫存,因此稱其為部分加總區塊51與加總緩衝單元5,或者可將其簡稱為PSUM單元與PSUM BUFFER模組。另一方面,本實施例之池化單元52的池化運算,係可採用前述平均池化(average pooling)的計算方式取得統計特徵輸出。待所輸入的數據全部均被卷積運算模組3及交錯加總單元4處理計算完畢後,加總緩衝單元5輸出最終的數據處理結果,並同樣可透過緩衝裝置2將結果回存至記憶體1,或者再透過記憶體1輸出至其他元件。與此同時,卷積運算模組3與交錯加總單元4仍持續地進行數據特徵的取得與運算,以提高卷 積運算裝置的處理效能。
採用前述平均池化(average pooling)的情況下,原本在記憶體中的卷積層的濾波器係數需經調整,實際輸入到卷積運算模組3的是經調整後的因子,因子可以是前述整合池化層以及次一卷積層的運算中所使用的因子,由於因子的產生已在前述實施例說明,故此不再墜述。當卷積運算裝置在處理當前層的卷積層以及池化層,池化單元52可以先不處理當前層池化層中平均池化的除法部分,待卷積運算裝置處理到下一層卷積層時,卷積運算模組3再將先前池化單元52尚未處理的平均池化的除法部分整合在卷積的乘法運算中。另一方面,當卷積運算裝置在處理當前層的卷積層以及池化層時,池化單元52可以利用移位運算當作部分的除法,但留下還未完全平均池化的除法部分,待卷積運算裝置處理到下一層卷積層時,卷積運算模組3再將先前池化單元52尚未處理的平均池化的除法部分整合在卷積的乘法運算中。
卷積運算裝置可包括多個卷積運算模組3,卷積運算模組3的卷積單元以及交錯加總單元4係能夠選擇性地操作在一低規模卷積模式以及一高規模卷積模式。在低規模卷積模式中,交錯加總單元4配置來對卷積運算模組3中對應順序的各卷積運算的結果交錯加總以各別輸出一加總結果。在高規模卷積模式中,交錯加總單元4將各卷積單元的各卷積運算的結果交錯加總作為輸出。
綜上所述,本發明的運算裝置及運算方法中,以兩階段進行平均池化運算,池化單元僅進行加法運算,並搭配位元移位運算,以避免累加過程所造成的數據溢位,再對池化單元的輸出結果進行加權運算,而得到最終的平均結果。由於池化單元並未做除法運算,故可避免處理器耗費較多的效能,進而達成提升池化運算之效能的功效。
上述實施例並非用以限定本發明,任何熟悉此技藝者,在未脫離本發明之精神與範疇內,而對其進行之等效修改或變更,均應包含於後附之申請專利範圍中。

Claims (10)

  1. 一種卷積神經網路的運算方法,包括:對多個輸入數據進行一加法運算以輸出一累加數據;對該累加數據進行一位元移位運算以輸出一移位數據;以及對該移位數據進行一加權運算以輸出一加權數據,其中該加權運算的一因子依據該等輸入數據的數量、該位元移位運算中向右移位的位元數量以及卷積神經網路的一後續層的一縮放權值而定;其中該加權運算的該因子隨該縮放權值以及該位元移位運算中向右移位的位元數量呈正比,該加權運算的該因子隨該等輸入數據的數量呈反比,該加權數據等於該移位數據乘以該因子。
  2. 一種卷積神經網路的運算方法,包括:對多個輸入數據進行一加法運算以輸出一累加數據;對該累加數據進行一位元移位運算以輸出一移位數據;以及對該移位數據進行一加權運算以輸出一加權數據,其中該加權運算的一因子依據該等輸入數據的數量、該位元移位運算中向右移位的位元數量以及卷積神經網路的一後續層的一縮放權值而定;其中該位元移位運算中向右移位的位元數量依據一池化窗的規模而定,該等輸入數據的數量依據該池化窗的規模而定。
  3. 一種卷積神經網路的運算方法,包括:對多個輸入數據進行一加法運算以輸出一累加數據;對該累加數據進行一位元移位運算以輸出一移位數據;以及對該移位數據進行一加權運算以輸出一加權數據,其中該加權運算的一因子依據該等輸入數據的數量、該位元移位運算中向右移位的位元數量以及卷積神經網路的一後續層的一縮放權值而定;其中該後續層為卷積神經網路的一次一層卷積層,該縮放權值為該次一層卷積層的一濾波器係數,該加法運算以及該位元移位運算是卷積神經網路的一池化層中的運算。
  4. 如申請專利範圍第3項所述的運算方法,其中該池化層中的除法運算整合在該次一層卷積層的乘法運算中進行。
  5. 一種卷積神經網路的運算方法,包括:在一池化層中對多個輸入數據進行一加法運算以輸出一累加數據;以及在一後續層中對該累加數據進行一加權運算以輸出一加權數據,其中該加權運算的一因子依據該等輸入數據的數量以及該後續層的一縮放權值而定,該加權數據等於該累加數據乘以該因子。
  6. 如申請專利範圍第5項所述的運算方法,其中該後續層為一次一層卷積層,該縮放權值為一濾波器係數,該加權運算為卷積運算,該加權運算的該因子等於該濾波器係數除以該等輸入數據的數量。
  7. 如申請專利範圍第5項所述的運算方法,其中該等輸入數據的數量依據該池化窗的規模而定。
  8. 一種卷積神經網路的運算方法,包括:將一縮放權值與一原始濾波器係數相乘以產生一加權後濾波器係數;以及在一卷積層對一輸入數據以及該加權後濾波器係數進行卷積運算。
  9. 如申請專利範圍第8項所述的運算方法,其中該運算方法更包括:對輸入數據進行一位元移位運算;以及將位元移位運算後的輸入數據輸入至該卷積層,其中,縮放權值依據一原始縮放權值以及位元移位運算中向右移位的位元數量而定。
  10. 一種卷積神經網路的運算裝置,進行如申請專利範圍第1項至第9項其中任一項所述之運算方法。
TW106104513A 2017-02-10 2017-02-10 卷積神經網路的運算裝置及方法 TWI630544B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW106104513A TWI630544B (zh) 2017-02-10 2017-02-10 卷積神經網路的運算裝置及方法
US15/801,887 US20180232621A1 (en) 2017-02-10 2017-11-02 Operation device and method for convolutional neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW106104513A TWI630544B (zh) 2017-02-10 2017-02-10 卷積神經網路的運算裝置及方法

Publications (2)

Publication Number Publication Date
TWI630544B true TWI630544B (zh) 2018-07-21
TW201830232A TW201830232A (zh) 2018-08-16

Family

ID=63106464

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106104513A TWI630544B (zh) 2017-02-10 2017-02-10 卷積神經網路的運算裝置及方法

Country Status (2)

Country Link
US (1) US20180232621A1 (zh)
TW (1) TWI630544B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110942145A (zh) * 2019-10-23 2020-03-31 南京大学 基于可重构计算的卷积神经网络池化层、硬件实现方法及系统
US10748033B2 (en) 2018-12-11 2020-08-18 Industrial Technology Research Institute Object detection method using CNN model and object detection apparatus using the same
CN111752879A (zh) * 2020-06-22 2020-10-09 深圳鲲云信息科技有限公司 一种基于卷积神经网络的加速系统、方法及存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109272113B (zh) * 2018-09-13 2022-04-19 深思考人工智能机器人科技(北京)有限公司 一种基于通道的卷积神经网络建立装置及方法
CN112970037B (zh) * 2018-11-06 2024-02-02 创惟科技股份有限公司 用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质
JP7177000B2 (ja) * 2019-05-16 2022-11-22 日立Astemo株式会社 演算装置および演算方法
CN112085175B (zh) * 2019-06-14 2024-05-03 华为技术有限公司 基于神经网络计算的数据处理方法和装置
US10872295B1 (en) 2019-09-19 2020-12-22 Hong Kong Applied Science and Technology Institute Company, Limited Residual quantization of bit-shift weights in an artificial neural network
US11275562B2 (en) 2020-02-19 2022-03-15 Micron Technology, Inc. Bit string accumulation
CN112346703B (zh) * 2020-11-24 2021-10-22 华中科技大学 一种用于卷积神经网络计算的全局平均池化电路

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105320495A (zh) * 2014-07-22 2016-02-10 英特尔公司 用于卷积神经网络的权重移位机制
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
US20160328645A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105320495A (zh) * 2014-07-22 2016-02-10 英特尔公司 用于卷积神经网络的权重移位机制
TW201617977A (zh) * 2014-07-22 2016-05-16 英特爾股份有限公司 用於卷積神經網路的權重位移機構
US20160328645A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10748033B2 (en) 2018-12-11 2020-08-18 Industrial Technology Research Institute Object detection method using CNN model and object detection apparatus using the same
CN110942145A (zh) * 2019-10-23 2020-03-31 南京大学 基于可重构计算的卷积神经网络池化层、硬件实现方法及系统
CN111752879A (zh) * 2020-06-22 2020-10-09 深圳鲲云信息科技有限公司 一种基于卷积神经网络的加速系统、方法及存储介质
CN111752879B (zh) * 2020-06-22 2022-02-22 深圳鲲云信息科技有限公司 一种基于卷积神经网络的加速系统、方法及存储介质

Also Published As

Publication number Publication date
TW201830232A (zh) 2018-08-16
US20180232621A1 (en) 2018-08-16

Similar Documents

Publication Publication Date Title
TWI630544B (zh) 卷積神經網路的運算裝置及方法
TWI607389B (zh) 卷積神經網路的池化運算裝置及方法
TWI634490B (zh) 卷積運算裝置及卷積運算方法
TWI665563B (zh) 卷積運算裝置及卷積神經網路的卷積輸入的調規方法
CN107633297B (zh) 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器
US10169295B2 (en) Convolution operation device and method
US20180137414A1 (en) Convolution operation device and convolution operation method
US20060002471A1 (en) Motion estimation unit
WO2019076108A1 (zh) 卷积神经网络运算电路
CN108573305B (zh) 一种数据处理方法、设备及装置
WO2018139177A1 (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
WO2020062284A1 (zh) 基于卷积神经网络的图像处理方法和设备,以及无人机
US10402196B2 (en) Multi-dimensional sliding window operation for a vector processor, including dividing a filter into a plurality of patterns for selecting data elements from a plurality of input registers and performing calculations in parallel using groups of the data elements and coefficients
JP4846306B2 (ja) 半導体記憶装置及びそれを用いた半導体集積回路システム並びに半導体記憶装置の制御方法
TWI634436B (zh) 緩衝裝置及卷積運算裝置與方法
TWI645335B (zh) 卷積運算裝置及卷積運算方法
CN108416430A (zh) 卷积神经网络的池化运算装置及方法
US10162799B2 (en) Buffer device and convolution operation device and method
TW201818232A (zh) 卷積運算方法
US20200225877A1 (en) Information processing apparatus and memory control method
US11544523B2 (en) Convolutional neural network method and system
TWI616840B (zh) 卷積運算裝置及方法
JP4156538B2 (ja) 行列演算装置
US20240126831A1 (en) Depth-wise convolution accelerator using MAC array processor structure
CN114611683A (zh) 卷积神经网络操作实现方法、装置、设备及存储介质