TWI766203B - 用於實施神經網路應用之卷積塊陣列及其使用方法、和卷積塊電路 - Google Patents

用於實施神經網路應用之卷積塊陣列及其使用方法、和卷積塊電路 Download PDF

Info

Publication number
TWI766203B
TWI766203B TW108140288A TW108140288A TWI766203B TW I766203 B TWI766203 B TW I766203B TW 108140288 A TW108140288 A TW 108140288A TW 108140288 A TW108140288 A TW 108140288A TW I766203 B TWI766203 B TW I766203B
Authority
TW
Taiwan
Prior art keywords
convolution
circuit
circuits
block
convolution block
Prior art date
Application number
TW108140288A
Other languages
English (en)
Other versions
TW202038142A (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 創惟科技股份有限公司
Publication of TW202038142A publication Critical patent/TW202038142A/zh
Application granted granted Critical
Publication of TWI766203B publication Critical patent/TWI766203B/zh

Links

Images

Classifications

    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • 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
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Logic Circuits (AREA)

Abstract

本揭示提供一種用於實施神經網路應用之卷積塊陣列及其使用方法、和卷積塊電路。卷積塊陣列包括複數個卷積塊電路,其被配置為處理神經網路應用的卷積運算,其中每個卷積塊電路包括:複數個乘法電路,被配置為執行卷積運算;和至少一加法電路連接到複數個乘法電路,並配置為執行卷積運算的複數個結果的加法運算並生成輸出訊號,其中至少一該複數個卷積塊電路被配置為執行該神經網路應用的一偏置運算。

Description

用於實施神經網路應用之卷積塊陣列及其使用方法、和卷積塊電路
本揭示是關於神經網路應用領域,尤其是關於一種用於實施神經網路應用的卷積塊陣列及其使用方法、和卷積塊電路。
人工神經網路(artificial neural network)是參照生物腦的計算模型。在神經網路中,被稱為神經元的節點可以互連並共同操作以處理輸入資料。不同類型的神經網路的範例包括但不限於卷積神經網路(convolutional neural network,CNN)、遞迴神經網路(recurrent neural network)、深度信念網路(deep belief network),受限玻爾茲曼機(restricted Boltzman machine)等。在前饋神經網路中,神經網路的神經元與其他神經元有鏈接,且鏈路僅在一個方向上延伸(即向前方向)通過神經網路。
可以利用神經網路從複雜的輸入資料中提取「特徵值」。神經網路可以包括多個層。每個層接收輸入資料並通過處理層的輸入資料生成輸出資料。輸出資料可以是神經網路通過將輸入圖像或特徵值圖與卷積核(convolution kernel)卷積運算而產生的輸入資料的特徵值圖。
神經網路的卷積塊電路是卷積神經網路加速器的主要核心。為了在硬體中實現卷積塊電路的操作,必須在最終濾波運算後執行偏置運算。然而,根據卷積的位元的組合,難以實現用於硬體輸出的偏置運算的硬體。現有方法是通過外部加法電路和外部儲存器來執行加法運算,該方法使得以硬體操作CNN的機制變得容易理解,但是,需要額外硬體資源和儲存器的操作來執行偏置運算。
有鑑於此,有必要提供一種用於實施神經網路應用的卷積塊陣列及其使用方法、和卷積塊電路,以解決習知技術的技術問題。
為了解決上述技術問題,本揭示的目的在於提供一種用於實施神經網路應用的卷積塊陣列及其使用方法、和卷積塊電路。本揭示的卷積塊陣列可以支持各種位元尺寸,並且可以通過卷積塊陣列來執行偏置係數的加法操作,而無需使用額外的加法電路。
為了達到上述目的,本揭示提供一種用於實施神經網路應用之卷積塊陣列,包括:複數個卷積塊電路,用於處理該神經網路應用的一卷積運算,其中每一該複數個卷積塊電路包括:複數個乘法電路,用於執行該卷積運算;以及至少一加法電路,與該複數個乘法電路連接,用於執行該卷積運算的複數個結果的加法運算並且生成一輸出訊號;其中至少一該複數個卷積塊電路被配置為執行該神經網路應用的一偏置運算。
在本揭示之一較佳實施例中,每一該複數個卷積塊電路包括四個乘法電路、一第一卷積加法電路、一第二卷積加法電路、以及一塊加法電路;其中該四個乘法電路中的兩個乘法電路連接到該第一卷積加法電路,並且該四個複數個乘法電路的另外兩個乘法電路連接到該第二卷積加法電路;以及該塊加法電路連接該第一卷積加法電路和該第二卷積加法電路。
在本揭示之一較佳實施例中,該卷積塊電路還包括一鎖存器,其連接到該至少一加法電路並且還連接到至少一下游卷積塊電路,以及其中該鎖存器被配置為將該輸出訊號傳送到該至少一下游卷積塊電路或者是將該輸出訊號送回該至少一加法電路。
在本揭示之一較佳實施例中,該卷積塊陣列還包括:複數個多路復用器,分別連接到該複數個乘法電路,其中該複數個乘法電路通過各自的該多路復用器連接到該至少一加法電路;以及一路徑控制器,連接到該複數個多路復用器並且還連接到至少一上游卷積塊電路,其中當該路徑控制器的相應路徑被啟用時,來自該至少一上游卷積塊的輸出訊號通過該路徑控制器傳送到該至少一加法電路。
在本揭示之一較佳實施例中,該卷積運算的執行是藉由將複數個特徵值乘以複數個權重係數並與一偏置係數相加。
本揭示還提供一種在卷積塊陣列中實施神經網路應用的方法,其中該卷積塊陣列包括複數個卷積塊電路,並且每一該複數個卷積塊電路包括複數個乘法電路和至少一加法電路,並且該方法包括:S10,在一第一維度中分配一組的複數個卷積塊電路來處理該神經網路應用的一卷積運算;S20,將一控制訊號輸入到該組的該複數個卷積塊電路以控制該組的該複數個卷積塊電路執行基於涉及N位元的M×M濾波器窗口的該卷積運算,其中M是奇數且 N是大於1的整數;S30,將複數個特徵值和複數個濾波值輸入到該組的該複數個卷積塊電路;S40,藉由該卷積塊電路的該複數個乘法電路執行該複數個特徵值和該複數個濾波值的N位元乘法運算,其中該複數個特徵值和該複數個濾波值對應於複數個輸入圖像的複數個數值;S50,藉由該至少一加法電路將從該複數個乘法電路獲得的複數個結果相加;以及S60,產生一卷積輸出訊號。
在本揭示之一較佳實施例中,步驟S10還包括:根據基於涉及該N位元的該M×M濾波器窗口的該卷積運算的組合,確定所使用的該複數個卷積塊電路的數量來執行該複數個卷積塊電路的一個像素的該卷積運算,其中該複數個卷積塊電路是以一條線為基礎排列。
在本揭示之一較佳實施例中,該一個像素的該複數個濾波值包括複數個權重係數和一偏置係數,並且在用於執行每個像素的該卷積運算的最後一個卷積塊電路中,該偏置係數通過該最後一個卷積塊電路的該複數個乘法電路的一閒置乘法電路傳遞到該至少一加法電路。
在本揭示之一較佳實施例中,在步驟S50之後,該方法還包括:S51,藉由每一該卷積塊電路的該至少一加法電路將該複數個結果相加以產生一部分輸出訊號;S52,將所有的該部分輸出訊號發送到該最後一個卷積塊電路;以及S53,藉由該最後一個卷積塊電路的該至少一加法電路將所有的該部分輸出訊號相加,並生成表示該一個像素的該卷積輸出訊號。
在本揭示之一較佳實施例中,每一該複數個卷積塊電路包括一鎖存器,該鎖存器連接到該至少一加法電路並且還連接到該最後一個卷積塊電路,並且其中在步驟S51之後,該最後一個卷積塊電路暫時將該部分輸出訊號儲存在該鎖存器中,以及在步驟S52中,該最後一個卷積塊電路將該部分輸出訊號反饋給該最後一個卷積塊電路的該至少一加法電路。
本揭示還提供一種卷積塊電路,包含:四個乘法電路,用於執行基於涉及N位元的M×M濾波器窗口的一卷積運算;一第一卷積加法電路,連接到該四個乘法電路中的兩個乘法電路,並配置為將該兩個乘法電路執行該卷積運算獲得的複數個結果相加;一第二卷積加法電路,連接到該四個乘法電路的另外兩個乘法電路,並配置為將該另外兩個乘法電路執行該卷積運算獲得的複數個結果相加;一塊加法電路,連接到該第一卷積加法電路和該第二卷積加法電路,並配置為執行一第一加法運算和一第二加法運算,其中在該第一加法運算中,該塊加法電路將該第一卷積加法電路和該第二卷積加法電路執行該卷積運算獲得的複數個結果與一偏置係數相加,並產生一第一卷積值,其中該偏置係數通過該四個乘法電路的一閒置乘法電路傳送到該塊加法電路;以及一鎖存器,連接到該塊加法電路,並配置為將該第一卷積值反饋給該塊加法電路;其中當該塊加法電路接收該第一卷積值和來自上游的複數個卷積塊電路的其他部分輸出訊號後,該塊加法電路執行該第二加法運算以將該第一卷積值和該其他部分輸出訊號相加,並產生一卷積輸出訊號。
相較於習知技術,當CNN運算以硬體實現時,不須配備任何用於偏置運算的硬體,且所有二維卷積的濾波器大小都是奇數。本揭示提供一種卷積塊電路,由四個乘法電路組成。根據濾波器大小和卷積運算的位元大小的組合,將剩餘像素的乘法結果輸入到卷積塊陣列的必要卷積塊電路的最後部分的未使用的加法電路。最後,通過給出空濾波器輸入的偏置值,通過這種設計,可以獲得除了激活(activation)運算之外的所有成功的結果。這節省了硬體資源並且消除了對單獨的儲存器操作的需要,從而提高了性能。
爲了讓本揭示之上述及其他目的、特徵、優點能更明顯易懂,下文將特舉本揭示較佳實施例,並配合所附圖式,作詳細說明如下。
請參照第1圖,其顯示根據本揭示較佳實施例之卷積塊電路10之示意圖。卷積塊電路10包括四個乘法電路110、四個多路復用器120、第一卷積加法電路131、第二卷積加法電路132、塊加法電路133、鎖存器140、和路徑控制器150。四個乘法電路110被配置為執行神經網路應用的卷積運算。四個乘法電路110中的每一個連接到四個多路復用器120中的一個,並且兩個乘法電路110通過相應的多路復用器120連接到第一卷積加法電路131。以及,其他兩個乘法電路110通過相應的多路復用器120連接到第二卷積加法電路132。此外,第一卷積加法電路131和第二卷積加法電路132連接到塊加法電路133。鎖存器140連接到複數個下游卷積塊電路並且還連接到塊加法電路133。路徑控制器150連接到複數個上游卷積塊電路,並且還連接到四個多路復用器120。
在本揭示中,卷積塊電路10可以被設置在包括控制器和儲存器的積體電路(integrated circuit,IC)上。如第1圖所示,IC的控制器可以將控制訊號SCON 輸入到卷積塊電路10,並將複數個輸入圖像Im(1)~Im(4)送入卷積塊電路10,以控制卷積塊電路10用有關於複數個輸入圖像Im(1)~Im(4)的複數個特徵值P(1)~P(4)和複數個濾波值f(1)~f(4)來執行卷積運算,其中複數個濾波值f(1)~f(4)包括複數個權重係數和/或偏置係數,進而輸出一個輸出訊號SOUT 。複數個輸入圖像Im(1)~Im(4)的數值可以儲存在IC的儲存器中。在本揭示中,鎖存器140可以將輸出訊號SOUT 發送到複數個下游卷積塊電路,或者可以將輸出訊號SOUT 反饋到卷積塊電路10的塊加法電路133。此外,路徑控制器150 可以從複數個上游卷積塊電路接收輸出訊號SOUT ,並將它們傳遞給相應的加法電路。可以理解的是,卷積塊電路10的各種操作可以由IC的控制器控制,即,實施卷積塊電路10的全部或部分過程可以由用於指示相關硬體(例如處理器,控制器等)的電腦程式完成。程式可以保存在電腦可讀儲存媒體中,並且程式可以包括上述和下述的方法的實施例的流程,其中所述的儲存媒體可以是儲存器等。
請參照第2圖,其顯示用於並行地處理不同濾波器組合之卷積塊陣列1之示意圖。卷積塊陣列1包括以多排和多欄排列的複數個卷積塊電路10。在本實施例中,卷積塊陣列1是通過以16排和16欄之組合排列的複數個卷積塊電路10而形成。然而,在其他實施例中可以採用不同的陣列,惟不限於此。如第2圖所示,同一欄的該等卷積塊電路10彼此相互連接,例如通過總線等。複數個卷積塊電路10的每欄是串聯結構。「串聯」是指將可以計算出的數值傳遞給同一欄的其他卷積塊電路10而不需要儲存在外部儲存器。
應當注意的是,本揭示的乘法電路可處理的位元(bit)是可配置的,使得多路復用器120適用於執行具有複數個濾波值的不同位元的各種卷積運算。因此,如第2圖所示,不同欄的卷積塊電路10可以並行地執行不同的卷積運算。卷積運算的濾波器大小和位元大小的組合確定了執行一個像素的卷積運算所要採用之卷積塊電路10的數量,以及確定最後一個卷積塊電路10使用的乘法電路的數量,其中該等卷積塊電路10是以一條線為基礎排列。舉例來說,以執行基於涉及8位元的3×3濾波器窗口的卷積運算為例,需要三個卷積塊電路10來執行一個像素的卷積運算,其中最後一個卷積塊電路10僅使用一個乘法電路。如第2圖所示,在同一欄的該等卷積塊電路中,相同圖案表示卷積塊電路10正在執行同一像素的卷積運算,並且空白無圖案部分表示卷積塊電路或乘法電路是閒置的。另外,同一欄的該等卷積塊電路可以並行地執行不同像素的卷積運算。
如第2圖所示,一個卷積塊電路10中的一個或多個乘法電路是閒置的,例如卷積塊電路10’。對於卷積塊電路10’而言,剩餘的乘法電路的操作沒有意義。因此,在本揭示中,預先準備的複數個濾波值被操縱為包括偏置係數的值。此外,偏置係數的值可以通過剩餘的乘法電路發送到存在於卷積塊電路中的加法電路,以執行偏置係數的加法操作。應當注意的是,偏置係數的加法操作由卷積塊電路通過卷積運算的濾波器大小和比特大小的組合來確定。相應的偏置係數被輸入到卷積塊電路而不是輸入權重係數。偏置係數的具體加法操作將在後面詳述。此外,由於本揭示的卷積塊電路10可以支持各種位元尺寸,所以可以通過卷積塊電路10執行偏置係數的加法操作,而無需使用設置在卷積塊陣列1外部的額外的加法電路。因此,不需要單獨的儲存器訪問操作,也不需要單獨的硬體。根據本揭示,通過使用卷積塊電路10,可以減少CNN中的硬體的大小,並且可以實現操作性能的改進。
請參照第3圖,其顯示卷積塊電路10執行基於涉及2位元的3×3濾波器窗口的卷積運算之示意圖。在本實施例中,卷積塊電路10只需要一個週期即可完成一個像素的卷積運算。在這個週期中,控制訊號SCON 被輸入到卷積塊電路10,乘法電路111~114 配置為執行2位元的乘法運算。複數個特徵值(即Px 1 ~Px 9 )和複數個濾波值(即複數個權重係數Wfx 1 ~Wfx 9 和偏置係數b)被送入卷積塊電路10,接著執行3×3的卷積運算,從而產生輸出訊號SOUT
具體來說,如第3圖所示,第一乘法電路111利用權重係數Wfx 1 ~Wfx 4 和特徵值Px 1 ~Px 4 執行第一部分卷積運算,第二乘法電路112利用權重係數Wfx 5 ~Wfx 8 和特徵值Px 5 ~Px 8 執行第二部分卷積運算,第三乘法電路113利用權重係數Wfx 9 和特徵值Px 9 執行第三部分卷積運算。在本揭示中,由於所有CNN卷積運算數據ID都需要奇數個乘法電路的操作,卷積塊電路10將不使用第四乘法電路114。也就是說,第四乘法電路114將不執行任何卷積運算,並且乘法電路111~113的相應部分卷積運算同時被執行。
接著,第一乘法電路111和第二乘法電路112將對應的部分卷積運算的結果發送到第一加法電路131,使得第一加法電路131執行加法運算以將那些來自第一乘法電路111和第二乘法電路112的結果相加。並且,第三乘法電路113將對應的部分卷積運算的結果發送到第二加法電路132,並且偏置值b將通過第四乘法電路114直接傳遞到第二加法電路132。這樣,第二加法電路132將執行另一個加法運算以將兩個數值相加。然後,由第一加法電路131和第二加法電路132計算的相加的數值被傳遞到塊加法電路133,其加上這兩個數值,從而輸出輸出訊號SOUT 。應當理解的是,對於一個像素,基於涉及2位元的3×3濾波器窗口的卷積運算可以通過一個卷積塊電路10來實現,即,從卷積塊電路10輸出的輸出訊號SOUT 相當於一個像素的卷積輸出值。
在本揭示中,如果權重係數的位元大小與偏置係數的位元大小不同,則將偏置的值調整為對應的權重係數的位元大小,並且可以通過劃分來解決,因為偏置的值通常遠大於或等於權重係數的值。在該過程中,偏置值可能導致一些錯誤,但這不足以影響整體CNN操作,因為大多數CNN硬體實現是可容忍的。如果所有的卷積操作在輸入圖像的相同位元精度下工作,則偏置值將被用作輸入圖像的相同位元精度而不操縱它的值。
請參照第4圖。其顯示顯示CNN之激活函數200,其中函數200的一部分201可以通過本揭示的卷積塊陣列1來計算獲得。除了激活運算(即,符號「f」)之外,卷積塊陣列1將覆蓋所有單元神經元操作201。如上所述,將在像素的最終操作期間執行偏置運算。
如第2圖所示,取決於卷積塊陣列1之一欄的該等卷積塊電路10中的每個卷積塊電路的物理位置,輸出訊號將被反饋到連接的該等卷積塊電路10的最後一個。具體來說,請參照第5圖,其顯示以一條線為基礎排列之複數個卷積塊電路,其執行基於涉及8位元的3×3濾波器窗口的卷積運算之示意圖。在卷積塊陣列1中實現神經網路應用的方法包括以下步驟:在步驟S10中,在第一維度中分配一組的複數個卷積塊電路來處理神經網路應用的卷積運算,其中該卷積運算執行基於涉及8位元的3×3濾波器窗口。在該實施例中,一個像素的卷積運算由三個卷積塊電路10執行。在這種情況下,這三個卷積塊電路10需要兩個週期才能完成一個像素的卷積運算。在第一周期中,這三個卷積塊電路使用複數個特徵值和複數個濾波值(包括複數個權重係數和/或偏置係數b)執行相應的部分卷積運算。接著,分別生成部分輸出訊號。在第二週期中,將所有的部分輸出訊號發送到最後一個卷積塊電路10,並且在最後一個卷積塊電路10上執行最終加法操作,從而輸出表示一個像素的卷積輸出訊號。具體的訊號傳輸和卷積運算將於後詳述。
請參照第6圖,其顯示第5圖中複數個卷積塊電路11~13之A部分之示意圖。在第一周期中,執行步驟S20,並且將控制信號輸入到卷積塊電路11~13,卷積塊電路的乘法電路被配置為執行8位元的乘法函數。在步驟S30中,將特徵值 Px 1 ~Px 4 和濾波值(即權重係數Wfx 1 ~Wfx 4 )輸入到第一卷積塊電路11,將特徵值Px 5 ~Px 8 和濾波值(即權重係數Wfx 5 ~Wfx 8 )輸入到第二卷積塊電路12,以及將特徵值Px 9 和濾波值(即權重係數Wfx 9 和偏置係數b)輸入到第三卷積塊電路13。在本實施例中,由於所有CNN卷積運算數據ID都需要奇數的乘法電路的操作,所以最終卷積塊電路(即第三卷積塊電路13)只會使用一個乘法電路,而其餘三個乘法電路將不會使用。然後,在步驟S40中,複數個卷積塊電路11~13同時執行3×3卷積運算並生成相應的部分輸出訊號Sconv1 ~Sconv3 。具體地,在第一周期中,執行步驟S50,第三卷積塊電路13的塊加法電路執行第一加法運算,以將來自第二卷積加法電路的相應部分卷積運算和來自第一卷積加法電路的偏置係數的結果相加,接著產生第一卷積值(即,部分輸出訊號Sconv3 ),其中偏置係數通過四個乘法電路中的閒置乘法電路發送到塊加法電路。可選地,部分輸出訊號Sconv1 ~Sconv3 可以暫時儲存在各自的鎖存器140中。
如第6圖所示,在第二週期中,第一和第二卷積塊電路11、12將相應的部分輸出訊號Sconv1 ~Sconv2 發送到第三卷積塊電路13的路徑控制器150。路徑控制器150的相應路徑被啟用,使得部分輸出訊號Sconv1 ~Sconv2 可以被發送到第三卷積塊電路13的第一加法電路或第二加法電路。此時,第三卷積塊電路13將部分輸出訊號Sconv3 反饋回其塊加法電路。接著,執行步驟S60,第三卷積塊電路13的塊加法電路從上游卷積塊電路11~12接收其他部分輸出訊號Sconv1 ~Sconv2 和第一卷積值(即部分輸出訊號Sconv3 ),然後執行第二加法運算以將所有部分輸出訊息的Sconv1 ~Sconv3 相加,從而輸出表示一個像素的完整的卷積輸出訊號SOUT
應當理解的是,如第2圖所示,其他實施例的一個像素的卷積運算(例如,基於涉及2位元的5×5濾波器窗口的卷積運算、基於涉及4位元的3×3濾波器窗口的卷積運算、基於涉及4位元的5×5濾波器窗口的卷積運算等)都是通過兩個週期來實現,這裡不加以贅述。
請參照第7圖,其顯示以一條線為基礎排列之複數個卷積塊電路,其執行基於涉及8位元的5×5濾波器窗口的卷積運算之示意圖。一個像素的卷積運算由八個卷積塊電路執行。在這種情況下,這八個卷積塊電路需要三個週期來完成一個像素的卷積運算。在第一周期中,第一至第七卷積塊電路執行相應的部分卷積運算,其使用複數個特徵值和複數個濾波值(包括複數個權重係數和/或偏置係數b),然後分別產生部分輸出訊號。較佳地,偏置係數b應用於第四卷積塊電路。
如第7圖所示,在第二週期中,第一至第三卷積塊電路將相應的部分輸出訊號發送到第四卷積塊電路的路徑控制器。啟用路徑控制器的相應路徑,使得部分輸出訊號發送到第四卷積塊電路的加法電路。同時,第四卷積塊電路將部分輸出訊號反饋給自己的塊加法電路。接著,所有的部分輸出訊號由第四卷積塊電路的塊加法電路相加,從而產生另一部分輸出訊號。
如第7圖所示,在第三週期中,第四至第七卷積塊電路將相應的部分輸出訊號發送到第八卷積塊電路的路徑控制器。啟用路徑控制器的相應路徑,使得部分輸出訊號發送到第八卷積塊電路的加法電路。接著,所有的部分輸出訊號由第八卷積塊電路的塊加法電路相加,從而輸出表示一個像素的完整的卷積輸出訊號。
綜上所述,當CNN運算以硬體實現時,不須配備任何用於偏置運算的硬體,且所有二維卷積的濾波器大小都是奇數。本揭示提供一種卷積塊電路,由四個乘法電路組成。根據濾波器大小和卷積運算的位元大小的組合,將剩餘像素的乘法結果輸入到卷積塊陣列的必要卷積塊電路的最後部分的未使用的加法電路。最後,通過給出空濾波器輸入的偏置值,通過這種設計,可以獲得除了激活運算之外的所有成功的結果。這節省了硬體資源並且消除了對單獨的儲存器操作的需要,從而提高了性能。
以上僅是本揭示的較佳實施方式,應當指出,對於所屬領域技術人員,在不脫離本揭示原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視爲本揭示的保護範圍。
1:卷積塊陣列 10、10’:卷積塊電路 11:第一卷積塊電路 12:第二卷積塊電路 13:第三卷積塊電路 110:乘法電路 111:第一乘法電路 112:第二乘法電路 113:第三乘法電路 114:第四乘法電路 120:多路復用器 131:第一卷積加法電路 132:第二卷積加法電路 133:塊加法電路 140:鎖存器 150:路徑控制器 SCON:控制訊號 SOUT:輸出訊號 Im(1)~Im(4):輸入圖像 f(1)~f(4):濾波值 P(1)~P(4)、Px 1 ~Px 9 :特徵值 Wfx 1 ~Wfx 9 :權重係數 b:偏置係數 200:激活函數 201:部分 A:對應第6圖的部分 Sconv1~Sconv3:部分輸出訊號
第1圖顯示根據本揭示較佳實施例之卷積塊電路之示意圖; 第2圖顯示用於並行地處理不同濾波器組合之卷積塊陣列之示意圖; 第3圖顯示卷積塊電路執行基於涉及2位元的3×3濾波器窗口的卷積運算之示意圖; 第4圖顯示顯示CNN之激活函數; 第5圖顯示以一條線為基礎排列之複數個卷積塊電路,其執行基於涉及8位元的3×3濾波器窗口的卷積運算之示意圖; 第6圖顯示第5圖中複數個卷積塊電路之A部分之示意圖;以及 第7圖顯示以一條線為基礎排列之複數個卷積塊電路,其執行基於涉及8位元的5×5濾波器窗口的卷積運算之示意圖。
10:卷積塊電路
110:乘法電路
120:多路復用器
131:第一卷積加法電路
132:第二卷積加法電路
133:塊加法電路
140:鎖存器
150:路徑控制器
SCON:控制訊號
SOUT:輸出訊號
Im(1)~Im(4):輸入圖像
f(1)~f(4):濾波值
P(1)~P(4):特徵值

Claims (8)

  1. 一種用於實施神經網路應用之卷積塊陣列,包括:複數個卷積塊電路,用於處理該神經網路應用的一卷積運算,其中每一該複數個卷積塊電路包括:複數個乘法電路,用於執行該卷積運算;至少一加法電路,與該複數個乘法電路連接,用於執行該卷積運算的複數個結果的加法運算並且生成一輸出訊號;以及一鎖存器,其連接到該至少一加法電路並且還連接到至少一下游卷積塊電路,以及其中該鎖存器被配置為將該輸出訊號傳送到該至少一下游卷積塊電路或者是將該輸出訊號送回該至少一加法電路;其中至少一該複數個卷積塊電路被配置為供一偏置係數傳遞通過而傳送到該至少一加法電路以執行該神經網路應用的一偏置運算。
  2. 如請求項1之該卷積塊陣列,其中每一該複數個卷積塊電路包括四個乘法電路、一第一卷積加法電路、一第二卷積加法電路、以及一塊加法電路;其中該四個乘法電路中的兩個乘法電路連接到該第一卷積加法電路,並且該四個複數個乘法電路的另外兩個乘法電路連接到該第二卷積加法電路;以及該塊加法電路連接該第一卷積加法電路和該第二卷積加法電路。
  3. 如請求項1之該卷積塊陣列,其中該卷積塊陣列還包括:複數個多路復用器,分別連接到該複數個乘法電路,其中該複數個乘法電路通過各自的該多路復用器連接到該至少一加法電路;以及一路徑控制器,連接到該複數個多路復用器並且還連接到至少一上游卷積塊 電路,其中當該路徑控制器的相應路徑被啟用時,來自該至少一上游卷積塊的輸出訊號通過該路徑控制器傳送到該至少一加法電路。
  4. 如請求項1之該卷積塊陣列,其中該卷積運算的執行是藉由將複數個特徵值乘以複數個權重係數並與一偏置係數相加。
  5. 一種在卷積塊陣列中實施神經網路應用的方法,其中該卷積塊陣列包括複數個卷積塊電路,並且每一該複數個卷積塊電路包括複數個乘法電路和至少一加法電路,並且該方法包括:S10,在一第一維度中分配一組的複數個卷積塊電路來處理該神經網路應用的一卷積運算;S20,將一控制訊號輸入到該組的該複數個卷積塊電路以控制該組的該複數個卷積塊電路執行基於涉及N位元的M×M濾波器窗口的該卷積運算,其中M是奇數且N是大於1的整數;S30,將複數個特徵值和複數個濾波值輸入到該組的該複數個卷積塊電路;S40,藉由該卷積塊電路的該複數個乘法電路執行該複數個特徵值和該複數個濾波值的N位元乘法運算,其中該複數個特徵值和該複數個濾波值對應於複數個輸入圖像的複數個數值;S50,藉由該至少一加法電路將從該複數個乘法電路獲得的複數個結果相加;以及S60,產生一卷積輸出訊號,其中步驟S10還包括:根據基於涉及該N位元的該M×M濾波器窗口的該卷積運算的組合,確定所使用的該複數個卷積塊電路的數量來執行該複數個卷積塊電路的一個像素的該卷積運算,其中該複數個卷積塊電路是以一條線為基礎排列;以及 其中該一個像素的該複數個濾波值包括複數個權重係數和一偏置係數,並且在用於執行每個像素的該卷積運算的最後一個卷積塊電路中,該偏置係數通過該最後一個卷積塊電路的該複數個乘法電路的一閒置乘法電路傳遞到該至少一加法電路。
  6. 如請求項5之該方法,其中在步驟S50之後,該方法還包括:S51,藉由每一該卷積塊電路的該至少一加法電路將該複數個結果相加以產生一部分輸出訊號;S52,將所有的該部分輸出訊號發送到該最後一個卷積塊電路;以及S53,藉由該最後一個卷積塊電路的該至少一加法電路將所有的該部分輸出訊號相加,並生成表示該一個像素的該卷積輸出訊號。
  7. 如請求項5之該方法,其中每一該複數個卷積塊電路包括一鎖存器,該鎖存器連接到該至少一加法電路並且還連接到該最後一個卷積塊電路,並且其中在步驟S51之後,該最後一個卷積塊電路暫時將該部分輸出訊號儲存在該鎖存器中,以及在步驟S52中,該最後一個卷積塊電路將該部分輸出訊號反饋給該最後一個卷積塊電路的該至少一加法電路。
  8. 一種卷積塊電路,包含:四個乘法電路,用於執行基於涉及N位元的M×M濾波器窗口的一卷積運算;一第一卷積加法電路,連接到該四個乘法電路中的兩個乘法電路,並配置為將該兩個乘法電路執行該卷積運算獲得的複數個結果相加;一第二卷積加法電路,連接到該四個乘法電路的另外兩個乘法電路,並配置為將該另外兩個乘法電路執行該卷積運算獲得的複數個結果相加; 一塊加法電路,連接到該第一卷積加法電路和該第二卷積加法電路,並配置為執行一第一加法運算和一第二加法運算,其中在該第一加法運算中,該塊加法電路將該第一卷積加法電路和該第二卷積加法電路執行該卷積運算獲得的複數個結果與一偏置係數相加,並產生一第一卷積值,其中該偏置係數通過該四個乘法電路的一閒置乘法電路傳送到該塊加法電路;以及一鎖存器,連接到該塊加法電路,並配置為將該第一卷積值反饋給該塊加法電路;其中當該塊加法電路接收該第一卷積值和來自上游的複數個卷積塊電路的其他部分輸出訊號後,該塊加法電路執行該第二加法運算以將該第一卷積值和該其他部分輸出訊號相加,並產生一卷積輸出訊號。
TW108140288A 2018-11-06 2019-11-06 用於實施神經網路應用之卷積塊陣列及其使用方法、和卷積塊電路 TWI766203B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862756095P 2018-11-06 2018-11-06
US62/756,095 2018-11-06
PCT/CN2019/085197 WO2020093669A1 (en) 2018-11-06 2019-04-30 Convolution block array for implementing neural network application and method using the same, and convolution block circuit
WOPCT/CN2019/085197 2019-04-30

Publications (2)

Publication Number Publication Date
TW202038142A TW202038142A (zh) 2020-10-16
TWI766203B true TWI766203B (zh) 2022-06-01

Family

ID=70610684

Family Applications (3)

Application Number Title Priority Date Filing Date
TW108140289A TWI715281B (zh) 2018-11-06 2019-11-06 用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體
TW108140288A TWI766203B (zh) 2018-11-06 2019-11-06 用於實施神經網路應用之卷積塊陣列及其使用方法、和卷積塊電路
TW108140287A TWI726476B (zh) 2018-11-06 2019-11-06 實施神經網路之啟動邏輯之裝置及其方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW108140289A TWI715281B (zh) 2018-11-06 2019-11-06 用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW108140287A TWI726476B (zh) 2018-11-06 2019-11-06 實施神經網路之啟動邏輯之裝置及其方法

Country Status (4)

Country Link
US (3) US20220004856A1 (zh)
CN (3) CN112970037B (zh)
TW (3) TWI715281B (zh)
WO (3) WO2020093654A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210130470A (ko) * 2020-04-22 2021-11-01 에스케이하이닉스 주식회사 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템
CN113902111A (zh) * 2021-12-09 2022-01-07 绍兴埃瓦科技有限公司 多芯片互连系统及神经网络加速处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法
US20180129935A1 (en) * 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
CN108171317A (zh) * 2017-11-27 2018-06-15 北京时代民芯科技有限公司 一种基于soc的数据复用卷积神经网络加速器
TW201830232A (zh) * 2017-02-10 2018-08-16 耐能股份有限公司 卷積神經網路的運算裝置及方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7752417B2 (en) * 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
CN101256536B (zh) * 2007-03-01 2010-05-26 创惟科技股份有限公司 闪存地址转换层系统
US7685355B2 (en) * 2007-05-07 2010-03-23 Microsoft Corporation Hardware memory management unit simulation using concurrent lookups for address translation data
CN101661438B (zh) * 2008-08-29 2013-08-28 鸿富锦精密工业(深圳)有限公司 电子装置及中央处理器寻址空间扩展方法
US8386747B2 (en) * 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
US8635430B2 (en) * 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
KR20150132151A (ko) * 2013-03-12 2015-11-25 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 프로그램 가능한 어드레스 매핑 및 메모리 액세스 동작
CN103985083B (zh) * 2014-05-21 2017-02-01 西安交通大学 一种可重构的一维卷积处理器
CN104333435B (zh) * 2014-09-30 2017-11-07 扬智科技股份有限公司 迭代解映射译码装置
CN105844330B (zh) * 2016-03-22 2019-06-28 华为技术有限公司 神经网络处理器的数据处理方法及神经网络处理器
WO2017185248A1 (zh) * 2016-04-27 2017-11-02 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN106056211B (zh) * 2016-05-25 2018-11-23 清华大学 神经元计算单元、神经元计算模块及人工神经网络计算核
GB2550859B (en) * 2016-05-26 2019-10-16 Advanced Risc Mach Ltd Address translation within a virtualised system
CN106201651A (zh) * 2016-06-27 2016-12-07 鄞州浙江清华长三角研究院创新中心 神经形态芯片的模拟器
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
CN107992942B (zh) * 2016-10-26 2021-10-01 上海磁宇信息科技有限公司 卷积神经网络芯片以及卷积神经网络芯片操作方法
US10394929B2 (en) * 2016-12-20 2019-08-27 Mediatek, Inc. Adaptive execution engine for convolution computing systems
US11205120B2 (en) * 2016-12-22 2021-12-21 Samsung Electronics Co., Ltd System and method for training deep learning classification networks
CN106845635A (zh) * 2017-01-24 2017-06-13 东南大学 基于级联形式的cnn卷积核硬件设计方法
CN106779060B (zh) * 2017-02-09 2019-03-08 武汉魅瞳科技有限公司 一种适于硬件设计实现的深度卷积神经网络的计算方法
CN107633297B (zh) * 2017-03-10 2021-04-06 南京风兴科技有限公司 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器
US10049323B1 (en) * 2017-10-13 2018-08-14 StradVision, Inc. Method and device for performing activation and convolution operation at the same time and learning method and learning device for the same
CN107844826B (zh) * 2017-10-30 2020-07-31 中国科学院计算技术研究所 神经网络处理单元及包含该处理单元的处理系统
GB2568102B (en) * 2017-11-06 2021-04-14 Imagination Tech Ltd Exploiting sparsity in a neural network
CN108334942B (zh) * 2017-12-22 2020-08-04 清华大学 神经网络的数据处理方法、装置、芯片和存储介质
CN111061655B (zh) * 2017-12-28 2022-06-17 贵阳忆芯科技有限公司 存储设备的地址转换方法与设备
CN108229671B (zh) * 2018-01-16 2022-03-04 华南理工大学 一种降低加速器外部数据存储带宽需求的系统和方法
US11586907B2 (en) * 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration
CN108647045B (zh) * 2018-03-20 2021-10-01 科大讯飞股份有限公司 激活函数的实现方法及装置、存储介质、电子设备
US11461631B2 (en) * 2018-03-22 2022-10-04 Amazon Technologies, Inc. Scheduling neural network computations based on memory capacity
US11461623B2 (en) * 2018-10-18 2022-10-04 Taiwan Semiconductor Manufacturing Co., Ltd. Method and apparatus for defect-tolerant memory-based artificial neural network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180129935A1 (en) * 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
TW201830232A (zh) * 2017-02-10 2018-08-16 耐能股份有限公司 卷積神經網路的運算裝置及方法
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法
CN108171317A (zh) * 2017-11-27 2018-06-15 北京时代民芯科技有限公司 一种基于soc的数据复用卷积神经网络加速器

Also Published As

Publication number Publication date
TWI726476B (zh) 2021-05-01
CN112955878B (zh) 2023-10-27
CN112970037A (zh) 2021-06-15
US20220027714A1 (en) 2022-01-27
CN112955878A (zh) 2021-06-11
CN112970037B (zh) 2024-02-02
WO2020093676A1 (en) 2020-05-14
CN112970036A (zh) 2021-06-15
TW202038142A (zh) 2020-10-16
US20220004856A1 (en) 2022-01-06
WO2020093654A1 (en) 2020-05-14
WO2020093669A1 (en) 2020-05-14
US20220004850A1 (en) 2022-01-06
CN112970036B (zh) 2024-02-23
TW202018597A (zh) 2020-05-16
TWI715281B (zh) 2021-01-01
TW202038143A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
Kang Accelerator-aware pruning for convolutional neural networks
WO2019119301A1 (zh) 在卷积神经网络模型中确定特征图像的方法和装置
US9779786B1 (en) Tensor operations and acceleration
US11144819B2 (en) Convolutional neural network hardware configuration
CN106844294B (zh) 卷积运算芯片和通信设备
JP2022115959A (ja) 準同型暗号下での安全な計算を加速するための準同型処理ユニット(hpu)
CN108416436B (zh) 使用多核心处理模块进行神经网络划分的方法及其系统
US20190212982A1 (en) Processor, information processing apparatus and operation method for processor
US10482380B2 (en) Conditional parallel processing in fully-connected neural networks
US20200293379A1 (en) Convolutional computing accelerator, convolutional computing method, and computer-readable storage medium
DE60318105T2 (de) Pipeline-coprozessor
TWI766203B (zh) 用於實施神經網路應用之卷積塊陣列及其使用方法、和卷積塊電路
KR20190074195A (ko) 뉴럴 프로세싱 가속기
EP3584719A1 (en) Method and device for multiplying matrices with vectors
CN108304926B (zh) 一种适用于神经网络的池化计算装置及方法
JPWO2019135274A1 (ja) ニューラル・ネットワークを有するデータ処理システム
CN108897716A (zh) 通过存储器读写操作来缩减计算量的数据处理装置及方法
KR20220071723A (ko) 딥러닝 연산 수행 방법 및 장치
JP7332722B2 (ja) データ処理方法、装置、記憶媒体及び電子機器
US11435981B2 (en) Arithmetic circuit, and neural processing unit and electronic apparatus including the same
US11704535B1 (en) Hardware architecture for a neural network accelerator
Hui et al. Configurable CNN accelerator in speech processing based on vector convolution
US4879675A (en) Parity generator circuit and method
US20200311330A1 (en) Method for simulating a dynamic system
US11580191B1 (en) Method and system for convolution