TWI768168B - 集成電路芯片裝置及相關產品 - Google Patents
集成電路芯片裝置及相關產品 Download PDFInfo
- Publication number
- TWI768168B TWI768168B TW107147415A TW107147415A TWI768168B TW I768168 B TWI768168 B TW I768168B TW 107147415 A TW107147415 A TW 107147415A TW 107147415 A TW107147415 A TW 107147415A TW I768168 B TWI768168 B TW I768168B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- connection relationship
- input
- basic processing
- basic
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
Abstract
一種集成電路芯片裝置及相關產品,所述集成電路芯片裝置包括:主處理電路以及多個基礎處理電路;所述主處理電路或多個基礎處理電路中至少一個電路包括:壓縮映射電路包括;所述壓縮映射電路,用於執行神經網絡運算中的各個數據的壓縮處理;所述多個基礎處理電路呈陣列分布;每個基礎處理電路與相鄰的其他基礎處理電路連接,所述主處理電路連接第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路。本披露提供的技術方案具有計算量小,功耗低的優點。
Description
本披露涉及神經網絡領域,尤其涉及一種集成電路芯片裝置及相關產品。
人工神經網絡(Artificial Neural Network,ANN),是20世紀80年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象,建立某種簡單模型,按不同的連接方式組成不同的網絡。在工程與學術界也常直接簡稱為神經網絡或類神經網絡。神經網絡是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。現有的神經網絡的運算基於中央處理器(Central Processing Unit,CPU)或圖形處理器(Graphics Processing Unit,GPU)來實現神經網絡的運算,此種運算的計算量大,功耗高。
本披露實施例提供了一種集成電路芯片裝置及相關產品,可提升計算裝置的處理速度,提高效率。
第一方面,提供一種所述集成電路芯片裝置包括:主處理電路以及多個基礎處理電路;所述多個基礎處理電路呈陣列分布;每個基礎處理電路與相鄰的其他基礎處理電路連接,所述主處理電路連接所述多個基礎處理電路中的k個基礎處理電路,所述k個基礎處理電路為:第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路;所述多個基礎處理電路包括:壓縮映射電路,用於執行神經網絡運算中的各個數據的壓縮處理;所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及和所述k個基礎處理電路傳輸數據;所述k個基礎處理電路,用於在所述主處理電路以及多個基礎處理電路之間的數據轉發;所述多個基礎處理電路,用於依據傳輸數據的運算控制確定是否啟動所述壓縮映射電路對所述傳輸數據進行壓縮處理,依據壓縮處理後的傳輸數據以並行方式執行神經網絡中的運算,並將運算結果通過所述k個基礎處理電路傳輸給所述主處理電路。
第二方面,提供一種神經網絡運算裝置,所述神經網絡運算裝置包括一個或多個第一方面提供的集成電路芯片裝置。
第三方面,提供一種組合處理裝置,所述組合處理裝置包括:第二方面提供的神經網絡運算裝置、通用互聯介面和通用處理裝置;所述神經網絡運算裝置通過所述通用互聯介面與所述通用處理裝置連接。
第四方面,提供一種芯片,所述芯片集成第一方面的裝置、第二方面的裝置或第三方面的裝置。
第五方面,提供一種電子設備,所述電子設備包括第四方面的芯片。
第六方面,提供一種神經網絡的運算方法,所述方法應用在集成電路芯片裝置內,所述集成電路芯片裝置包括:第一方面所述的集成電路芯片裝置,所述集成電路芯片裝置用於執行神經網絡的運算。
可以看出,通過本披露實施例,提供壓縮映射電路將數據塊壓縮處理後再進行運算,節省了傳輸資源以及計算資源,所以其具有功耗低,計算量小的優點。
101、601:壓縮映射電路
1011:第一稀疏處理單元
1012:第一數據處理單元
1013:第二稀疏處理單元
1014:第三稀疏處理單元
1015:第一連接關係處理單元
1016:第二數據處理單元
6011:輸入數據緩存單元
6012:連接關係緩存單元
6013:第四稀疏處理單元
i1、i2、i3、i4:輸入神經元
o1、o2:輸出神經元
S、P:矩陣
B:向量
圖1a是一種集成電路芯片裝置結構示意圖。
圖1b是另一種集成電路芯片裝置結構示意圖。
圖1c是一種基礎處理電路的結構示意圖。
圖1d是一種主處理電路的結構示意圖。
圖1e為本發明實施例提供的一種壓縮映射電路的局部結構示意圖。
圖1f為本發明實施例提供的一種神經網絡結構示意圖。
圖1g為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖1h為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖1i為本發明實施例提供的另一種壓縮映射電路的局部結構示責圖。
圖1j為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖1k為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖1l為本發明實施例提供的另一種壓縮映射電路的局部結構示責圖。
圖2a是一種基礎處理電路的使用方法示意圖。
圖2b是一種主處理電路傳輸數據示意圖。
圖2c是矩陣乘以向量的示意圖。
圖2d是一種集成電路芯片裝置結構示意圖。
圖2e是又一種集成電路芯片裝置結構示意圖。
圖2f是矩陣乘以矩陣的示意圖。
圖3a為卷積輸入數據示意圖。
圖3b為卷積核示意圖。
圖3c為輸入數據的一個三維數據塊的運算窗口示意圖。
圖3d為輸入數據的一個三維數據塊的另一運算窗口示意圖。
圖3e為輸入數據的一個三維數據塊的又一運算窗口示意圖。
為了使本技術領域的人員更好地理解本披露方案,下面將結合本披露實施例中的圖式,對本披露實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本披露一部分實施例,而不是全部的實施例。基於本披露中的實施例,所屬技術領域中具有通常知識者在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本披露保護的範圍。
在第一方面提供的裝置中,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據該運算指令對所述待計算的數據塊劃分成分發數據塊以及廣播數據塊;對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至所述k個基礎處理電路,將所述廣播數據塊廣播至所述k個基礎處理電路;所述多個基礎處理電路,用於依據接收到的基礎數據塊、廣播數據塊以及運算指令啟動所述壓縮映射電路將基礎數據塊和廣播數據塊進行壓縮處理,對壓縮處理後的所述基本數據塊與壓縮處理後的所述廣播數據塊執行內積運算得到運算結果,將運算結果轉通過所述k個基礎處理電路傳輸給所述主處理電路;所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
可選的,所述主處理電路,具體用於將所述廣播數據塊通過一次廣播至所述k個基礎處理電路。
在第一方面提供的裝置中,所述主處理電路,用於在如所述運算結果為內積處理的結果時,對所述運算結果累加後得到累加結果,將該累加結果排列得到所述待計算的數據塊以及運算指令的指令結果。
在第一方面提供的裝置中,所述主處理電路,具體用於將所述廣播數據塊分成多個部分廣播數據塊,將所述多個部分廣播數據塊通過多次廣播至所述k個基礎處理電路。
在第一方面提供的裝置中,所述多個基礎處理電路,具體用於啟動所述壓縮映射電路將所述部分廣播數據塊與所述基本數據塊進行壓縮處理後執行一次內積處理得到內積處理結果,將所述內積處理結果累加得到部分運算結果,將所述部分運算結果通過所述k個基礎處理電路發送至所述主處理電路。
在第一方面提供的裝置中,所述多個基礎處理電路,具體用於啟動所述壓縮映射電路對所述部分廣播數據塊與所述基本數據塊進行壓縮處理,復用n次該部分廣播數據塊(具體為壓縮處理後的部分廣播數據塊)執行該部分廣播數據塊與該n個基本數據塊(具體為壓縮處理後的基本數據塊)的內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,將所述n個部分運算結果通過所述k個基礎處理電路發送至主處理電路,所述n為大於等於2的整數。
在第一方面提供的裝置中,所述主處理電路包括:主寄存器或主片上緩存電路;所述多個基礎處理電路包括:基本寄存器或基本片上緩存電路。
在第一方面提供的裝置中,所述主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路、壓縮映射電路或數據重排電路中的一種或任意組合。
在第一方面提供的裝置中,所述數據為:向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合。
在第一方面提供的裝置中,如所述運算指令為乘法指令,所述主處理電路確定乘數數據塊為廣播數據塊,被乘數數據塊為分發數據塊;
如所述運算指令為卷積指令,所述主處理電路確定輸入數據塊為廣播數據塊,卷積核為分發數據塊。
在第六方面提供的方法中,所述神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏置運算、全連接運算、通用矩陣乘法(General Matrix Multiplication,GEMM)運算、通用矩陣向量乘法(General Matrix Vector Multiplication,GEMV)運算、激活運算中的一種或任意組合。
參閱圖1a,圖1a為本披露提供的一種集成電路芯片裝置,該集成電路芯片裝置包括:主處理電路和多個基礎處理電路,所述多個基礎處理電路呈陣列排布(m*n陣列),其中,m、n的取值範圍為大於等於1的整數且m、n中至少有一個值大於等於2。對於m*n陣列分布的多個基礎處理電路,每個基礎處理電路與相鄰的基礎處理電路連接,所述主處理電路連接多個基礎處理電路的k個基礎處理電路,所述k個基礎處理電路可以為:第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路。如圖1a所示的集成電路芯片裝置,主處理電路和/或多個基礎處理電路可以包括壓縮映射電路,具體的多個基礎處理電路中可以有部分基礎處理電路包括壓縮映射電
路,例如,在一個可選的技術方案中,可以將k個基礎處理電路配置壓縮映射電路,這樣n個基礎處理電路可以分別負責對本列的m個基礎處理電路的數據進行數據壓縮處理步驟。此設置能夠提高運算效率,降低功耗,因為對於第1行的n個基礎處理電路來說,由於其最先接收到主處理電路發送的數據,那麼將該接收到的數據進行壓縮處理可以減少後續基礎處理電路的計算量以及與後續基礎處理電路的數據傳輸的量,同理,對於第一列的m個基礎處理電路配置壓縮映射電路也具有計算量小和功耗低的優點。另外,依據該結構,主處理電路可以採用動態的數據發送策略,例如,主處理電路向第1列的m個基礎處理電路廣播數據,主處理電路向第1行的n個基礎處理電路發送分發數據,此優點是,通過不同的數據輸入口傳遞不同的數據到基礎處理電路內,這樣基礎處理電路可以不區分該接收到的數據是何種數據,只需要確定該數據從哪個接收端口接收即可以獲知其屬於何種數據。
所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及和其相連的所述基礎處理電路傳輸數據;上述連續的運算但不限於:累加運算、ALU運算、激活運算等等運算。
所述多個基礎處理電路,用於依據傳輸的數據以並行方式執行神經網絡中的運算,並將運算結果通過所述主處理電路連接的基礎處理電路傳輸給所述主處理電路。上述並行方式執行神經網絡中的運算包括但不限於:內積運算、矩陣或向量乘法運算等等。具體的,所述多個基礎處理電路可先對傳輸的數據進行壓縮處理,然後在依據壓縮處理後的數據以並行方式執行神經網絡中的運算。
主處理電路可以包括:數據發送電路、數據接收電路或介面,該數據發送電路可以集成數據分發電路以及數據廣播電路,當然在實際應用中,數據分發電路以及數據廣播電路也可以分別設置。對於廣播數據,即需要發送給每個基礎處理電路的數據。對於分發數據,即需要有選擇的發送給部分基礎處理電路的數據,具體的,如卷積運算,卷積運算的卷積輸入數據需要發送給所有的基礎處理電路,所有其為廣播數據,卷積核需要有選擇的發送給部分基礎數據塊,所以卷積核為分發數據。分發數據具體的選擇發送給那個基礎處理電路的方式可以由主處理電路依據負載以及其他分配方式進行具體的確定。對於廣播發送方式,即將廣播數據以廣播形式發送至每個基礎處理電路。(在實際應用中,通過一次廣播的方式將廣播數據發送至每個基礎處理電路,也可以通過多次廣播的方式將廣播數據發送至每個基礎處理電路,本披露具體實施方式並不限制上述廣播的次數),對於分發發送方式,即將分發數據有選擇的發送給部分基礎處理電路。
主處理電路(如圖1d所示)可以包括寄存器和/或片上緩存電路,該主處理電路還可以包括:控制電路、向量運算器電路、算數邏輯單元(arithmetic and logic unit,ALU)電路、累加器電路、直接內存存取(Direct Memory Access,DMA)電路等電路,當然在實際應用中,上述主處理電路還可以添加,轉換電路(例如矩陣轉置電路)、數據重排電路或激活電路等等其他的電路。
每個基礎處理電路可以包括基礎寄存器和/或基礎片上緩存電路;每個基礎處理電路還可以包括:內積運算器電路、向量運算器電路、累加器電路等中一個或任意組合。上述內積運算器電路、向量運算器電路、累加器
電路都可以是集成電路,上述內積運算器電路、向量運算器電路、累加器電路也可以為單獨設置的電路。
可選的,對於第m行n個基礎處理電路的累加器電路可以執行內積運算的累加運算,因為對於第m行基礎處理電路來說,其能夠接收到本列所有的基礎處理電路的乘積結果,而將內積運算的累加運算通過第m行的n個基礎處理電路執行內積運算的累加運算,這樣能夠對計算資源進行有效的分配,具有節省功耗的優點。此技術方案尤其對於m數量較大時更為適用。
對於數據的壓縮處理可以由主處理電路來分配執行的電路,具體的,可以通過顯示或隱式的方式來分配執行的電路,對於顯示方式,主處理電路可以配置一個特殊指示或指令,當基礎處理電路接收到該特殊指示或指令時,確定執行數據壓縮處理,如基礎處理電路未接收到特殊指示或指令時,確定不執行數據壓縮處理。又如,可以以暗示的方式來執行,例如,基礎處理電路接收到數據類型為稀疏數據(即含0,或包括小於預設閾值的數據大於預設數量)且確定需要執行內積運算時,將對稀疏數據進行壓縮處理。對於顯示配置的方式,特殊指令或指示可以配置一個遞減序列,該遞減序列的每經過一個基礎處理電路,數值減1,基礎處理電路讀取該遞減序列的值,如該值大於零,則執行數據壓縮處理,如該值等於或小於零,則不執行數據壓縮處理。此設置是依據陣列分配的基礎處理電路所配置的,例如對於第i列的m個基礎處理電路來說,主處理電路需要前面5個基礎處理電路執行屬於壓縮處理,則主處理電路下發一個特殊指令,該特殊指令包含有遞減序列,該遞減序列的初始值可以為5,則每經過一個基礎處理電路,遞減序列的值即減1,到第5個基礎處理電路時,該遞減序列的值為1,到第6個基礎處理電路時,該遞減序列為0,此時
第6個基礎處理電路將不在執行該數據壓縮處理,此種方式可以使得主處理電路可以動態的配置數據壓縮處理的執行主體以及執行次數。
本披露一個實施例提供一種集成電路芯片裝置,包括一個主處理電路(也可以稱為主單元)和多個基礎處理電路(也可以稱為基礎單元);實施例的結構如圖1b所示;其中,虛線框中是所述神經網絡運算裝置的內部結構;灰色填充的箭頭表示主處理電路和基礎處理電路陣列之間的數據傳輸通路,空心箭頭表示基礎處理電路陣列中各個基礎處理電路(相鄰基礎處理電路)之間的數據傳輸通路。其中,基礎處理電路陣列的長寬長度可以不同,即m、n的取值可以不同,當然也可以相同,本披露並不限制上述取值的具體值。
基礎處理電路的電路結構如圖1c所示;圖中虛線框表示基礎處理電路的邊界,與虛線框交叉的粗箭頭表示數據輸入輸出通道(指向虛線框內是輸入通道,指出虛線框是輸出通道);虛線框中的矩形框表示存儲單元電路(寄存器和/或片上緩存),包括輸入數據1,輸入數據2,乘法或內積結果,累加數據;菱形框表示運算器電路,包括乘法或內積運算器,加法器。
本實施例中,所述神經網絡運算裝置包括一個主處理電路和16個基礎處理電路(16個基礎處理電路僅僅為了舉例說明,在實際應用中,可以採用其他的數值);本實施例中,基礎處理電路有兩個數據輸入介面,兩個數據輸出介面;在本例的後續描述中,將橫向的輸入介面(圖1b中指向本單元的橫向箭頭)稱作輸入0,竪向的輸入介面(圖1b中指向本單元的竪向箭頭)稱作輸入1;將每一個橫向的數據輸出介面(圖1b中從本單元指出的橫向箭頭)稱作輸出0,竪向的數據輸出介面(圖1b中從本單元指出的竪向箭頭)稱作輸出1。
每一個基礎處理電路的數據輸入介面和數據輸出介面可以分別連接不同的單元,包括主處理電路與其他基礎處理電路;本例中,基礎處理電路0,4,8,12(編號見圖1b)這四個基礎處理電路的輸入0與主處理電路的數據輸出介面連接;本例中,基礎處理電路0,1,2,3這四個基礎處理電路的輸入1與主處理電路的數據輸出介面連接;本例中,基礎處理電路12,13,14,15這四個基礎處理電路的輸出1與主處理電路的數據輸入介面相連;本例中,基礎處理電路輸出介面與其他基礎處理電路輸入介面相連接的情況見圖1b所示,不再一一列舉;具體地,S單元的輸出介面S1與P單元的輸入介面P1相連接,表示P單元將可以從其P1介面接收到S單元發送到其S1介面的數據。
本實施例包含一個主處理電路,主處理電路與外部裝置相連接(即由輸入介面也有輸出介面),主處理電路的一部分數據輸出介面與一部分基礎處理電路的數據輸入介面相連接;主處理電路的一部分數據輸入介面與一部分基礎處理電路的數據輸出介面相連。
集成電路芯片裝置的使用方法
本披露提供的使用方法中所涉及到的數據可以是經過壓縮處理後的數據。需要說明的是,本申請中的數據可以是神經網絡中的輸入神經元或權值,其具體可為矩陣數據或向量數據等,本申請不做限定。也即是本申請下文闡述的數據或數據塊可為神經網絡中的輸入神經元或權值,它們可以矩陣或向量等形式體現。
由於神經網絡是一個高計算量和高訪存的算法,權值越多,計算量和訪存量都會增大。特別是,針對權值較小(如為0,或小於設定數值的權值)的情況下,為提高計算速率、減小開銷需對這些權值較小的數據進行壓縮處理。在實際應用中,數據壓縮處理在稀疏神經網絡中應用,效果最為明顯,如減小數據計算的工作量、減小數據額外開銷,提高數據計算速率等。
以輸入數據為例,具體闡述所述壓縮映射電路的數據壓縮處理實施例。所述輸入數據包括但不限於至少一個輸入神經元和/或至少一個權值。
第一種實施例中:壓縮映射電路對輸入神經元和權值均進行壓縮處理
壓縮映射電路101接收到輸入數據(具體可為主壓縮處理電路發送的所述待計算的數據塊)之後,可對所述輸入數據進行壓縮處理,以得到壓縮處理後的輸入數據,所述輸入數據包括至少一個輸入神經元和至少一個權值,所述壓縮處理後的輸入數據包括壓縮處理後的輸入神經元和壓縮處理後的權值。
上述輸入數據包括至少一個輸入神經元和至少一個權值。上述壓縮映射電路101確定所述至少一個輸入神經元中每個輸入神經元的絕對值是否大於第一閾值。當上述輸入神經元的絕對值小於或者等於該第一閾值時,上述壓縮映射電路101將該輸入神經元刪除;當上述輸入神經元的絕對值大於上述第一閾值時,上述壓縮映射電路101保留該輸入神經元,該壓縮映射電路101將刪除後的輸出神經元輸出,作為壓縮處理後的輸入神經元。上述壓縮映射電路101獲取輸入神經元的連接關係數據,該輸入神經元的連接關係數據表示上述至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元的位置信息。
上述壓縮映射電路101確定上述至少一個權值中每個權值的絕對值是否大於第二閾值。當權值的絕對值小於或者等於上述第二閾值時,上述壓縮映射電路101將該權值刪除,並根據上述輸入神經元的連接關係數據將從上述刪除後的權值中選擇相關的權值輸出,作為壓縮處理後的權值。
在一種可行的實施例中,上述輸入數據包括至少一個輸入神經元和至少一個權值。上述壓縮映射電路101確定所述至少一個權值中每個權值的絕對值是否大於第二閾值。當上述權值的絕對值小於或者等於該第二閾值時,上述壓縮映射電路101將該權值刪除;當上述權值的絕對值大於上述第二閾值時,上述壓縮映射電路101保留該權值,該壓縮映射電路101將刪除後的權值輸出,作為壓縮處理後的權值。上述壓縮映射電路101獲取權值的連接關係數據,該權值的連接關係數據表示上述至少一個輸入神經元與輸出神經元之間的連接關係的數據。上述壓縮映射電路101確定上述至少一個輸入神經元中每個輸入神經元的絕對值是否大於第一閾值。當輸入神經元的絕對值小於或者等於上述第一閾值時,上述壓縮映射電路101將該輸入神經元刪除,並根據上述權值的連接關係數據將從上述刪除後的輸入神經元中選擇相關的輸入神經元輸出,作為壓縮處理後的輸入神經元。
進一步地,上述壓縮映射電路101將上述壓縮處理後的輸入神經元和壓縮處理後的權值按照一一對應的格式存儲到存儲電路中。
具體地,上述壓縮映射電路101對上述壓縮處理後的輸入神經元和上述壓縮處理後的權值按照一一對應的格式進行存儲的具體方式是將上述壓縮處理後的輸入神經元中的每個壓縮處理後的輸入神經元和與其對應的壓縮處理後的權值作為一個數據集,並將該數據集存儲到存儲電路中。
具體地,如圖1e所示,上述壓縮映射電路101包括:第一稀疏處理單元1011,用於對第二輸入數據進行壓縮處理,以得到第三輸出數據和第二輸出數據,並將所述第三輸出數據傳輸至第一數據處理單元1012。
第一數據處理單元1012,用於接收第一輸入數據和接收所述第三輸出數據,並根據上述第三輸出數據和第一輸入數據輸出第一輸出數據。
其中,當所述第一輸入數據包括至少一個輸入神經元,所述第二輸入數據包括至少一個權值時,所述第一輸出數據為壓縮處理後的輸入神經元,所述第二輸出數據為壓縮處理後的權值,所述第三輸出數據為權值的連接關係數據;當所述第一輸入數據包括至少一個權值,所述第二輸入數據包括至少一個輸入神經元時,所述第一輸出數據為壓縮處理後的權值,所述第二輸出數據為壓縮處理後的輸入神經元,所述第三輸出數據為輸入神經元的連接關係數據。
具體地,當上述第二輸入數據為權值時,且權值的形式為wij,該wij表示第i個輸入神經元與第j個輸出神經元之間的權值;上述第一稀疏處理單元1011根據權值確定上述連接關係數據(即上述第三輸出數據),並將上述權值中絕對值小於或者等於第二閾值的權值刪除,得到壓縮處理後的權值(即上述第二輸出數據);當上述第二輸入數據為輸入神經元時,上述第一稀疏處理單元1011根據輸入神經元得到連接關係數據,並將該輸入神經元中的絕對值小於或等於上述第一閾值的輸入神經元刪除,以得到壓縮處理後的輸入神經元。
可選地,上述第一閾值可為0.1、0.08、0.05、0.02、0.01、0或者其他值。上述第二閾值可為0.1、0.08、0.06、0.05、0.02、0.01、0或者其他值。上述第一閾值和上述第二閾值可以一致,也可以不一致。
其中,上述連接關係數據可以步長索引或者直接索引的形式表示。
具體地,以直接索引形式表示的連接關係數據為由0和1組成的字符串,當上述第二輸入數據為權值時,0表示該權值的絕對值小於或者等於上述第二閾值,即該權值對應的輸入神經元與輸出神經元之間沒有連接,1表示該權值的絕對值大於上述第二閾值,即該權值對應的輸入神經元與輸出神經元之間有連接。以直接索引形式表示的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示權值的連接關係;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示權值的連接關係。當上述第二輸入數據為輸入神經元時,0表示該輸入神經元的絕對值小於或者等於上述第一閾值,1表示該輸入神經元的絕對值大於上述第一閾值。
應理解的,所述連接關係數據也可用向量/矩陣等形式體現,其中,0表示該位置對應的輸入神經元/權值的數據為0或者小於第一閾值;相應地,1表示該位置對應的輸入神經元/權值的數據不為0或者大於第一閾值等,本申請不做限定。可選的,所述數據的連接關係數據也可稱為標記mask矩陣/mask向量。
當上述第二輸入數據為權值時,以步長索引形式表示的連接關係數據為與輸出神經元有連接的輸入神經元與上一個與該輸出神經元有連接的
輸入神經元之間的距離值組成的字符串;當上述第二輸入數據為輸入神經元時,以步長索引表示的數據以當前絕對值大於上述第一閾值的輸入神經元與上一個絕對值大於上述第一閾值的輸入神經元之間的距離值組成的字符串表示。
舉例說明,假設上述第一閾值和上述第二閾值均為為0.01,參見圖1f,圖1f為本發明實施例提供的一種神經網絡的示意圖。如圖1f中的a圖所示,上述第一輸入數據為輸入神經元,包括輸入神經元i1、i2、i3和i4,上述第二輸入數據為權值。對於輸出神經元o1,權值為w11,w21,w31和w41;對於輸出神經元o2,權值w12,w22,w32和w42,其中權值w21,w12和w42的值為0,其絕對值均小於上述第一閾值0.01,上述第一稀疏處理單元1011確定上述輸入神經元i2和輸出神經元o1沒有連接,上述輸入神經元i1和i4與輸出神經元o2沒有連接,上述輸入神經元i1、i3和i4與上述輸出神經元o1有連接,上述輸入神經元i2和i3與輸出神經元o2有連接。以每個輸出神經元與所有輸入神經元的連接狀態表示上述連接關係數據,則上述輸出神經元o1的連接關係數據為「1011」,輸出神經元o2的連接關係數據為「0110」(即上述連接關係數據為「10110110」);以每個輸入神經元與所有輸出神經元的連接關係,則輸入神經元i1的連接關係數據為「10」,輸入神經元i2的連接關係數據為「01」,輸入神經元i3的連接關係數據為「11」,輸入神經元i4的連接關係數據為「10」(即上述連接關係數據為「10011110」)。
對於上述輸出神經元o1,上述壓縮映射電路101將上述i1與w11,i3與w31和i4與w41分別作為一個數據集,並將該數據集存儲到存儲電路中;對於輸出神經元o2,上述壓縮映射電路101將上述i2與w22和i3與w32分別作為一個數據集,並將該數據集存儲到存儲電路中。
針對上述輸出神經元o1,上述第二輸出數據為w11,w31和w41;針對上述輸出神經元o2,上述第二輸出數據為w22和w32。
當上述第二輸入數據為輸入神經元i1、i2、i3和i4,且該輸入神經元的值分別為1,0,3,5則上述連接關係數據(即上述第三輸出數據)為「1011」,上述第二輸出數據為1,3,5。
如圖1f中的b圖所示,上述第一輸入數據包括輸入神經元i1、i2、i3和i4,上述第二輸入數據為權值。對於輸出神經元o1,權值為w11,w21,w31和w41;對於輸出神經元o2,權值w12,w22,w32和w42,其中權值w21,w12和w42的值為0,上述稀疏處理單元1011確定上述輸入神經元i1、i3和i4與上述輸出神經元o1有連接,上述輸入神經元i2和i3與輸出神經元o2有連接。上述輸出神經元o1與輸入神經元之間的連接關係數據為「021」。其中,該連接關係數據中第一個數字「0」表示第一個與輸出神經元o1有連接的輸入神經元與第一個輸入神經元之間的距離為0,即第一個與輸出神經元o1有連接的輸入神經元為輸入神經元i1;上述連接關係數據中第二個數字「2」表示第二個與輸出神經元o1有連接的輸入神經元與第一個與輸出神經元o1有連接的輸入神經元(即輸入神經元i1)之間的距離為2,即第二個與輸出神經元o1有連接的輸入神經元為輸入神經元i3;上述連接關係數據中第三個數字「1」表示第三個與輸出神經元o1有連接的輸入神經元與第二個與該輸出神經元o1有連接的輸入神經元之間的距離為1,即第三個與輸出神經元o1有連接的輸入神經元為輸入神經元i4。
上述輸出神經元o2與輸入神經元之間的連接關係數據為「11」。其中,該連接關係數據中的第一數字「1」表示第一個與輸出神經元o2有連接
的輸入神經元與第一個輸入神經元(即輸入神經元i1)之間的距離為,即該第一個與輸出神經元o2有連接關係的輸入神經元為輸出神經元i2;上述連接關係數據中的第二數字「1」表示第二個與輸出神經元o2有連接的輸入神經元與第一個與輸出神經元o2有連接的輸入神經元的距離為1,即第二個與輸出神經元o2有連接的輸入神經元為輸入神經元i3。
對於上述輸出神經元o1,上述壓縮映射電路101將上述i1與w11,i3與w31和i4與w41分別作為一個數據集,並將該數據集存儲到存儲電路中;對於輸出神經元o2,上述壓縮映射電路101將上述i2與w22和i3與w32分別作為一個數據集,並將該數據集存儲到存儲電路中。
針對上述輸出神經元o1,上述第二輸出數據為w11,w31和w41;針對上述輸出神經元o2,上述第二輸出數據為w22和w32。
當上述第二輸入數據為輸入神經元i1、i2、i3和i4,且該輸入神經元的值分別為1,0,3,5則上述連接關係數據即上述第三輸出數據為「021」,上述第二輸出數據為1,3,5。
當上述第一輸入數據為輸入神經元時,則上述第二輸入數據為權值,上述第三輸出數據為輸出神經元與上述輸入神經元之間的連接關係數據。上述第一數據處理單元1012接收到上述輸入神經元後,將該輸入神經元中絕對值小於或等於上述第二閾值的輸入神經元剔除,並根據上述連接關係數據,從剔除後的輸入神經元中選擇與上述權值相關的輸入神經元,作為第一輸出數據輸出。
舉例說明,假設上述第一閾值為0,上述輸入神經元i1、i2、i3和i4,其值分別為1,0,3和5,對於輸出神經元o1,上述第三輸出數據(即
連接關係數據)為「021」,上述第二輸出數據為w11,w31和w41。上述第一數據處理單元1012將上述輸入神經元i1、i2、i3和i4中值為0的輸入神經元剔除,得到輸入神經元i1、i3和i4。該第一數據處理單元1012根據上述第三輸出數據「021」確定上述輸入神經元i1、i3和i4均與上述輸出神經元均有連接,故上述數據處理單元1012將上述輸入神經元i1、i3和i4作為第一輸出數據輸出,即輸出1,3,5。
當上述第一輸入數據為權值,上述第二輸入數據為輸入神經元時,上述第三輸出數據為上述輸入神經元的連接關係數據。上述第一數據處理單元1012接收到上述權值w11,w21,w31和w41後,將該權值中絕對值小於上述第一閾值的權值剔除,並根據上述連接關係數據,從上述剔除後的權值中選擇與該上述輸入神經元相關的權值,作為第一輸出數據並輸出。
舉例說明,假設上述第二閾值為0,上述權值w11,w21,w31和w41,其值分別為1,0,3和4,對於輸出神經元o1,上述第三輸出數據(即連接關係數據)為「1011」,上述第二輸出數據為i1,i3和i5。上述第一數據處理單元1012將上述權值w11,w21,w31和w41中值為0的輸入神經元剔除,得到權值w11,w21,w31和w41。該第一數據處理單元1012根據上述第三輸出數據「1011」確定上述輸入神經元i1、i2,i3和i4中的輸入神經元i2的值為0,故上述第一數據處理單元1012將上述輸入神經元1,3和4作為第一輸出數據輸出。
在一種可行的實施例中,第三輸入數據和第四輸入數據分別為至少一個權值和至少一個輸入神經元,上述壓縮映射電路101確定上述至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元的位置,並獲取輸入神
經元的連接關係數據;上述壓縮映射電路101確定上述至少一個權值中絕對值大於上述第二閾值的權值的位置,並獲取權值的連接關係數據。上述壓縮映射電路101根據上述權值的連接關係數據和輸入神經元的連接關係數據得到一個新的連接關係數據,該連接關係數據表示上述至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元與輸出神經元之間的關係和對應的權值的值。壓縮映射電路101根據該新的連接關係數據、上述至少一個輸入神經元和上述至少一個權值獲取壓縮處理後的輸入神經元和壓縮處理後的權值。
進一步地,上述壓縮映射電路101將上述壓縮處理後的輸入神經元和壓縮處理後的權值按照一一對應的格式存儲到存儲電路中。
具體地,上述壓縮映射電路101對上述壓縮處理後的輸入神經元和上述壓縮處理後的權值按照一一對應的格式進行存儲的具體方式是將上述壓縮處理後的輸入神經元中的每個壓縮處理後的輸入神經元和與其對應的壓縮處理後的權值作為一個數據集,並將該數據集存儲到存儲電路中。
對於壓縮映射電路101包括第一稀疏處理單元1011和第一數據處理單元1012的情況,壓縮映射電路101中的稀疏處理單元1011對輸入神經元或者權值進行稀疏化壓縮處理,減小了權值或者輸入神經元的數量,進而減小了運算單元進行運算的次數,提高了運算效率。
具體地,如圖1g所示,上述壓縮映射電路101包括:第二稀疏處理單元1013,用於接收到第三輸入數據後,根據所述第三輸入數據得到第一連接關係數據,並將該第一連接關係數據傳輸至連接關係處理單元1015;
第三稀疏處理單元1014,用於接收到第四輸入數據後,根據所述第四輸入數據得到第二連接關係數據,並將該第二連接關係數據傳輸至所述連接關係處理單元1015;所述連接關係處理單元1015,用於根據所述第一連接關係數據和所述第二連接關係數據,以得到第三連接關係數據,並將該第三連接關係數據傳輸至第二數據處理單元1016;所述第二數據處理單元1016,用於在接收到所述第三輸入數據,所述第四輸入數據和所述第三連接關係數據後,根據所述第三連接關係數據對所述第三輸入數據和所述第四輸入數據進行壓縮處理,以得到第四輸出數據和第五輸出數據;其中,當所述第三輸入數據包括至少一個輸入神經元,第四輸入數據包括至少一個權值時,所述第一連接關係數據為輸入神經元的連接關係數據,所述第二連接關係數據為權值的連接關係數據,所述第四輸出數據為壓縮處理後的輸入神經元,所述第五輸出數據為壓縮處理後的權值;當所述第三輸入數據包括至少一個權值,所述第四輸入數據包括至少一個輸入神經元時,所述第一連接關係數據為權值的連接關係數據,所述第二連接關係數據為輸入神經元的連接關係數據,所述第四輸出數據為壓縮處理後的權值,所述第五輸出數據為壓縮處理後的輸入神經元。
當上述第三輸入數據包括至少一個輸入神經元時,上述第一連接關係數據為用於表示該至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元的位置的字符串;當上述第三輸入數據包括至少一個權值時,上述第
一連接關係數據為用於表示輸入神經元與輸出神經元之間是否有連接的字符串。
當上述第四輸入數據包括至少一個輸入神經元時,上述第二連接關係數據為用於表示該至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元的位置的字符串;當上述第四輸入數據包括至少一個權值時,上述第二連接關係數據為用於表示輸入神經元與輸出神經元之間是否有連接的字符串。
需要說明的是,上述第一連接關係數據、第二連接關係數據和第三連接關係數據均可以步長索引或者直接索引的形式表示,具體可參見上述相關描述。
換句話說,上述連接關係處理單元1015對上述第一連接關係數據和上述第二連接關係數據進行壓縮處理,以得到第三連接關係數據。該第三連接關係數據可以直接索引或者步長索引的形式表示。
具體地,上述當上述第一連接關係數據和上述第二連接關係數據均以直接索引的形式表示時,上述連接關係處理單元1015對上述第一連接關係數據和上述第二連接關係數據進行與操作,以得到第三連接關係數據,該第三連接關係數據是以直接索引的形式表示的。
需要說明的是,表示上述第一連接關係數據和第二連接關係數據的字符串在內存中是按照物理地址高低的順序存儲的,可以是由高到低的順序存儲的,也可以是由低到高的順序存儲的。
當上述第一連接關係數據和上述第二連接關係數據均以步長索引的形式表示,且表示上述第一連接關係數據和第二連接關係數據的字符串是
按照物理地址由低到高的順序存儲時,上述連接關係處理單元1015將上述第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第四連接關係數據;同理,上述連接關係處理單元1015對上述第二連接關係數據的字符串進行同樣的壓縮處理,得到第五連接關係數據。然後上述連接關係處理單元1015從上述第四連接關係數據的字符串和上述第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成一個新的字符串。上述連接關係處理單元1015將上述新的字符串中將每一個元素與其相鄰且值小於該元素值的元素進行相減,以得到一個新的元素。按照該方法,對上述新的字串中的每個元素進行相應的操作,以得到上述第三連接關係數據。
舉例說明,假設以步長索引的形式表示上述第一連接關係數據和上述第二連接關係數據,上述第一連接關係數據的字符串為「01111」,上述第二連接關係數據的字符串為「022」,上述連接關係處理單元1015將上述第一連接關係數據的字符串中的每個元素與其相鄰的前一個元素相加,得到第四連接關係數據「01234」;同理,上述連接關係處理單元1015對上述第二連接關係數據的字符串進行相同的壓縮處理後得到的第五連接關係數據為「024」。上述連接關係處理單元1015從上述第四連接關係數據「01234」和上述第五連接關係數據「024」選組相同的元素,以得到新的字符串「024」。上述連接關係處理單元1015將該新的字符串中的每個元素與其相鄰的前一個元素進行相減,即0,(2-0),(4-2),以得到上述第三連接數據「022」。
當上述第一連接關係數據和上述第二連接關係數據中的任意一個以步長索引的形式表示,另一個以直接索引的形式表示時,上述連接關係處
理單元1015將上述以步長索引表示的連接關係數據轉換成以直接索引的表示形式或者將以直接索引表示的連接關係數據轉換成以步長索引表示的形式。然後上述連接關係處理單元1015按照上述方法進行壓縮處理,以得到上述第三連接關係數據(即上述第五輸出數據)。
可選地,當上述第一連接關係數據和上述第二連接關係數據均以直接索引的形式表示時,上述連接關係處理單元1015將上述第一連接關係數據和上述第二連接關係數據均轉換成以步長索引的形式表示的連接關係數據,然後按照上述方法對上述第一連接關係數據和上述第二連接關係數據進行壓縮處理,以得到上述第三連接關係數據。
具體地,上述第三輸入數據可為輸入神經元或者權值、第四輸入數據可為輸入神經元或者權值,且上述第三輸入數據和第四輸入數據不一致。上述第二數據處理單元1016根據上述第三連接關係數據從上述第三輸入數據(即輸入神經元或者權值)中選取與該第三連接關係數據相關的數據,作為第四輸出數據;上述第二數據處理單元1016根據上述第三連接關係數據從上述第四輸入數據中選取與該第三連接關係數據相關的數據,作為第五輸出數據。
進一步地,上述第二數據處理單元1016將上述壓縮處理後的輸入神經元中的每個壓縮處理後的輸入神經元與其對應的壓縮處理後的權值作為一個數據集,將該數據集存儲出存儲電路中。
舉例說明,假設上述第三輸入數據包括輸入神經元i1,i2,i3和i4,上述第四輸入數據包括權值w11,w21,w31和w41,上述第三連接關係數據以直接索引方式表示,為「1010」,則上述第二數據處理單元1016輸出的第四輸出數據為輸入神經元i1和i3,輸出的第五輸出數據為權值w11和w31。
上述第二數據處理單元1016將輸入神經元i1與權值w11和輸入神經元i3與權值w31分別作為一個數據集,並將該數據集存儲到存儲電路中。
對於壓縮映射電路101包括第二稀疏處理單元1013,第三稀疏處理單元1014、連接關係處理單元1015和第二數據處理單元1016的情況,壓縮映射電路101中的稀疏處理單元對輸入神經元和權值均進行稀疏化壓縮處理,使得輸入神經元和權值的數量進一步減小,進而減小了運算單元的運算量,提高了運算效率。
可選地,所述壓縮映射電路101對所述輸入數據進行壓縮處理之前,所述壓縮映射電路101還用於:對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M為大於或者等於1的整數;判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元刪除;對所述至少一個權值進行分組,以得到N組權值,所述N為大於或者等於1的整數;判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;
當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值刪除。
可選地,上述第三閾值可為0.5,0.2,0.1,0.05,0.025,0.0,0或者其他值。上述第四閾值與上述一組輸入神經元中輸入神經元的個數相關。可選地,該第四閾值=一組輸入神經元中的輸入神經元個數-1或者該第四閾值為其他值。可選地,上述第五閾值可為0.5,0.2,0.1,0.05,0.025,0.01,0或者其他值。其中,上述第六閾值與上述一組權值中的權值個數相關。可選地,該第六閾值=一組權值中的權值個數-1或者該第六閾值為其他值。
需要說明的是,上述第三閾值和上述第五閾值可相同或者不同,上述第四閾值和上述第六閾值可相同或者不同。可選的,存儲電路可用於存儲上述壓縮處理後的輸入神經元、壓縮處理後的權值和相關的運算指令。
在可選實施例中,如圖1h所示的壓縮映射電路在已知輸入數據的連接關係數據的情況下,可利用該輸入數據的連接關係數據對所述輸入數據進行壓縮處理。所述輸入數據包括至少一個輸入神經元或者至少一個權值。具體如圖1h所示,上述壓縮映射電路601包括:輸入數據緩存單元6011,用於緩存第一輸入數據,該第一輸入數據包括至少一個輸入神經元或者至少一個權值。
連接關係緩存單元6012,用於緩存第一輸入數據的連接關係數據,即上述輸入神經元的連接關係數據或者上述權值的連接關係數據。
其中,上述輸入神經元的連接關係數據為用於表示該輸入神經元中絕對值是否小於或者等於第一閾值的字符串,上述權值的連接關係數據為表示該權值絕對值是否小於或者等於上述第一閾值的字符串,或者為表示該權
值對應的輸入神經元和輸出神經元之間是否有連接的字符串。該輸入神經元的連接關係數據和權值的連接關係數據可以直接索引或者步長索引的形式表示。
需要說明的是,上述直接索引和步長索引的描述可參見上述圖1b所示實施例的相關描述。
第四稀疏處理單元6013,用於根據所述第一輸入數據的連接關係數據對所述第一輸入數據進行壓縮處理,以得到壓縮處理後的第一輸入數據,並將該壓縮處理後的第一輸入數據存儲到上述第一輸入緩存單元中605。
其中,當上述第一輸入數據為至少一個輸入神經元時,上述第四稀疏處理單元6013在一個時鐘週期壓縮處理一個輸入神經元和一個連接關係,即在一個時鐘週期從S1個輸入神經元中選擇一個有效的輸入神經元,S1為大於1的整數。
在一種可行的實施例中,上述第四稀疏處理單元6013在一個時鐘週期壓縮處理多個輸入神經元和多個連接關係數據,即一個時鐘週期從S1個輸入神經元中選出有效的S2個輸入數據,上述S2為大於0且小於或者等於該S1的整數。
舉例說明,如圖1i所示,上述輸入神經元為i1,i2,i3和i4,以直接索引的形式表示的連接關係數據為「1011」,並且上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇1個有連接(即有效)的輸入神經元。上述第四稀疏處理單元6013從上述輸入數據緩存單元6011和上述連接關係緩存單元6012中分別獲取上述輸入神經元i1,i2,i3和i4和上述連接關係數據「1011」後,上述第四稀疏處理單元6013根據該連接關係數據「1011」從上述輸入神經元i1,i2,i3和i4選取有連接的輸入神經元i1,i3和i4。由於
上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇1個有連接(即有效)的輸入神經元,該第四稀疏處理單元6013在三個時鐘週期內依次輸出輸入神經元i1,i3和i4,如圖1i所示。上述第四稀疏處理單元6013將上述輸入神經元i1,i3和i4存儲到第一輸入緩存單元中。
再舉例說明,如圖1j所示,輸入神經元為i1,i2,i3和i4,以直接索引的形式表示的連接關係數據有兩組,分別為「1011」和「0101」,上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元中選擇2個有連接(即有效)的輸入神經元。上述第四稀疏處理單元6013根據上述連接關係數據「1011」從上述輸入神經元i1,i2,i3和i4中選擇有連接的輸入神經元i1,i3和i4;根據上述連接關係數據「0101」從上述輸入神經元i1,i2,i3和i4中選擇有連接的輸入神經元i2和i4。由於上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇2個有連接(即有效)的輸入神經元,對於連接關係數據「1011」,該第四稀疏處理單元6013在第一個時鐘週期從選擇輸入神經元i1和i3,並將該輸入神經元i1和i3存儲到上述第一輸入緩存單元606中,在第二個時鐘週期從選擇輸入神經元i4,並將該輸入神經元i4存儲到上述第一輸入緩存單元606中;對於連接關係數據「0101」,該第四稀疏處理單元6013在一個時鐘週期從選擇輸入神經元i2和i4,如圖1j所示。上述第四稀疏處理單元6013將上述輸出神經元i2和i4和存儲到第一輸入緩存單元中。
舉例說明,如圖1k所示,輸入數據為輸入神經元i1,i2,i3和i4,以步長索引的形式表示的連接關係數據為「021」,並且上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇1個有連接(即有效)的輸入神經元。上述第四稀疏處理單元6013從上述輸入數據緩存單元6011和上述
連接關係緩存單元6012中分別獲取上述輸入神經元i1,i2,i3和i4和上述連接關係數據「021」後,上述第四稀疏處理單元6013根據該連接關係數據「1011」從上述輸入神經元i1,i2,i3和i4選取有連接的輸入神經元i1,i3和i4。由於上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇1個有連接(即有效)的輸入神經元,該第四稀疏處理單元6013在三個時鐘週期內依次輸出輸入神經元i1,i3和i4,如圖1k所示。上述第四稀疏處理單元6013將上述輸入神經元i1,i3和i4存儲到第一輸入緩存單元中。
再舉例說明,如圖11所示,輸入數據為輸入神經元i1,i2,i3和i4,以步長索引的形式表示的連接關係數據有兩組,分別為「021」和「22」,上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元中選擇2個有連接(即有效)的輸入神經元。上述第四稀疏處理單元6013根據上述連接關係數據「021」從上述輸入神經元i1,i2,i3和i4中選擇有連接的輸入神經元i1,i3和i4;根據上述連接關係數據「22」從上述輸入神經元i1,i2,i3和i4中選擇有連接的輸入神經元i2和i4。由於上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇2個有連接(即有效)的輸入神經元,對於連接關係數據「021」,該第四稀疏處理單元6013在第一個時鐘週期從選擇輸入神經元i1和i3,並將該輸入神經元i1和i3存儲到上述第一輸入緩存單元606中。在第二個時鐘週期從選擇輸入神經元i4並將該輸入神經元i4存儲到上述第一輸入緩存單元606中;對於連接關係數據「22」,該第四稀疏處理單元6013在一個時鐘週期從選擇輸入神經元i2和i4並輸出,如圖11所示。上述第四稀疏處理單元6013將上述輸入神經元i2和i4存儲到第一輸入緩存單元中。
在一種可行的實施例中,上述輸入數據緩存單元6011用於緩存的第一輸入數據包括至少一個權值,上述連接關係緩存單元6012緩存的數據為上述權值的連接關係數據,且上述至少一個權值的絕對值均大於第一閾值時,上述第四稀疏處理單元6013根據上述權值的連接關係數據,將沒有連接關係的輸入神經元和輸出神經元之間的權值的值置為0,並將該值為0的權值和上述至少一個權值存儲到第二輸入緩存單元中。
舉例說明,權值的形式為wij,表示第i個輸入神經元與第j個輸出神經元之間的權值。假設輸入神經元包括i1,i2,i3和i4,輸出神經元包括o1,上述第一輸入數據(權值)為w11,w31,w41,上述第一輸入數據的連接關係數據(即上述權值的連接關係數據)以直接索引的形式表示,為1011,上述第四稀疏處理單元6013根據上述第二輸入數據確定上述輸入神經元i2與上述輸出神經元o1之間沒有連接,上述第四稀疏處理單元6013將該上述輸入神經元i2與上述輸出神經元o1之間的權值w21的值置為0,並將w11,w21(0),w31,w41存儲到第二輸入緩存單元中。
上述第一輸入緩存單元,用於緩存上述壓縮處理後的輸入神經元。上述第二輸入緩存單元,用於緩存從存儲電路中讀取的壓縮處理的權值。
在一種可行的實施例中,當上述第一輸入數據為至少一個權值時,上述第四稀疏處理單元6013在一個時鐘週期壓縮處理一個權值和一個連接關係,即在一個時鐘週期從S3個權值中選擇一個有效的權值,該S3為大於1的整數。
可選地,上述第四稀疏處理單元6013在一個時鐘週期壓縮處理多個權值和多個連接關係數據,即一個時鐘週期從S3個權值中選出有效的S4個權值,上述S4為大於0且小於或者等於該S3的整數。
上述第一輸入緩存單元,用於緩存上述壓縮處理後的權值。上述第二輸入緩存單元,用於緩存從存儲電路中讀取的壓縮處理的輸入神經元。
可選地,所述壓縮映射電路601對所述第一輸入數據進行壓縮處理之前,所述壓縮映射電路601還用於:對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M為大於或者等於1的整數;判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元刪除;對所述至少一個權值進行分組,以得到N組權值,所述N為大於或者等於1的整數;判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值刪除。
需要說明的是,上述相關描述可參見前述實施例中的相關描述,在此不再敘述。上述第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值可均存儲在存儲電路或者第一輸出緩存單元中;上述第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值中部分閾值存儲在存儲電路、部分閾值存儲在第一輸出緩存單元中。上述第一輸入緩存單元、上述第
二輸入緩存單元和上述輸出緩存單元均可為所述壓縮映射電路或所述主處理電路中的功能單元,也可為其他處理電路共享的功能單元,本申請不做限定。
在一種可選實施例中,所述輸入神經元的連接關係數據和所述權值的連接關係數據是由0或1表示的字符串/矩陣組成,其中0表示所述輸入神經元/所述權值的絕對值小於或等於第一閾值,1表示所述輸入神經元/所述權值的絕對值大於第一閾值,與輸出神經元無關。例如,輸入數據為矩陣S,假設第一閾值為0,則對應的連接關係數據為。本實施例中,連接關係數據(即所述神經元/權值的連接關係數據)也可稱為mask矩陣。
本申請中數據的連接關係數據(具體為權值的連接關係數據或神經元的連接關係數據)的表示方式除了直接索引和步長索引之外,還可為以下幾種情況:列表的列表(List of Lists,LIL)、坐標列表(Coordinate list,COO)、壓縮稀疏行(Compressed Sparse Row,CSR)、壓縮稀疏列(Compressed Sparse Column,CSC)、ELL(ELL Pack)以及混合(Hybird,HYB)等等,本申請不做詳述。
此外,本發明實施例中提到的輸入神經元和輸出神經元並非是指整個神經網絡的輸入層中的神經元和輸出層中的神經元,而是對於神經網絡中任意相鄰的兩層神經元,處於網絡前饋運算下層中的神經元即為輸入神經元,處於網絡前饋運算上層中的神經元即為輸出神經元。以卷積神經網絡為例,假設一個卷積神經網絡有L層,K=1,2,3...L-1,對於第K層和第K+1層來說,第K層被稱為輸入層,該層中的神經元為上述輸入神經元,第K+1層被稱為輸
入層,該層中的神經元為上述輸出神經元,即除了頂層之外,每一層都可以作為輸入層,其下一層為對應的輸出層。
需要在基礎處理電路中完成的運算,可以使用下述方法進行:主處理電路的控制電路可將數據分發給基礎處理電路運算。相應地,基礎處理處理的壓縮映射電路先先對數據進行壓縮處理後再運算,其優點是可以減少數據計算量,基礎處理電路執行數據運算的效率也更高,功耗更低。
如基礎處理電路接收到的數據為稀疏數據,那麼基礎處理電路可以收到數據後由壓縮映射電路對數據進行壓縮處理然後再進行計算,例如,基礎處理電路收到主處理電路傳輸過來的稀疏數據,壓縮映射電路將其進行壓縮處理,然後基礎處理電路的內積運算器電路、向量運算器電路或累加器電路對壓縮處理後的數據進行運算,提高運算效率,降低功耗。
基礎處理電路的使用方法(如圖2a);主處理電路從裝置外部接收待計算的輸入數據;可選地,主處理電路利用本單元的各種運算電路,向量運算電路,內積運算器電路、累加器電路等對數據進行運算處理;主處理電路通過數據輸出介面向基礎處理電路陣列(把所有基礎處理電路的集合稱作基礎處理電路陣列)發送數據(如圖2b所示);此處的發送數據的方式可以是向一部分基礎處理電路直接發送數據,即多次廣播方式;此處發送數據的方式可以向不同的基礎處理電路分別發送不同的數據,即分發方式;
基礎處理電路陣列對數據進行計算;基礎處理電路接收到輸入數據後進行運算;可選的,基礎處理電路可根據該數據的運算指令確定是否啟動所述基礎處理電路中的壓縮映射單元對數據進行壓縮處理,然後對壓縮處理後的數據進行運算。
可選地,基礎處理電路接收到數據後將該數據從本單元的數據輸出介面傳輸出去;(傳輸給其他沒有直接從主處理電路接收到數據的基礎處理電路,可選的,該數據也可為壓縮處理後的數據。)
可選地,基礎處理電路將運算結果從數據輸出介面傳輸出去;(中間計算結果或者最終計算結果)
主處理電路接收到從基礎處理電路陣列返回的輸出數據;可選地,主處理電路對從基礎處理電路陣列接收到的數據繼續進行處理(例如累加或激活操作);主處理電路處理完畢,將處理結果從數據輸出介面傳輸給裝置外部。
使用所述電路裝置完成矩陣乘向量運算;(矩陣乘向量可以是矩陣中的每一行分別與向量進行內積運算,並將這些結果按對應行的順序擺放成一個向量。)
下面描述計算尺寸是M行L列的矩陣S和長度是L的向量B的乘法的運算,如下圖2c所示。
此方法用到所述神經網絡計算裝置的全部或者一部分基礎處理電路,假設用到了k個基礎處理電路;
主處理電路將矩陣S的部分或全部行中的數據發送到k個基礎處理電路中的每個基礎處理電路;在一種可選的方案中,主處理電路的控制電路將矩陣S中某行的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於每次發送一個數,可以為對於某一個基礎處理電路,第1次發送第3行第1個數,第2次發送第3行數據中的第2個數,第3次發送第3行的第3個數......,或者對於每次發送一部分數,第1次發送第3行前兩個數(即第1、2個數),第二次發送第3行第3和第4個數,第三次發送第3行第5和第6個數......;)在一種可選的方案中,主處理電路的控制電路將矩陣S中某幾行的數據每次各發送一個數者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3,4,5行每行的第1個數,第2次發送第3,4,5行每行的第2個數,第3次發送第3,4,5行每行的第3個數......,或者第1次發送第3,4,5行每行前兩個數,第二次發送第3,4,5行每行第3和第4個數,第三次發送第3,4,5行每行第5和第6個數......。)
主處理電路的控制電路將向量B中的數據逐次發送到第0個基礎處理電路;第0個基礎處理電路接收到向量B的數據之後,將該數據發送給與其相連接的下一個基礎處理電路,即基礎處理電路1;具體的,有些基礎處理電路不能直接從主處理電路處獲得計算所需的所有的數據,例如,圖2d中的基礎處理電路1,只有一個數據輸入介面與主處理電路相連,所以只能直接從主處理電路獲得矩陣S的數據,而向量B
的數據就需要依靠基礎處理電路0輸出給基礎處理電路1,同理,基礎處理電路1也要收到數據後也要繼續把向量B的數據輸出給基礎處理電路2。
每一個基礎處理電路對接收到的數據進行運算,該運算包括但不限於:內積運算、乘法運算、加法運算等等;具體的,在接收到數據後,可根據該數據對應的運算指令確定是否啟動壓縮映射電路對數據進行壓縮處理,然後再利用壓縮處理後的數據進行運算。
在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;基礎處理電路計算出結果後,將結果從數據輸出介面傳輸出去(即傳輸給與其連接的其他基礎處理電路);在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;主處理電路接收到各個基礎處理電路內積運算的結果,將該結果處理得到最終結果(該處理可以為累加運算或激活運算等等)。
採用上述計算裝置實現矩陣乘向量方法的實施例:在一種可選方案中,方法所用到的多個基礎處理電路按照如下圖2d或者圖2e所示的方式排列;
如圖2c所示,主處理單元的控制電路將矩陣S的M行數據分成K組,分別由第i個基礎處理電路負責第i組(該組數據中行的集合記為Ai)的運算;可選的,第i個基礎處理電路在負責第i組(該組數據中行的集合記為Ai)的運算之前,可根據數據的運算指令確定是否需要先利用壓縮映射電路對Ai進行壓縮處理,然後再對壓縮處理後的Ai執行運算。
此處對M行數據進行分組的方法是任意不會重複分配的分組方式;在一種可選方案中,採用如下分配方式:將第j行分給第j%K(%為取餘數運算)個基礎處理電路;在一種可選方案中,對於不能平均分組的情況也可以先對一部分行平均分配,對於剩下的行以任意方式分配。
主處理電路的控制電路每次將矩陣S中部分或全部行中的數據依次發送給對應的基礎處理電路;在一種可選方案中,主處理電路的控制電路每次向第i個基礎處理電路發送其負責的第i組數據Mi中的一行數據中的一個或多個數據;在一種可選方案中,主處理電路的控制電路每次向第i個基礎處理電路發送其負責的第i組數據Mi中的部分或全部行中的每行的一個或多個數據;主處理電路的控制電路將向量B中的數據依次向第1個基礎處理電路發送;在一種可選方案中,主處理電路的的控制電路每次可以發送向量B中的一個或多個數據;
第i個基礎處理電路接收到向量B的數據之後發送給與其相連的第i+1個基礎處理電路;每個基礎處理電路接收到來自矩陣S中某一行或者某幾行中的一個或多個數據以及來自向量B的一個或多個數據後,進行運算(包括但不限於乘法或加法);在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路接收到的數據也可以是中間結果,保存在寄存器和或片上緩存上;基礎處理電路將本地的計算結果傳輸給與其相連接的下一個基礎處理電路或者主處理電路;在一種可選方案中,對應於圖2d的結構,只有每列的最後一個基礎處理電路的輸出介面與主處理電路相連接的,這種情況下,只有最後一個基礎處理電路可以直接將本地的計算結果傳輸給主處理電路,其他基礎處理電路的計算結果都要傳遞給自己的下一個基礎處理電路,下一個基礎處理電路傳遞給下下個基礎處理電路直至全部傳輸給最後一個基礎處理電路,最後一個基礎處理電路將本地的計算結果以及接收到的本列的其他基礎處理電路的結果執行累加計算得到中間結果,將中間結果發送至主處理電路;當然還可以為最後一個基礎處理電路可以將本列的其他基礎處理電路的結果以及本地的處理結果直接發送給主處理電路。
在一種可選方案中,對應於圖2e的結構,每一個基礎處理電路都有與主處理電路相連接的輸出介面,這種情況下,每一個基礎處理電路都直接將本地的計算結果傳輸給主處理電路;基礎處理電路接收到其他基礎處理電路傳遞過來的計算結果之後,傳輸給與其相連接的下一個基礎處理電路或者主處理電路。
主處理電路接收到M個內積運算的結果,作為矩陣乘向量的運算結果。
使用所述電路裝置完成矩陣乘矩陣運算;下面描述計算尺寸是M行L列的矩陣S和尺寸是L行N列的矩陣P的乘法的運算,(矩陣S中的每一行與矩陣P的每一列長度相同,如圖2f所示)
本方法使用所述裝置如圖1b所示的實施例進行說明;主處理電路的控制電路將矩陣S的部分或全部行中的數據發送到通過橫向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中最上方的灰色填充的竪向數據通路);在一種可選方案中,主處理電路的控制電路將矩陣S中某行的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3行第1個數,第2次發送第3行數據中的第2個數,第3次發送第3行的第3個數......,或者第1次發送第3行前兩個數,第二次發送第3行第3和第4個數,第三次發送第3行第5和第6個數......;)在一種可選方案中,主處理電路的控制電路將矩陣S中某幾行的數據每次各發送一個數者一部分數給某個基礎處理電路;(例如,對於某一
個基礎處理電路,第1次發送第3,4,5行每行的第1個數,第2次發送第3,4,5行每行的第2個數,第3次發送第3,4,5行每行的第3個數......,或者第1次發送第3,4,5行每行前兩個數,第二次發送第3,4,5行每行第3和第4個數,第三次發送第3,4,5行每行第5和第6個數......;)主處理電路的控制電路將矩陣P中的部分或全部列中的數據發送到通過竪向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中基礎處理電路陣列左側的灰色填充的橫向數據通路);在一種可選方案中,主處理電路的控制電路將矩陣P中某列的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3列第1個數,第2次發送第3列數據中的第2個數,第3次發送第3列的第3個數......,或者第1次發送第3列前兩個數,第二次發送第3列第3和第4個數,第三次發送第3列第5和第6個數......;)在一種可選方案中,主處理電路的控制電路將矩陣P中某幾列的數據每次各發送一個數者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3,4,5列每列的第1個數,第2次發送第3,4,5列每列的第2個數,第3次發送第3,4,5列每列的第3個數......,或者第1次發送第3,4,5列每列前兩個數,第二次發送第3,4,5列每列第3和第4個數,第三次發送第3,4,5列每列第5和第6個數......;)基礎處理電路接收到矩陣S的數據之後,將該數據通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的橫向的數據通路);基礎處理電路接收到矩陣P的
數據後,將該數據通過其竪向的數據輸出介面傳輸給與其相連接的下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的竪向的數據通路);可選的,基礎處理電路在接收到數據(具體可為矩陣S或矩陣P的數據)後,可根據數據的運算控制確定啟動壓縮映射電路對數據進行壓縮處理;進一步地,可將壓縮處理後的數據通過其橫向或竪向的數據輸出介面傳輸給其相連接下一個基礎處理電路;例如,基礎處理電路在接收到輸入矩陣S或矩陣P後,啟用壓縮映射電路將輸入矩陣S和矩陣P中數據為指定數值(如0)和/或數據小於預設閾值(如0.1)所對應的數據剔除,具體實現時可根據矩陣S和矩陣P各自對應的mask矩陣來剔除,例如剔除mask矩陣為0所對應的相同位置在矩陣S/P中的數據,具體可參見前述關於數據壓縮處理實施例中的相關闡述,這裡不再贅述。應理解的,這裡的矩陣S和矩陣P也可對應理解為前述實施例中的輸入神經元(也可稱為輸入神經元矩陣)和權值(也可稱為權值矩陣)等。
每一個基礎處理電路對接收到的數據進行運算,可選的,該接收到的數據可為壓縮處理後的數據。
在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;
在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果(例如,圖1b中,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果)。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;向著能夠直接向主處理電路輸出的方向輸出結果(例如,圖1b中,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果);主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
「矩陣乘矩陣」方法的實施例:方法用到按照如圖1b所示方式排列的基礎處理電路陣列,假設有h行,w列;主處理電路的控制電路將矩陣S的h行數據分成h組,分別由第i個基礎處理電路負責第i組(該組數據中行的集合記為Hi)的運算;此處對h行數據進行分組的方法是任意不會重複分配的分組方式;
在一種可選方案中,採用如下分配方式:主處理電路的控制電路將第j行分給第j%h個基礎處理電路;在一種可選方案中,對於不能平均分組的情況也可以先對一部分行平均分配,對於剩下的行以任意方式分配。
主處理電路的控制電路將矩陣P的W列數據分成w組,分別由第i個基礎處理電路負責第i組(該組數據中行的集合記為Wi)的運算;此處對W列數據進行分組的方法是任意不會重複分配的分組方式;在一種可選方案中,採用如下分配方式:主處理電路的控制電路將第j行分給第j%w個基礎處理電路;在一種可選方案中,對於不能平均分組的情況也可以先對一部分列平均分配,對於剩下的列以任意方式分配。
主處理電路的控制電路將矩陣S的部分或全部行中的數據發送到基礎處理電路陣列中每行的第一個基礎處理電路;在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i行的第一個基礎處理電路發送其負責的第i組數據Hi中的一行數據中的一個或多個數據;在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i行的第一個基礎處理電路發送其負責的第i組數據Hi中的部分或全部行中的每行的一個或多個數據;主處理電路的控制電路將矩陣P的部分或全部列中的數據發送到基礎處理電路陣列中每列的第一個基礎處理電路;
在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i列的第一個基礎處理電路發送其負責的第i組數據Wi中的一列數據中的一個或多個數據;在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i列的第一個基礎處理電路發送其負責的第i組數據Ni中的部分或全部列中的每列的一個或多個數據;基礎處理電路接收到矩陣S的數據之後,將該數據通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的橫向的數據通路);基礎處理電路接收到矩陣P的數據後,將該數據通過其竪向的數據輸出介面傳輸給與其相連接的下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的竪向的數據通路);可選的,基礎處理電路在接收到數據(具體可為矩陣S或矩陣P的數據)後,可根據數據的運算控制確定啟動壓縮映射電路對數據進行壓縮處理;進一步地,可將壓縮處理後的數據通過其橫向或竪向的數據輸出介面傳輸給其相連接下一個基礎處理電路;關於數據的壓縮處理可參見前述實施例中的相關闡述,這裡不再贅述。
每一個基礎處理電路對接收到的數據進行運算,可選的,該數據可為壓縮處理後的數據;在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;
基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果)。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;向著能夠直接向主處理電路輸出的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果);主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
以上描述中使用的「橫向」,「竪向」等詞語只是為了表述圖1b所示的例子,實際使用只需要區分出每個單元的「橫向」「竪向」介面代表兩個不同的介面即可。
使用所述電路裝置完成全連接運算:
如果全連接層的輸入數據是一個向量(即神經網絡的輸入是單個樣本的情況),則以全連接層的權值矩陣作為矩陣S,輸入向量作為向量B,按照所述裝置的使用矩陣乘以向量方法執行運算;如果全連接層的輸入數據是一個矩陣(即神經網絡的輸入是多個樣本的情況),則以全連接層的權值矩陣作為矩陣S,輸入向量作為矩陣P,或者以全連接層的權值矩陣作為矩陣P,輸入向量作為矩陣S,按照所述裝置的矩陣乘以矩陣執行運算;使用所述電路裝置完成卷積運算:下面描述卷積運算,下面的圖中一個方塊表示一個數據,輸入數據用圖3a表示(N個樣本,每個樣本有C個通道,每個通道的特徵圖的高為H,寬為W),權值也即卷積核用圖3b表示(有M個卷積核,每個卷積核有C個通道,高和寬分別為KH和KW)。對於輸入數據的N個樣本,卷積運算的規則都是一樣的,下面解釋在一個樣本上進行卷積運算的過程,在一個樣本上,M個卷積核中的每一個都要進行同樣的運算,每個卷積核運算得到一張平面特徵圖,M個卷積核最終計算得到M個平面特徵圖,(對一個樣本,卷積的輸出是M個特徵圖),對於一個卷積核,要在一個樣本的每一個平面位置進行內積運算,然後沿著H和W方向進行滑動,例如,圖3c表示一個卷積核在輸入數據的一個樣本中右下角的位置進行內積運算的對應圖;圖3d表示卷積的位置向左滑動一格和圖3e表示卷積的位置向上滑動一格。
本方法使用所述裝置如圖1b所示的實施例進行說明;
主處理電路的控制電路將權值的部分或全部卷積核中的數據發送到通過橫向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中最上方的灰色填充的竪向數據通路);在一種可選方案中,主處理電路的控制電路將權值中某個卷積核的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3行第1個數,第2次發送第3行數據中的第2個數,第3次發送第3行的第3個數......,或者第1次發送第3行前兩個數,第二次發送第3行第3和第4個數,第三次發送第3行第5和第6個數......;)在一種可選方案中另一種情況是,主處理電路的控制電路將權值中某幾個卷積核的數據每次各發送一個數者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3,4,5行每行的第1個數,第2次發送第3,4,5行每行的第2個數,第3次發送第3,4,5行每行的第3個數......,或者第1次發送第3,4,5行每行前兩個數,第二次發送第3,4,5行每行第3和第4個數,第三次發送第3,4,5行每行第5和第6個數......;)主處理電路的控制電路把輸入數據按照卷積的位置進行劃分,主處理電路的控制電路將輸入數據中的部分或全部卷積位置中的數據發送到通過竪向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中基礎處理電路陣列左側的灰色填充的橫向數據通路);在一種可選方案中,主處理電路的控制電路將輸入數據中某個卷積位置的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3列第1個數,第2次發送第3列數據中的第2個數,第3次發送第3列的第3個數......,或者第1次發送第3列前兩
個數,第二次發送第3列第3和第4個數,第三次發送第3列第5和第6個數......;)在一種可選方案中另一種情況是,主處理電路的控制電路將輸入數據中某幾個卷積位置的數據每次各發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3,4,5列每列的第1個數,第2次發送第3,4,5列每列的第2個數,第3次發送第3,4,5列每列的第3個數......,或者第1次發送第3,4,5列每列前兩個數,第二次發送第3,4,5列每列第3和第4個數,第三次發送第3,4,5列每列第5和第6個數......;)基礎處理電路接收到權值的數據之後,將該數據通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的橫向的數據通路);基礎處理電路接收到輸入數據的數據後,將該數據通過其竪向的數據輸出介面傳輸給與其相連接的下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的竪向的數據通路);可選的,基礎處理電路在接收到數據(具體可為權值的部分或者全部卷積核中的數據)後,可根據數據的運算控制確定啟動壓縮映射電路對數據進行壓縮處理;進一步地,可將壓縮處理後的數據通過其橫向或竪向的數據輸出介面傳輸給其相連接下一個基礎處理電路;具體可參見前述實施例中的相關闡述。
每一個基礎處理電路對接收到的數據進行運算,可選的,該數據可為壓縮處理後的數據;在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和/或片上緩存上;
在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和/或片上緩存上;基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果(例如,圖1b中,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果)。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;向著能夠直接向主處理電路輸出的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果);主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
在一個實施例中,本發明公開了一種神經網絡運算裝置,其包括用於執行如上所述方法實施例中提供的所有或部分實施方式所對應的功能單元。
在一個實施例裏,本發明公開了一種芯片,用於執行如上所述方法實施例中提供的所有或部分實施方式。
在一個實施例裏,本發明公開了一種電子裝置,其包括用於執行如上所述方法實施例中的所有或部分實施方式的功能單元。
電子裝置包括數據處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、伺服器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備、交通工具、家用電器、和/或醫療設備。
所述交通工具包括飛機、輪船和/或車輛;所述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機;所述醫療設備包括核磁共振儀、B型超音波掃描儀和/或心電圖儀。
以上所述的具體實施例,對本披露的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本披露的具體實施例而已,並不用於限制本披露,凡在本披露的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本披露的保護範圍之內。
Claims (13)
- 一種集成電路芯片裝置,其中,該集成電路芯片裝置包括:一主處理電路以及多個基礎處理電路;該多個基礎處理電路呈陣列分布;每個基礎處理電路與相鄰的其他基礎處理電路連接,該主處理電路連接該多個基礎處理電路中的k個基礎處理電路,該k個基礎處理電路為:第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路;該多個基礎處理電路包括:一壓縮映射電路,用於執行神經網絡運算中的各個數據的壓縮處理;該主處理電路,用於執行神經網絡運算中的各個連續的運算以及和該k個基礎處理電路傳輸數據;該k個基礎處理電路,用於在該主處理電路以及該多個基礎處理電路之間的數據轉發;該多個基礎處理電路,用於依據該傳輸數據的運算控制確定是否啟動該壓縮映射電路對該傳輸數據進行壓縮處理,依據壓縮處理後的該傳輸數據以並行方式執行神經網絡中的運算,並將運算結果通過該k個基礎處理電路傳輸給該主處理電路;該主處理電路,用於獲取一待計算的數據塊以及一運算指令,依據該運算指令對該待計算的數據塊劃分成一分發數據塊以及一廣播數據塊;對該分發數據塊進行拆分處理得到多個基本數據塊,將該多個基本數據塊分發至該k個基礎處理電路,將該廣播數據塊廣播至該k個基礎處理電路; 該多個基礎處理電路,用於依據接收到的該基礎數據塊、該廣播數據塊以及該運算指令啟動該壓縮映射電路將該基礎數據塊和該廣播數據塊進行壓縮處理,對壓縮處理後的該基本數據塊與壓縮處理後的該廣播數據塊執行內積運算得到一運算結果,將該運算結果通過該k個基礎處理電路傳輸給該主處理電路;該主處理電路,用於對該運算結果處理得到該待計算的數據塊以及該運算指令的指令結果;其中,該分發數據塊以及該廣播數據塊為至少一個輸入神經元或者,至少一個權值;其中,該壓縮映射電路包括一第二稀疏處理單元、一第三稀疏處理單元以及一連接關係處理單元;該第二稀疏處理單元,用於接收到一第三輸入數據後,根據該第三輸入數據得到一第一連接關係數據,並將該第一連接關係數據傳輸至該連接關係處理單元;該第三稀疏處理單元,用於接收到一第四輸入數據後,根據該第四輸入數據得到一第二連接關係數據,並將該第二連接關係數據傳輸至該連接關係處理單元;該連接關係處理單元,用於根據該第一連接關係數據和該第二連接關係數據,以得到一第三連接關係數據,並將該第三連接關係數據傳輸至一第二數據處理單元;該第二數據處理單元,用於在接收到該第三輸入數據,該第四輸入數據和該第三連接關係數據後,根據該第三連接關係數據對該第三輸入數據和該第四輸入數據進行壓縮處理,以得到一第四輸出數據和一第五輸出數據; 其中,當該第三輸入數據包括至少一個輸入神經元,該第四輸入數據包括至少一個權值時,該第一連接關係數據為輸入神經元的連接關係數據,該第二連接關係數據為權值的連接關係數據,該第四輸出數據為處理後的輸入神經元,該第五輸出數據為處理後的權值;當該第三輸入數據包括至少一個權值,該第四輸入數據包括至少一個輸入神經元時,該第一連接關係數據為權值的連接關係數據,該第二連接關係數據為輸入神經元的連接關係數據,該第四輸出數據為處理後的權值,該第五輸出數據為處理後的輸入神經元。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中,該神經元的連接關係數據以及該權值的連接關係數據為由0和1組成的字符串或矩陣組成,且與輸出神經元無關;或者,該輸入神經元的連接關係數據和該權值的連接關係數據均以直接索引或者步長索引的形式表示;其中,當該輸入神經元的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示該輸入神經元的絕對值小於或者等於一第一閾值,1表示該輸入神經元的絕對值大於該第一閾值;當該輸入神經元的連接關係數據以步長索引形式表示時,該連接關係數據為絕對值大於該第一閾值的輸入神經元與上一個絕對值大於該第一閾值的輸入神經元之間的距離值組成的字符串;當該權值的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示該權值的絕對值小於或者等於一第二閾值,即該權值對應的輸入神經元與輸出神經元之間沒有連接,1表示該權值的絕對值大於該第二閾值,即該權值對應的輸入神經元與輸出神經元之間有連接;以直接索引形 式表示權值的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示該權值的連接關係數據;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示該權值的連接關係數據;當該權值的連接關係數據以步長索引的形式表示時,該連接關係數據為與輸出神經元有連接的輸入神經元與上一個與該輸出神經元有連接的輸入神經元之間的距離值組成的字符串。
- 根據申請專利範圍第2項的集成電路芯片裝置,其中,當該第一連接關係數據和該第二連接關係數據均以步長索引的形式表示,且表示該第一連接關係數據和該第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,該連接關係處理單元具體用於:將該第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成一第四連接關係數據;同理,對該第二連接關係數據的字符串進行同樣的處理,得到一第五連接關係數據;從該第四連接關係數據的字符串和該第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;將該新的字符串中每一個元素與其相鄰的且值小於該元素值的元素進行相減,得到的元素組成該第三連接關係數據。
- 根據申請專利範圍第2項的集成電路芯片裝置,其中,當該第一連接關係數據和該第二連接關係數據均以直接索引的形式表示時,該連接關係處理單元具體用於: 對該第一連接關係數據和該第二連接關係數據進行與操作,以得到該第三連接關係數據。
- 根據申請專利範圍第2項的集成電路芯片裝置,其中,當該第一連接關係數據與該第二連接關係數據中任意一個以步長索引的形式表示,另一個以直接索引的形式表示時,該連接關係處理單元具體用於:若該第一連接關係數據是以步長索引的形式表示,將該第一連接關係數據轉換成以直接索引的形式表示的連接關係數據;若該第二連接關係數據是以步長索引的形式表示,將該第二連接關係數據轉換成以直接索引的形式表示的連接關係數據;對該第一連接關係數據和該第二連接關係數據進行與操作,以得到該第三連接關係數據。
- 根據申請專利範圍第2項的集成電路芯片裝置,其中,當該第一連接關係數據與該第二連接關係數據中任意一個以步長索引的形式表示,另一個以直接索引的形式表示,且表示該第一連接關係數據和該第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,該連接關係處理單元還具體用於:若該第一連接關係數據是以步長索引的形式表示,將該第二連接關係數據轉換成以步長索引的形式表示的連接關係數據;若該第二連接關係數據是以步長索引的形式表示,將該第一連接關係數據轉換成以步長索引的形式表示的連接關係數據;將該第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成該第四連接關係數 據;同理,對該第二連接關係數據的字符串進行同樣的處理,得到該第五連接關係數據;從該第四連接關係數據的字符串和該第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;將該新的字符串中每一個元素與其相鄰的且值小於該元素值的元素進行相減,得到的元素組成該第三連接關係數據。
- 根據申請專利範圍第1-6項中任一項的集成電路芯片裝置,其中,啟動該壓縮映射電路將該基礎數據塊和該廣播數據塊進行壓縮處理之前,還包括:該多個基礎處理電路,還用於通過該壓縮映射電路對至少一個輸入神經元進行分組,以得到M組輸入神經元,該M為大於或者等於1的整數;判斷該M組輸入神經元的每一組輸入神經元是否滿足一第一預設條件,該第一預設條件包括一組輸入神經元中絕對值小於或者等於一第三閾值的輸入神經元的個數小於或者等於一第四閾值;當該M組輸入神經元任意一組輸入神經元不滿足該第一預設條件時,將該組輸入神經元刪除;對該至少一個權值進行分組,以得到N組權值,該N為大於或者等於1的整數;判斷該N組權值的每一組權值是否滿足一第二預設條件,該第二預設條件包括一組權值中絕對值小於或者等於一第五閾值的權值的個數小於或者等於一第六閾值;當該N組權值任意一組權值不滿足該第二預設條件時,將該組權值刪除。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中,該主處理電路,具體用於將該廣播數據塊通過一次廣播至該k個基礎處理電路;或者, 該主處理電路,具體用於將該廣播數據塊分成多個部分廣播數據塊,將該多個部分廣播數據塊通過多次廣播至該k個基礎處理電路。
- 根據申請專利範圍第8項的集成電路芯片裝置,其中,該多個基礎處理電路,具體用於通過該壓縮映射電路將該部分廣播數據塊與該基本數據塊進行壓縮處理後執行一次內積處理後得到一內積處理結果,將該內積處理結果累加得到部分運算結果,將該部分運算結果通過該k個基礎處理電路發送至該主處理電路。
- 根據申請專利範圍第9項的集成電路芯片裝置,其中,該多個基礎處理電路,具體用於啟動該壓縮映射電路對該部分廣播數據塊與該基本數據塊進行壓縮處理後,復用n次該部分廣播數據塊執行該部分廣播數據塊與該n個基本數據塊內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,並將該n個部分運算結果通過該k個基礎處理電路發送至該主處理電路,該n為大於等於2的整數。
- 一種芯片,其中,該芯片集成如申請專利範圍第1-10項任意一項的裝置。
- 一種智能設備,其中,該智能設備包括如申請專利範圍第11項的芯片。
- 一種神經網絡的運算方法,其中,該方法應用在集成電路芯片裝置內,該集成電路芯片裝置包括:如申請專利範圍第1-10項任意一項的集成電路芯片裝置,該集成電路芯片裝置用於執行神經網絡的運算; 其中,該神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏置運算、全連接運算、通用矩陣乘GEMM運算、矩陣向量操作GEMV運算、激活運算中的一種或任意組合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711499265.0 | 2017-12-30 | ||
CN201711499265.0A CN109993289B (zh) | 2017-12-30 | 2017-12-30 | 集成电路芯片装置及相关产品 |
??201711499265.0 | 2017-12-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201931221A TW201931221A (zh) | 2019-08-01 |
TWI768168B true TWI768168B (zh) | 2022-06-21 |
Family
ID=67110897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107147415A TWI768168B (zh) | 2017-12-30 | 2018-12-27 | 集成電路芯片裝置及相關產品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11734548B2 (zh) |
CN (2) | CN109993289B (zh) |
TW (1) | TWI768168B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201541372A (zh) * | 2014-03-24 | 2015-11-01 | Qualcomm Inc | 使用尖峰發放神經元的人工神經網路和感知器學習 |
TW201627923A (zh) * | 2015-01-22 | 2016-08-01 | 高通公司 | 模型壓縮和微調 |
CN107239825A (zh) * | 2016-08-22 | 2017-10-10 | 北京深鉴智能科技有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
US20170364733A1 (en) * | 2015-08-26 | 2017-12-21 | Digitalglobe, Inc. | System for simplified generation of systems for broad area geospatial object detection |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5041916A (en) * | 1989-02-07 | 1991-08-20 | Matsushita Electric Industrial Co., Ltd. | Color image data compression and recovery apparatus based on neural networks |
JPH0652132A (ja) * | 1992-07-28 | 1994-02-25 | Mitsubishi Electric Corp | 並列演算半導体集積回路装置およびそれを用いたシステム |
US8503539B2 (en) * | 2010-02-26 | 2013-08-06 | Bao Tran | High definition personal computer (PC) cam |
US9015092B2 (en) * | 2012-06-04 | 2015-04-21 | Brain Corporation | Dynamically reconfigurable stochastic learning apparatus and methods |
US10275479B2 (en) * | 2014-02-27 | 2019-04-30 | Sas Institute Inc. | Sparse matrix storage in a database |
JP6324155B2 (ja) * | 2014-03-27 | 2018-05-16 | キヤノン株式会社 | 画像処理装置、画像処理方法、及びプログラム |
CN106991477B (zh) * | 2016-01-20 | 2020-08-14 | 中科寒武纪科技股份有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN105512723B (zh) | 2016-01-20 | 2018-02-16 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
WO2017136070A1 (en) | 2016-02-03 | 2017-08-10 | Google Inc. | Compressed recurrent neural network models |
CN110188870B (zh) * | 2016-04-27 | 2021-10-12 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN107315571B (zh) * | 2016-04-27 | 2020-07-31 | 中科寒武纪科技股份有限公司 | 一种用于执行全连接层神经网络正向运算的装置和方法 |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算系统和电子设备 |
US10621486B2 (en) * | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
CN107229967B (zh) * | 2016-08-22 | 2021-06-15 | 赛灵思公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN107239823A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种用于实现稀疏神经网络的装置和方法 |
CN106447034B (zh) * | 2016-10-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN107220706A (zh) | 2016-12-29 | 2017-09-29 | 恩泊泰(天津)科技有限公司 | 基于参数压缩和结构压缩的车载深度神经网络优化方法 |
CN107368885A (zh) | 2017-07-13 | 2017-11-21 | 北京智芯原动科技有限公司 | 基于多粒度剪枝的网络模型压缩方法及装置 |
CN107506722A (zh) | 2017-08-18 | 2017-12-22 | 中国地质大学(武汉) | 一种基于深度稀疏卷积神经网络人脸情感识别方法 |
-
2017
- 2017-12-30 CN CN201711499265.0A patent/CN109993289B/zh active Active
- 2017-12-30 CN CN202111084945.2A patent/CN113807510B/zh active Active
-
2018
- 2018-12-27 TW TW107147415A patent/TWI768168B/zh active
-
2019
- 2019-11-27 US US16/698,108 patent/US11734548B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201541372A (zh) * | 2014-03-24 | 2015-11-01 | Qualcomm Inc | 使用尖峰發放神經元的人工神經網路和感知器學習 |
TW201627923A (zh) * | 2015-01-22 | 2016-08-01 | 高通公司 | 模型壓縮和微調 |
US20170364733A1 (en) * | 2015-08-26 | 2017-12-21 | Digitalglobe, Inc. | System for simplified generation of systems for broad area geospatial object detection |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN107239825A (zh) * | 2016-08-22 | 2017-10-10 | 北京深鉴智能科技有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109993289A (zh) | 2019-07-09 |
CN109993289B (zh) | 2021-09-21 |
TW201931221A (zh) | 2019-08-01 |
US20200097805A1 (en) | 2020-03-26 |
CN113807510B (zh) | 2024-05-10 |
CN113807510A (zh) | 2021-12-17 |
US11734548B2 (en) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110197270B (zh) | 集成电路芯片装置及相关产品 | |
TWI768167B (zh) | 集成電路芯片裝置及相關產品 | |
CN110909872B (zh) | 集成电路芯片装置及相关产品 | |
CN110909870A (zh) | 训练装置及方法 | |
US11651202B2 (en) | Integrated circuit chip device and related product | |
US11710031B2 (en) | Parallel processing circuits for neural networks | |
TWI787430B (zh) | 積體電路晶片裝置、晶片、電子設備、及神經網絡的運算方法 | |
TWI768168B (zh) | 集成電路芯片裝置及相關產品 | |
WO2019129302A1 (zh) | 集成电路芯片装置及相关产品 | |
CN110197274B (zh) | 集成电路芯片装置及相关产品 | |
CN111767998B (zh) | 集成电路芯片装置及相关产品 | |
TWI786255B (zh) | 集成電路晶片裝置、晶片、智能設備、及神經網絡的運算方法 | |
CN110197275B (zh) | 集成电路芯片装置及相关产品 | |
CN110197265B (zh) | 集成电路芯片装置及相关产品 | |
CN111767997B (zh) | 集成电路芯片装置及相关产品 | |
CN110197271A (zh) | 集成电路芯片装置及相关产品 | |
CN110197266B (zh) | 集成电路芯片装置及相关产品 |