TWI771539B - 神經網絡運算設備和方法 - Google Patents
神經網絡運算設備和方法 Download PDFInfo
- Publication number
- TWI771539B TWI771539B TW107144031A TW107144031A TWI771539B TW I771539 B TWI771539 B TW I771539B TW 107144031 A TW107144031 A TW 107144031A TW 107144031 A TW107144031 A TW 107144031A TW I771539 B TWI771539 B TW I771539B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- connection relationship
- input
- relationship data
- neural network
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
-
- 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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/0495—Quantised networks; Sparse networks; Compressed 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
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Machine Translation (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Image Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Control Of Electric Motors In General (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Electrotherapy Devices (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Devices For Executing Special Programs (AREA)
- Image Analysis (AREA)
Abstract
本發明公開了一種神經網絡處理模塊,其映射單元接收到輸入神經元和權值後,對該輸入神經元和權值進行處理,以得到處理後的輸入神經元和處理後的權值;神經網絡處理模塊的運算單元對處理後的輸入神經元和處理後的權值進行人工神經網絡運算。採用本發明實施例可減少裝置的額外開銷,並減小訪問量,提高了神經網絡運算效率。
Description
本發明涉及神經網絡領域,尤其涉及一種神經網絡運算設備和方法。
人工神經網絡(Artificial Neural Networks, ANNs)簡稱為神經網絡(Neural Networks, NNs)。它是一種模仿動物神經網絡行為特徵,進行分布式並行信息處理的算法數學模型。這種網絡依靠系統的複雜程度,通過調整內部大量節點之間的相互連接關係,從而達到處理信息的目的。
神經網絡是一個高計算量和高訪存的算法,權值越多,計算量和訪存量。都會增大。為了減小計算量和權值數量,從而降低訪存量,因此提出了稀疏神經網絡。稀疏神經網絡的定義為:在神經網絡中,值為0的權值的數目很多,並且值為非0的權值分布沒有規律,則稱該神經網絡為稀疏神經網絡。定義權值為0的元素數量與神經網絡所有權值元素數量的比值為神經網絡的稀疏度,如圖1a所示。
現有技術中,GPU在執行圖形圖像運算以及科學計算時會涉及稀疏神經網絡的計算,但是由於GPU是專門用來執行圖形圖像運算以及科學計算的設備,沒有對稀疏的卷積神經網絡運算的專門支持,仍然需要大量的前端譯碼工作才能執行稀疏的人工神經網絡運算,帶來了大量的額外開銷。另外GPU只有較小的片上緩存,多層人工神經網絡的模型數據(權值)需要反復從片外搬運,片外帶寬成為了主要性能瓶頸,同時帶來了巨大的功耗開銷。
本發明實施例提供一種神經網絡運算設備及方法,通過對神經網絡數據進行處理,減小了在進行人工神經網絡運算之前譯碼的工作量,進而減小了額外的開銷,並且提高了運算速率。
第一方面,本發明實施例提供了一種神經網絡運算模塊,包括:
存儲單元,用於存儲輸入數據、神經網絡指令和運算結果,所述輸入數據包括至少一個輸入神經元和至少一個權值;
直接存儲訪問單元,用於在所述存儲單元與指令緩存單元、映射單元和輸出緩存單元進行數據的讀寫;
映射單元,用於通過所述直接存儲訪問單元獲取所述輸入數據後,對所述輸入數據進行處理,以得到處理後的輸入數據,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值,並將所述處理後的輸入神經元和所述處理後的權值存儲到第一輸入緩存單元和第二輸入緩存單元中;
所述第一輸入緩存單元,用於緩存第一緩存數據,所述第一緩存數據為所述處理後的輸入神經元或處理後的權值;
所述第二輸入緩存單元,用於緩存第二緩存數據,所述第二緩存數據為所述處理後的輸入神經元或處理後的權值,且所述第二緩存數據與所述第一緩存數據不一致;
所述指令緩存單元,用於緩存所述直接存儲訪問單元讀取神經網絡指令;
指令控制單元,用於從所述指令緩存單元中獲取所述神經網絡指令,並將所述神經網絡指令譯碼成運算單元執行的微指令;
所述運算單元,用於從所述第一輸入緩存單元和所述第二輸入緩存單元中獲取所述處理後的輸入神經元和所述處理後的權值後,根據所述微指令對所述處理後的輸入神經元和所述處理後的權值進行人工神經網絡運算,以得到所述運算結果;
所述輸出緩存單元,用於緩存所述運算結果。
第二方面,本發明實施例提供了一種神經網絡運算方法,包括:
對輸入數據進行處理,以得到處理後的輸入數據;
獲取神經運算指令,將所述神經運算指令譯碼成微指令;
根據所述微指令對所述處理後的輸入數據進行人工神經網絡運算,以得到運算結果。
第三方面,本發明實施例提供了一種神經網絡運算裝置,該神經網絡運算裝置包括一個或者多個第一方面所述的神經網絡運算模塊。該神經網絡運算裝置用於從其他處理裝置中獲取待運算數據和控制信息,並執行指定的神經網絡運算,將執行結果通過I/O介面傳遞給其他處理裝置;
當所述神經網絡運算裝置包含多個所述神經網絡運算模塊時,所述多個所述神經網絡運算模塊間可以通過特定的結構進行連接並傳輸數據;
其中,多個所述神經網絡運算模塊通過PCIE總線進行互聯並傳輸數據,以支持更大規模的神經網絡的運算;多個所述神經網絡運算模塊共享同一控制系統或擁有各自的控制系統;多個所述神經網絡運算模塊共享內存或者擁有各自的內存;多個所述神經網絡運算模塊的互聯方式是任意互聯拓撲。
第四方面,本發明實施例提供了一種組合處理裝置,該組合處理裝置包括如第五方面所述的神經網絡處理裝置、通用互聯介面,和其他處理裝置。該神經網絡運算裝置與上述其他處理裝置進行交互,共同完成用戶指定的操作。
第五方面,本發明實施例提供了一種神經網絡芯片,該神經網絡芯片包括上述第一方面所述的神經網絡運算模塊、上述第三方面所述的神經網絡運算裝置或者上述第四方面所述的組合處理裝置。
第六方面,本發明實施例提供了一種神經網絡芯片封裝結構,該神經網絡芯片封裝結構包括上述第五方面所述的神經網絡芯片;
第七方面,本發明實施例提供了一種板卡,該板卡包括上述第六方面所述的神經網絡芯片封裝結構。
第八方面,本發明實施例提供了一種電子裝置,該電子裝置包括上述第五方面所述的神經網絡芯片或者上述第七方面所述的板卡。
可以看出,在本發明實施例的方案中,映射單元對輸入神經元和權值進行處理,以得到處理後的輸入神經元和處理後的權值,運算單元根據指令控制單元對神經網絡指令進行譯碼得到的微指令對處理後的輸入神經元和處理後的權值進行人工神經網絡運算。與現有技術相比,採用本發明實施例減小了在進行人工神經網絡運算之前譯碼的工作量,進而減小了額外的開銷,並且提高了運算速率。
本發明的這些方面或其他方面在以下實施例的描述中會更加簡明易懂。
以下分別進行詳細說明。
本發明的說明書和申請專利範圍及所述圖式中的術語「第一」、「第二」、「第三」和「第四」等是用於區別不同對象,而不是用於描述特定順序。此外,術語「包括」和「具有」以及它們任何變形,意圖在於覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統、產品或設備沒有限定於已列出的步驟或單元,而是可選地還包括沒有列出的步驟或單元,或可選地還包括對於這些過程、方法、產品或設備固有的其它步驟或單元。
在本文中提及「實施例」意味著,結合實施例描述的特定特徵、結構或特性可以包含在本發明的至少一個實施例中。在說明書中的各個位置出現該短語並不一定均是指相同的實施例,也不是與其它實施例互斥的獨立的或備選的實施例。本領域技術人員顯式地和隱式地理解的是,本文所描述的實施例可以與其它實施例相結合。
參見圖1b,圖1b為本發明實施例提供的另一種神經網絡運算模塊的結構示意圖,如圖1b所示,該神經網絡運算模塊包括存儲單元102、直接存儲訪問單元103、映射單元101、指令緩存單元104、第一輸入緩存單元105、第二輸入緩存單元106、指令控制單元107、運算單元108和輸出緩存單元109。
上述存儲單元102,用於存儲輸入數據、神經網絡指令和運算結果,所述輸入數據包括至少一個輸入神經元和至少一個權值。
上述直接存儲訪問單元103,用於在所述存儲單元102與指令緩存單元104、映射單元101和輸出緩存單元109之間進行數據的讀寫。
具體地,上述直接存儲訪問單元從上述存儲單元102中讀取神經網絡指令,並將該神經網絡指令寫入上述指令緩存單元104中。上述直接存儲訪問單元103從上述存儲單元102讀取上述輸入神經元和權值,並將該輸入神經元和權值寫入上述映射單元101。上述直接存儲訪問單元103從上述輸出緩存單元109讀取上述運算結果後,將該運算結果寫入上述存儲單元102中。
上述映射單元101,用於通過所述直接存儲訪問單元103獲取所述輸入數據後,對所述輸入數據進行處理,以得到處理後的輸入數據,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值,並將所述處理後的輸入神經元和所述處理後的權值存儲到第一輸入緩存單元105和第二輸入緩存單元106中。
具體的,上述映射單元101將上述處理後的輸入神經元和上述處理後的權值分別存儲到上述第一輸入緩存單元105和第二輸入緩存單元106中,或者分別存儲到上述第二輸入緩存單元106和第一輸入緩存單元105。
其中,如圖2所示,上述映射單元101包括:
第一稀疏處理單元1011,用於接收到第一輸入數據後,根據所述第一輸入數據以得到第一連接關係數據,並將該第一連接關係數據傳輸至連接關係處理單元1013;
第二稀疏處理單元1012,用於接收到第二輸入數據後,根據所述第二輸入數據以得到第二連接關係數據,並將該第二連接關係數據傳輸至所述連接關係處理單元1013;
所述連接關係處理單元1013,用於根據所述第一連接關係數據和所述第二連接關係數據,以得到第三連接關係數據,並將該第三連接關係數據傳輸至數據處理單元1014;
所述數據處理單元1014,用於在接收到所述第一輸入數據,所述第二輸入數據和所述第三連接關係數據後,根據所述第三連接關係數據對所述第一輸入數據和所述第二輸入數據進行處理,以得到第一輸出數據和第二輸出數據;
其中,當所述第一輸入數據包括至少一個輸入神經元,第二輸入數據包括至少一個權值時,所述第一連接關係數據為輸入神經元的連接關係數據,所述第二連接關係數據為權值的連接關係數據,所述第一輸出數據為處理後的輸入神經元,所述第二輸出數據為處理後的權值;當所述第一輸入數據包括至少一個權值,所述第二輸入數據包括至少一個輸入神經元時,所述第一連接關係數據為權值的連接關係數據,所述第二連接關係數據為輸入神經元的連接關係數據,所述第一輸出數據為處理後的權值,所述第二輸出數據為處理後的輸入神經元。
當上述第一輸入數據包括至少一個輸入神經元時,上述第一連接關係數據為用於表示該至少一個輸入神經元中絕對值大於第一閾值的輸入神經元的位置的字符串;當上述第一輸入數據包括至少一個權值時,上述第一連接關係數據為用於表示輸入神經元與輸出神經元之間是否有連接的字符串。
當上述第二輸入數據包括至少一個輸入神經元時,上述第二連接關係數據為用於表示該至少一個輸入神經元中絕對值大於第一閾值的輸入神經元的位置的字符串;當上述第二輸入數據包括至少一個權值時,上述第二連接關係數據為用於表示輸入神經元與輸出神經元之間是否有連接的字符串。
可選地,上述第一閾值可為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.01,參見圖3,圖3為本發明實施例提供的一種稀疏神經網絡的示意圖。如圖3中的a圖所示,上述第一輸入數據為輸入神經元,包括輸入神經元i1、i2、i3和i4,上述第二輸入數據為權值。對於輸出神經元o1,權值為w11,w21,w31和w41;對於輸出神經元o2,權值w12,w22,w32和w42,其中權值w21,w12和w42的值為0,其絕對值均小於上述第一閾值0.01,稀疏處理單元(即第一稀疏處理單元1011或第二稀疏處理單元1012)確定上述輸入神經元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、i3與i4,w11、w31和w41分別存儲到上述第一輸入緩存單元105和第二輸入緩存單元106,或者分別存儲到上述第二輸入緩存單元106和第一輸入緩存單元105中;對於輸出神經元o2,上述映射單元101將上述i2與i3,和w22與w32,分別存儲到上述第一輸入緩存單元105和第二輸入緩存單元106,或者分別存儲到上述第二輸入緩存單元106和第一輸入緩存單元105中。
針對上述輸出神經元o1,上述第二輸出數據為w11,w31和w41;針對上述輸出神經元o2,上述第二輸出數據為w22和w32。
當輸入神經元i1、i2、i3和i4的值分別為1,0,3,5則上述輸入神經元的連接關係數據為「1011」,上述輸出的神經元為i1(1),i3(3),i4(5)。
如圖3中的b圖所示,上述第一輸入數據為輸入神經元,包括輸入神經元i1、i2、i3和i4,上述第二輸入數據為權值。對於輸出神經元o1,權值為w11,w21,w31和w41;對於輸出神經元o2,權值w12,w22,w32和w42,其中權值w21,w12和w42的值為0,稀疏處理單元(即第一稀疏處理單元1011或第二稀疏處理單元1012)確定上述輸入神經元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、i3與i4,w11、w31和w41分別存儲到上述第一輸入緩存單元105和第二輸入緩存單元106,或者分別存儲到上述第二輸入緩存單元106和第一輸入緩存單元105中;對於輸出神經元o2,上述映射單元101將上述i2與i3,和w22與w32,分別存儲到上述第一輸入緩存單元105和第二輸入緩存單元106,或者分別存儲到上述第二輸入緩存單元106和第一輸入緩存單元105中。
針對上述輸出神經元o1,上述處理後的權值為w11,w31和w41;針對上述輸出神經元o2,上述處理後的權值為w22和w32。
當輸入神經元i1、i2、i3和i4的值分別為1,0,3,5則上述輸入神經元的連接關係數據為「021」,上述處理後的輸入神經元為i1(1)、i3(3)和i4(5)。
上述連接關係處理單元1013對上述第一連接關係數據和上述第二連接關係數據進行處理,以得到第三連接關係數據。該第三連接關係數據可以直接索引或者步長索引的形式表示。
具體地,上述當上述第一連接關係數據和上述第二連接關係數據均以直接索引的形式表示時,上述連接關係處理單元1013對上述第一連接關係數據和上述第二連接關係數據進行與操作,以得到第三連接關係數據,該第三連接關係數據是以直接索引的形式表示的。
需要說明的是,表示上述第一連接關係數據和第二連接關係數據的字符串在內存中是按照物理地址高低的順序存儲的,可以是由高到低的順序存儲的,也可以是由低到高的順序存儲的。
當上述第一連接關係數據和上述第二連接關係數據均以步長索引的形式表示,且表示上述第一連接關係數據和第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,上述連接關係處理單元1013將上述第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第四連接關係數據;同理,上述連接關係處理單元1013對上述第二連接關係數據的字符串進行同樣的處理,得到第五連接關係數據。然後上述連接關係處理單元1013從上述第四連接關係數據的字符串和上述第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成一個新的字符串。上述連接關係處理單元1013將上述新的字符串中將每一個元素與其相鄰且值小於該元素值的元素進行相減,以得到一個新的元素。按照該方法,對上述新的字串中的每個元素進行相應的操作,以得到上述第三連接關係數據。
舉例說明,假設以步長索引的形式表示上述第一連接關係數據和上述第二連接關係數據,上述第一連接關係數據的字符串為「01111」,上述第二連接關係數據的字符串為「022」,上述連接關係處理單元1013將上述第一連接關係數據的字符串中的每個元素與其相鄰的前一個元素相加,得到第四連接關係數據「01234」;同理,上述連接關係處理單元1013對上述第二連接關係數據的字符串進行相同的處理後得到的第五連接關係數據為「024」。上述連接關係處理單元1013從上述第四連接關係數據「01234」和上述第五連接關係數據「024」選組相同的元素,以得到新的字符串「024」。上述連接關係處理單元1013將該新的字符串中的每個元素與其相鄰的前一個元素進行相減,即0,(2-0),(4-2),以得到上述第三連接數據「022」。
當上述第一連接關係數據和上述第二連接關係數據中的任意一個以步長索引的形式表示,另一個以直接索引的形式表示時,上述連接關係處理單元1013將上述以步長索引表示的連接關係數據轉換成以直接索引的表示形式或者將以直接索引表示的連接關係數據轉換成以步長索引表示的形式。然後上述連接關係處理單元1013按照上述方法進行處理,以得到上述第三連接關係數據(即上述第二輸出數據)。
可選地,當上述第一連接關係數據和上述第二連接關係數據均以直接索引的形式表示時,上述連接關係處理單元1013將上述第一連接關係數據和上述第二連接關係數據均轉換成以步長索引的形式表示的連接關係數據,然後按照上述方法對上述第一連接關係數據和上述第二連接關係數據進行處理,以得到上述第三連接關係數據。
具體地,上述第一輸入數據可為輸入神經元或者權值,第二輸入數據可為輸入神經元或者權值,且上述第一輸入數據和第二輸入數據不一致。上述數據處理單元1014根據上述第三連接關係數據從上述第一輸入數據(即輸入神經元或者權值)中選取與該第三連接關係數據相關的數據,作為第一輸出數據;上述數據處理單元1014根據上述第三連接關係數據從上述第二輸入數據中選取與該第三連接關係數據相關的數據,作為第二輸出數據。
進一步地,上述數據處理單元1014將上述處理後的輸入神經元中的每個處理後的輸入神經元與其對應的處理後的權值作為一個數據集,將該數據集存儲出上述存儲單元102中。
舉例說明,假設上述第一輸入數據包括輸入神經元i1,i2,i3和i4,上述第二輸入數據包括權值w11,w21,w31和w41,上述第三連接關係數據以直接索引方式表示,為「1010」,則上述數據處理單元1014輸出的第一輸出數據為輸入神經元i1和i3,輸出的第二輸出數據為權值w11和w31。對於上述輸出神經元o1,上述數據處理單元1014將上述i1、i3與i4,w11、w31和w41分別存儲到上述第一輸入緩存單元105和第二輸入緩存單元106,或者分別存儲到上述第二輸入緩存單元106和第一輸入緩存單元105中;對於輸出神經元o2,上述數據處理單元1014將上述i2與i3,和w22與w32,分別存儲到上述第一輸入緩存單元105和第二輸入緩存單元106,或者分別存儲到上述第二輸入緩存單元106和第一輸入緩存單元105中。
可選地,所述映射單元101對所述輸入數據進行處理之前,所述映射單元101還用於:
對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M為大於或者等於1的整數;
判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;
當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元刪除;
對所述至少一個權值進行分組,以得到N組權值,所述N為大於或者等於1的整數;
判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;
當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值刪除。
可選地,上述第三閾值可為0.5,0.2,0.1,0.05,0.025,0.01,0或者其他值。
其中,上述第四閾值與上述一組輸入神經元中輸入神經元的個數相關。可選地,該第四閾值=一組輸入神經元中的輸入神經元個數-1或者該第四閾值為其他值。
可選地,上述第五閾值可為0.5,0.2,0.1,0.05,0.025,0.01,0或者其他值。
其中,上述第六閾值與上述一組權值中的權值個數相關。可選地,該第六閾值=一組權值中的權值個數-1或者該第六閾值為其他值。
需要說明的是,上述第六閾值和上述第四閾值可相同或者不同,上述第三閾值和上述第五閾值可相同或者不同。
上述第一輸入緩存單元105,用於緩存第一緩存數據,所述第一緩存數據為所述處理後的輸入神經元或處理後的權值。
上述第二輸入緩存單元106,用於緩存第二緩存數據,所述第二緩存數據為所述處理後的輸入神經元或處理後的權值,且所述第二緩存數據與所述第一緩存數據不一致。
需要說明的是,當上述第一輸入緩存單元105用於緩存處理後的輸入神經元時,則上述第二輸入緩存單元106用於緩存處理後的權值;當上述第二輸入緩存單元105用於緩存處理後的權值時,則上述第一輸入緩存單元106用於緩存處理後的輸入神經元。
需要說明的是,第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值可均存儲在上述存儲單元102、第一輸出緩存單元105或者第二輸入緩存單元106中;上述第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值中部分閾值存儲在上述存儲單元102、部分閾值存儲在上述第一輸出緩存單元105中,部分閾值存儲在上述第二輸出緩存單元106中。
上述指令緩存單元104,用於緩存所述直接存儲訪問單元103讀取神經網絡指令。
上述指令控制單元107,用於從所述指令緩存單元104中獲取所述神經網絡指令,並將所述神經網絡指令譯碼成運算單元108執行的微指令。
上述運算單元108,用於從所述第一輸入緩存單元105和所述第二輸入緩存單元106中獲取所述處理後的輸入神經元和所述處理後的權值後,根據所述微指令對所述處理後的輸入神經元和所述處理後的權值進行人工神經網絡運算,以得到所述運算結果。
上述輸出緩存單元109,用於緩存所述運算結果。該輸出緩存單元109通過上述直接存儲訪問單元103將上述運算結果存儲到上述存儲單元102中。
需要指出的是,上述指令緩存單元104、上述第一輸入緩存單元105、上述第二輸入緩存單元106和上述輸出緩存單元109均可為片上緩存。
其中,片上緩存是位於神經網絡運算模塊和內存之間的臨時存儲器,它的容量比內存小,但是交換速度快。片上緩存中的數據是內存中數據的一小部分,這一小部分數據是神經網絡運算模塊即將要訪問的數據,當神經網絡運算模塊需要讀寫數據時,就可以直接訪問片上緩存,從而加快讀寫數據的速度。
進一步地,上述運算單元108包括但不限定於三個部分,分別為乘法器、一個或多個加法器(可選地,多個加法器組成加法樹)和激活函數單元/激活函數運算器。上述乘法器將第一輸入數據(in1)和第二輸入數據(in2)相乘得到第一輸出數據(out1),過程為:out1=in1*in2;上述加法樹將第一輸入數據(in3)通過加法樹逐級相加得到第二輸出數據(out2),其中in3是一個長度為N的向量,N大於1,過稱為:out2=in3[1]+in3[2]+…+in3[N],和/或將第一輸入數據(in3)通過加法樹累加之後得到的結果和第二輸入數據(in4)相加得到第二輸出數據(out2),過程為:out2=in3[1]+in3[2]+…+in3[N]+in4,或者將第一輸入數據(in3)和第二輸入數據(in4)相加得到第二輸出數據(out2),過稱為:out2=in3+in4;上述激活函數單元將第五輸入數據(in5)通過激活函數(active)運算得到第三輸出數據(out3),過程為:out3=active(in5),激活函數active可以是sigmoid、tanh、relu、softmax等函數,除了做激活操作,激活函數單元可以實現其他的非線性函數運算,可將輸入數據(in)通過函數(f)運算得到輸出數據(out),過程為:out=f(in)。
上述運算單元108還可以包括池化單元,池化單元將輸入數據(in)通過池化運算得到池化操作之後的輸出數據(out),過程為out=pool(in),其中pool為池化操作,池化操作包括但不限於:平均值池化,最大值池化,中值池化,輸入數據in是和輸出out相關的一個池化核中的數據。
需要說明的是,圖1b所示的實施例中相關的連接關係數據(包括權值的連接關係數據和輸入神經元的連接關係數據)可以採用高維動態數組,可以用鏈表等等表示。
可以看出,在本發明實施例的方案中,映射單元中的第一稀疏處理單元和第二稀疏處理單元分別對輸入神經元和權值進行處理,以分別得到第一連接關係數據和第二連接關係數據。連接關係處理單元對上述第一連接關係數據和第二連接關係數據進行處理,得到第三連接關係數據。數據處理單元根據第三連接關係數據對上述第一輸入數據進行處理以得到第一輸出數據並輸出,同理,根據第三連接關係數據對上述第二輸入數據進行處理以得到第二輸出數據並輸出。通過對輸入神經元和權值進行處理,得到處理後的輸入神經元和權值,減小了輸入數據的數據量,進而減小了總的運算量,提高了運算速度,同時也減小了額外的開銷。
需要說明的是,上述神經網絡運算模塊不僅可以進行稀疏神經網絡運算,還可以進行稠密神經網絡運算。上述神經網絡運算模塊特別適用於稀疏神經網絡的運算,是因為稀疏神經網絡里0值數據或者絕對值很小的數據非常多。通過映射單元可以提出這些數據,在保證運算精度的情況下,可提高運算的效率。
需要指出的是,本發明實施例中提到的輸入神經元和輸出神經元並非是指整個神經網絡的輸入層中的神經元和輸出層中的神經元,而是對於神經網絡中任意相鄰的兩層神經元,處於網絡前饋運算下層中的神經元即為輸入神經元,處於網絡前饋運算上層中的神經元即為輸出神經元。以卷積神經網絡為例,假設一個卷積神經網絡有L層,K=1,2,3…L-1,對於第K層和第K+1層來說,第K層被稱為輸入層,該層中的神經元為上述輸入神經元,第K+1層被稱為輸入層,該層中的神經元為上述輸出神經元,即除了頂層之外,每一層都可以作為輸入層,其下一層為對應的輸出層。
上述各單元可以是硬件電路包括數字電路,模擬電路等等。硬件電路的物理實現包括但不局限於物理器件,物理器件包括但不局限於晶體管,憶阻器等等。上述神經網絡運算模塊中的運算單元可以是任何適當的硬件處理器,比如CPU、GPU、FPGA、DSP和ASIC等等。上述存儲單元、指令緩存單元,第一輸入緩存單元、第二輸入緩存單元和輸出緩存單元均可以是任何適當的磁存儲介質或者磁光存儲介質,比如RRAM,DRAM,SRAM,EDRAM, HBM, HMC等等。
在一種可行的實施例中,本發明實施例提供了一種神經網絡運算裝置,該神經網絡運算裝置包括一個或多個如圖1b所示實施例所述的神經網絡運算模塊,用於從其他處理裝置中獲取待運算數據和控制信息,並執行指定的神經網絡運算,將執行結果通過I/O介面傳遞給其他處理裝置;
當所述神經網絡運算裝置包含多個所述神經網絡運算模塊時,所述多個所述神經網絡運算模塊間可以通過特定的結構進行連接並傳輸數據;
其中,多個所述神經網絡運算模塊通過PCIE總線進行互聯並傳輸數據,以支持更大規模的神經網絡的運算;多個所述神經網絡運算模塊共享同一控制系統或擁有各自的控制系統;多個所述神經網絡運算模塊共享內存或者擁有各自的內存;多個所述神經網絡運算模塊的互聯方式是任意互聯拓撲。
該神經網絡運算裝置具有較高的兼容性,可通過pcie介面與各種類型的服務器相連接。
在一種可行的實施例中,本發明實施例提供了一種組合處理裝置,該組合裝置包括如上述神經網絡運算裝置,通用互聯介面和其他處理裝置。
上述神經網絡運算裝置與上述其他處理裝置進行交互,共同完成用戶指定的操作。參見圖4a,圖4a為本發明實施例提供的一種整合處理裝置的結構示意圖。如圖4a所示,該組合處理裝置包括上述神經網絡運算裝置401、通用互聯介面402和其他處理裝置403。
其中,上述其他處理裝置403包括中央處理器(Central Processing Unit)、圖形處理器(Graphics Processing Unit,GPU)、神經網絡處理器等通用/專用處理器中的一種或以上的處理器類型。其他處理裝置403所包括的處理器數量不做限制。其他處理裝置403作為神經網絡運算裝置401與外部數據和控制的介面,包括數據搬運,完成對本神經網絡運算裝置的開啓、停止等基本控制;其他處理裝置403也可以和神經網絡運算裝置401協作共同完成運算任務。
上述通用互聯介面402,用於在所述神經網絡運算裝置401與其他處理裝置403間傳輸數據和控制指令。該神經網絡運算裝置401從其他處理裝置403中獲取所需的輸入數據,寫入神經網絡運算裝置401片上的存儲裝置;可以從其他處理裝置403中獲取控制指令,寫入神經網絡運算裝置401片上的控制緩存;也可以讀取神經網絡運算裝置401的存儲模塊中的數據並傳輸給其他處理裝置403。
可選的,如圖4b所示,上述組合處理裝置還包括存儲裝置404,用於保存在本運算單元/運算裝置或其他運算單元所需要的數據,尤其適用於所需要運算的數據在本神經網絡運算裝置401或其他處理裝置403的內部存儲中無法全部保存的數據。
上述組合裝置可以作為手機、機器人、無人機等智能設備的片上系統,有效降低控制部分的核心面積,提高處理速度,降低整體功耗。
在一種可行的實施例中,本發明實施例提供了一種神經網絡芯片,該神經網絡芯片包括如圖1b所示實施例所述的神經網絡運算模塊,或者上述神經網絡運算裝置或者上述組合處理裝置。
在一種可行的實施例中,本發明實施例提供了一種神經網絡芯片封裝結構,該神經網絡芯片封裝結構包括上述神經網絡芯片。
在一種可行的實施例中,本發明實施例提供了一種板卡,該板卡包括上述神經網絡芯片封裝結構。該板卡可用於眾多通用或專用的計算系統環境或配置中。例如:個人計算機、服務器計算機、手持設備或便攜式設備、平板型設備、智能家居、家電、多處理器系統、基於微處理器的系統、機器人、可編程的消費電子設備、網絡個人計算機(personal computer,PC)、小型計算機、大型計算機、包括以上任何系統或設備的分布式計算環境等等。
請參照圖5,圖5為本發明實施例提供的一種板卡的結構示意圖。如圖5所示,上述板卡10包括神經網絡芯片封裝結構11、第一電氣及非電氣連接裝置12和第一基板(substrate)13。
對於神經網絡芯片封裝結構11的具體結構不作限定,可選的,如圖6所示,上述神經網絡芯片封裝結構11包括:神經網絡芯片111、第二電氣及非電氣連接裝置112、第二基板113。
本發明所涉及的神經網絡芯片111的具體形式不作限定,上述的神經網絡芯片111包含但不限於將神經網絡處理器集成的神經網絡晶片上,上述晶片可以由硅材料、鍺材料、量子材料或分子材料等製成。根據實際情況(例如:較嚴苛的環境)和不同的應用需求可將上述神經網絡晶片進行封裝,以使神經網絡晶片的大部分被包裹住,而將神經網絡晶片上的引腳通過金線等導體連到封裝結構的外邊,用於和更外層進行電路連接。
本發明對於第一基板13和第二基板113的類型不做限定,可以是印制電路板(printed circuit board,PCB)或(printed wiring board,PWB),還可能為其它電路板。對PCB的製作材料也不做限定。
本發明所涉及的第二基板113用於承載上述神經網絡芯片111,通過第二電氣及非電氣連接裝置112將上述的神經網絡芯片111和第二基板113進行連接得到的神經網絡芯片封裝結構11,用於保護神經網絡芯片111,便於將神經網絡芯片封裝結構11與第一基板13進行進一步封裝。
對於上述具體的第二電氣及非電氣連接裝置112的封裝方式和封裝方式對應的結構不作限定,可根據實際情況和不同的應用需求選擇合適的封裝方式並進行簡單地改進,例如:倒裝芯片球柵陣列封裝(Flip Chip Ball Grid Array Package,FCBGAP),薄型四方扁平式封裝(Low-profile Quad Flat Package,LQFP)、帶散熱器的四方扁平封裝(Quad Flat Package with Heat sink,HQFP)、無引腳四方扁平封裝(Quad Flat Non-lead Package,QFN)或小間距四方扁平式封裝(Fine-pitch Ball Grid Package,FBGA)等封裝方式。
倒裝芯片(Flip Chip),適用於對封裝後的面積要求高或對導線的電感、信號的傳輸時間敏感的情況下。除此之外可以用引線鍵合(Wire Bonding)的封裝方式,減少成本,提高封裝結構的靈活性。
球柵陣列(Ball Grid Array),能夠提供更多引腳,且引腳的平均導線長度短,具備高速傳遞信號的作用,其中,封裝可以用引腳網格陣列封裝(Pin Grid Array,PGA)、零插拔力(Zero Insertion Force,ZIF)、單邊接觸連接(Single Edge Contact Connection,SECC)、觸點陣列(Land Grid Array,LGA)等來代替。
可選的,採用倒裝芯片球柵陣列(Flip Chip Ball Grid Array)的封裝方式對神經網絡芯片111和第二基板113進行封裝,具體的神經網絡芯片封裝結構11的示意圖可參照圖7a。如圖7a所示,上述神經網絡芯片封裝結構包括:神經網絡芯片21、焊盤22、焊球23、第二基板24、第二基板24上的連接點25、引腳26。
其中,焊盤22與神經網絡芯片21相連,通過在焊盤22和第二基板24上的連接點25之間焊接形成焊球23,將神經網絡芯片21和第二基板24連接,即實現了神經網絡芯片21的封裝。
引腳26用於與封裝結構的外部電路(例如,神經網絡處理器的板卡10上的第一基板13)相連,可實現外部數據和內部數據的傳輸,便於神經網絡芯片21或神經網絡芯片21對應的神經網絡處理器對數據進行處理。對於引腳的類型和數量本發明也不作限定,根據不同的封裝技術可選用不同的引腳形式,並遵從一定規則進行排列。
可選的,上述神經網絡芯片封裝結構還包括絕緣填充物,置於焊盤22、焊球23和連接點25之間的空隙中,用於防止焊球與焊球之間產生干擾。
其中,絕緣填充物的材料可以是氮化硅、氧化硅或氧氮化硅;干擾包含電磁干擾、電感干擾等。
可選的,上述神經網絡芯片封裝結構還包括散熱裝置,用於散髮神經網絡芯片21運行時的熱量。其中,散熱裝置可以是一塊導熱性良好的金屬片、散熱片或散熱器,例如,風扇。
舉例來說,如圖7b所示,上述神經網絡芯片封裝結構11包括:神經網絡芯片21、焊盤22、焊球23、第二基板24、第二基板24上的連接點25、引腳26、絕緣填充物27、散熱膏28和金屬外殼散熱片29。其中,散熱膏28和金屬外殼散熱片29用於散髮神經網絡芯片21運行時的熱量。
可選的,上述神經網絡芯片封裝結構11還包括補強結構,與焊盤22連接,且內埋於焊球23中,以增強焊球23與焊盤22之間的連接強度。
其中,補強結構可以是金屬線結構或柱狀結構,在此不做限定。
本發明對於第一電氣及非電氣裝置12的具體形式也不作限定,可參照第二電氣及非電氣裝置112的描述,即通過焊接的方式將神經網絡芯片封裝結構11進行封裝,也可以採用連接線連接或插拔方式連接第二基板113和第一基板13的方式,便於後續更換第一基板13或神經網絡芯片封裝結構11。
可選的,第一基板13包括用於擴展存儲容量的內存單元的介面等,例如:同步動態隨機存儲器(Synchronous Dynamic Random Access Memory,SDRAM)、雙倍速率同步動態隨機存儲器(Double Date Rate SDRAM,DDR)等,通過擴展內存提高了神經網絡處理器的處理能力。
第一基板13上還可包括快速外部設備互連總線(Peripheral Component Interconnect-Express,PCI-E或PCIe)介面、小封裝可熱插拔(Small Form-factor Pluggable,SFP)介面、以太網介面、控制器局域網總線(Controller Area Network,CAN)介面等等,用於封裝結構和外部電路之間的數據傳輸,可提高運算速度和操作的便利性。
將神經網絡處理器封裝為神經網絡芯片111,將神經網絡芯片111封裝為神經網絡芯片封裝結構11,將神經網絡芯片封裝結構11封裝為板卡10,可填補目前神經網絡的空缺,通過板卡上的介面(插槽或插芯)與外部電路(例如:計算機主板)進行數據交互,即直接通過使用板卡18實現神經網絡處理器的功能,並保護神經網絡芯片111。且板卡10上還可添加其他模塊,提高了神經網絡處理器的應用範圍和運算效率。
在一種可行的實施例中,本發明實施例提供了一種電子裝置,該電子裝置包括上述板卡。
其中,該電子裝置包括:數據處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、雲端服務器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備交通工具、家用電器、和/或醫療設備。
上述交通工具包括飛機、輪船和/或車輛;上述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機;所述醫療設備包括核磁共振儀、B超儀和/或心電圖儀。
參見圖8,圖8為本發明實施例提供的一種神經網絡運算方法的流程示意圖。如圖8所示,該方法包括:
S801、神經網絡運算模塊對輸入數據進行處理,以得到處理後的輸入數據。
其中,所述輸入數據包括至少一個輸入神經元和/或至少一個權值,所述對輸入數據進行處理之前,所述方法還包括:
對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M為大於或者等於1的整數;
判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;
當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元刪除;
對所述至少一個權值進行分組,以得到N組權值,所述N為大於或者等於1的整數;
判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;
當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值刪除。
可選地,所述輸入數據包括輸入神經元和權值,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值,所述對輸入數據進行處理,以得到處理後的輸入數據,包括:
根據所述輸入神經元和所述權值獲取所述輸入神經元的連接關係數據和所述權值的連接關係數據;
對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,
根據所述第二連接關係數據對所述輸入神經元和所述權值進行處理,以得到所述處理後的輸入神經元和所述處理後的權值。
可選地,所述輸入神經元的連接關係數據和所述權值的連接關係數據以直接索引的形式表示,所述對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,包括:
對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行與操作,以得到所述第三連接關係數據。
可選地,所述對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,包括:
當所述輸入神經元的連接關係數據以直接索引的形式表示,所述權值的連接關係數據以步長索引的形式表示時,將所述權值的連接關係數據轉換成以直接索引的形式表示的連接關係數據;
當所述權值的連接關係數據以直接索引的形式表示,所述輸入神經元的連接關係數據以步長索引的形式表示時,將所述輸入神經元的連接關係數據轉換成以直接索引的形式表示的連接關係數據;
對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行與操作,以得到所述第三連接關係數據。
可選地,當所述輸入神經元的連接關係數據和所述權值的連接關係數均以步長的形式表,且表示所述輸入神經元的連接關係數據和所述權值的連接關係數據的字符串是按照物理地址由低到高的順序存儲時,所述對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,包括:
將所述輸入神經元的連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第三連接關係數據;同理,對所述權值的連接關係數據的字符串進行同樣的處理,得到第四連接關係數據;
從所述第三連接關係數據的字符串和所述第四連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;
將所述新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相減,得到的元素組成所述第三連接關係數據。
可選地,當表示所述輸入神經元的連接關係數據和所述權值的連接關係數據的字符串是按照物理地址由低到高的順序存儲時,所述對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,包括:
當所述輸入神經元的關係數據是以步長索引的形式表示,所述權值的連接關係數據是以直接索引的形式表示時,將所述權值的連接關係數據轉換成以步長索引的形式表示的連接關係數據;
當所述權值的關係數據是以步長索引的形式表示,所述輸入神經元的連接關係數據是以直接索引的形式表示時,將所述輸入神經元的連接關係數據轉換成以步長索引的形式表示的連接關係數據;
將所述輸入神經元的連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第三連接關係數據;同理,對所述權值的連接關係數據的字符串進行同樣的處理,得到第四連接關係數據;
從所述第三連接關係數據的字符串和所述第四連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;
將所述新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相減,得到的元素組成所述第三連接關係數據。
其中,所述輸入神經元的連接關係數據和所述權值的連接關係數據以直接索引或者步長索引的形式表示;
當所述輸入神經元的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示所述輸入神經元的絕對值小於或者等於第一閾值,1表示所述輸入神經元的絕對值大於所述第一閾值;
當所述輸入神經元的連接關係數據以步長索引形式表示時,該連接關係數據為絕對值大於上述第一閾值的輸入神經元與上一個絕對值大於上述第一閾值的輸入神經元之間的距離值組成的字符串;
當所述權值的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示所述權值的絕對值小於或者等於第二閾值,即所述權值對應的輸入神經元與輸出神經元之間沒有連接,1表示所述權值的絕對值大於所述第二閾值,即所述權值對應的輸入神經元與輸出神經元之間有連接;以直接索引形式表示權值的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示所述權值的連接關係數據;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示所述權值的連接關係數據;
當所述權值的連接關係數據以步長索引的形式表示時,該連接關係數據為與輸出神經元有連接的輸入神經元的與上一個與該輸出神經元有連接的輸入神經元之間的距離值組成的字符串。
S802、神經網絡運算模塊獲取神經運算指令,將所述神經運算指令譯碼成微指令。
S803、神經網絡運算模塊根據所述微指令對所述處理後的輸入數據進行人工神經網絡運算,以得到運算結果。
需要說明的是,上述步驟S801-S803的描述可參見上述圖1b所示實施例的相關描述,在此不再敘述。
本發明實施例還提供一種計算機存儲介質,其中,該計算機存儲介質可存儲有程式,該程式執行時包括上述方法實施例中記載的任何一種神經網絡運算方法的部分或全部步驟。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明並不受所描述的動作順序的限制,因為依據本發明,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於優選實施例,所涉及的動作和模塊並不一定是本發明所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置,可通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些介面,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬件的形式實現,也可以採用軟件功能單元的形式實現。
所述集成的單元如果以軟件功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲器中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲器中,包括若干指令用以使得一台計算機設備(可為個人計算機、服務器或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲器包括:USB硬碟、唯讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬碟、磁碟或者光碟等各種可以存儲程式代碼的介質。
所屬技術領域中具有通常知識者可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程式來指令相關的硬件來完成,該程式可以存儲於一計算機可讀存儲器中,存儲器可以包括:快閃隨身碟、唯讀存儲器(英文:Read-Only Memory ,簡稱:ROM)、隨機存取器(英文:Random Access Memory,簡稱:RAM)、磁碟或光碟等。
以上對本發明實施例進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用範圍上均會有改變之處,綜上上述,本說明書內容不應理解為對本發明的限制。
101‧‧‧映射單元102‧‧‧存儲單元103‧‧‧直接存儲訪問單元104‧‧‧指令緩存單元105‧‧‧第一輸入緩存單元106‧‧‧第二輸入緩存單元107‧‧‧指令控制單元108‧‧‧運算單元109‧‧‧輸出緩存單元1011‧‧‧第一稀疏處理單元1012‧‧‧第二稀疏處理單元1013‧‧‧連接關係處理單元1014‧‧‧數據處理單元i1、i2、i3、i4‧‧‧輸入神經元o1、o2‧‧‧輸出神經元401‧‧‧神經網絡運算裝置402‧‧‧通用互聯介面403‧‧‧其他處理裝置404‧‧‧存儲裝置10‧‧‧板卡11‧‧‧神經網絡芯片封裝結構12‧‧‧第一電氣及非電氣連接裝置13‧‧‧第一基板111‧‧‧神經網絡芯片112‧‧‧第二電氣及非電氣連接裝置113‧‧‧第二基板21‧‧‧神經網絡芯片22‧‧‧焊盤23‧‧‧焊球24‧‧‧第二基板25‧‧‧第二基板24上的連接點26‧‧‧引腳27‧‧‧絕緣填充物28‧‧‧散熱膏29‧‧‧金屬外殼散熱片S801、S802、S803‧‧‧步驟
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式僅僅是本發明的一些實施例,對於所屬技術領域中具有通常知識者來講,在不付出創造性勞動的前提下,還可以根據這些圖式獲得其他的圖式。
圖1a為本發明實施例提供的一種稀疏神經網絡結構示意圖;
圖1b為本發明實施例提供的一種神經網絡運算模塊的結構示意圖;
圖2為本發明實施例提供的一種神經網絡運算模塊的局部結構示意圖;
圖3為本發明實施例提供的一種神經網絡結構示意圖;
圖4a為本發明實施例提供的一種組合處理裝置的結構示意圖;
圖4b為本發明實施例提供的另一種組合處理裝置的結構示意圖;
圖5為本發明實施例提供的一種板卡的結構示意圖;
圖6為本發明實施例提供的一種神經網絡芯片封裝結構的示意圖;
圖7a為本發明實施例提供的另一種神經網絡芯片封裝結構的示意圖;
圖7b為本發明實施例提供的另一種神經網絡芯片封裝結構的示意圖;
圖8為本發明實施例提供的一種神經網絡運算方法的流程示意圖。
101‧‧‧映射單元
102‧‧‧存儲單元
103‧‧‧直接存儲訪問單元
104‧‧‧指令緩存單元
105‧‧‧第一輸入緩存單元
106‧‧‧第二輸入緩存單元
107‧‧‧指令控制單元
108‧‧‧運算單元
109‧‧‧輸出緩存單元
Claims (21)
- 一種神經網絡運算模塊,其中,包括:一存儲單元,用於存儲一輸入數據、一神經網絡指令和一運算結果,該輸入數據包括至少一個輸入神經元和至少一個權值;一映射單元,用於通過一直接存儲訪問單元獲取該輸入數據後,對該輸入數據進行處理,以得到一處理後的輸入數據,該處理後的輸入數據包括一處理後的輸入神經元和一處理後的權值,並將該處理後的輸入神經元和該處理後的權值存儲到一第一輸入緩存單元和一第二輸入緩存單元中;一指令控制單元,用於從一指令緩存單元中獲取該神經網絡指令,並將該神經網絡指令譯碼成一運算單元執行的一微指令;該運算單元,用於從該第一輸入緩存單元和該第二輸入緩存單元中獲取該處理後的輸入神經元和該處理後的權值後,根據該微指令對該處理後的輸入神經元和該處理後的權值進行人工神經網絡運算,以得到該運算結果;一輸出緩存單元,用於緩存該運算結果;該映射單元包括:一第一稀疏處理單元,用於接收到一第一輸入數據後,根據該第一輸入數據以得到一第一連接關係數據,並將該第一連接關係數據傳輸至一連接關係處理單元;一第二稀疏處理單元,用於接收到一第二輸入數據後,根據該第二輸入數據以得到一第二連接關係數據,並將該第二連接關係數據傳輸至該連接關係處理單元; 該連接關係處理單元,用於根據該第一連接關係數據和該第二連接關係數據,以得到一第三連接關係數據,並將該第三連接關係數據傳輸至一數據處理單元;該數據處理單元,用於在接收到該第一輸入數據,該第二輸入數據和該第三連接關係數據後,根據該第三連接關係數據對該第一輸入數據和該第二輸入數據進行處理,以得到一第一輸出數據和一第二輸出數據;其中,當該第一輸入數據包括至少一個輸入神經元,該第二輸入數據包括至少一個權值時,該第一連接關係數據為該輸入神經元的連接關係數據,該第二連接關係數據為該權值的連接關係數據,該第一輸出數據為該處理後的輸入神經元,該第二輸出數據為該處理後的權值;當該第一輸入數據包括至少一個權值,該第二輸入數據包括至少一個輸入神經元時,該第一連接關係數據為該權值的連接關係數據,該第二連接關係數據為該輸入神經元的連接關係數據,該第一輸出數據為該處理後的權值,該第二輸出數據為該處理後的輸入神經元。
- 根據申請專利範圍第1項的神經網絡運算模塊,其中,該神經網絡運算模塊還包括:該直接存儲訪問單元,用於在該存儲單元與該指令緩存單元、該映射單元和該輸出緩存單元之間進行數據的讀寫;該第一輸入緩存單元,用於緩存一第一緩存數據,該第一緩存數據為該處理後的輸入神經元或該處理後的權值;該第二輸入緩存單元,用於緩存一第二緩存數據,該第二緩存數據為該處理後的輸入神經元或該處理後的權值,且該第二緩存數據與該第一緩存數據不一致; 該指令緩存單元,用於緩存該直接存儲訪問單元讀取該神經網絡指令。
- 根據申請專利範圍第1項的神經網絡運算模塊,其中,該輸入神經元的連接關係數據和該權值的連接關係數據均以直接索引或者步長索引的形式表示;當該輸入神經元的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示該輸入神經元的絕對值小於或者等於一第一閾值,1表示該輸入神經元的絕對值大於該第一閾值;當該輸入神經元的連接關係數據以步長索引形式表示時,該連接關係數據為絕對值大於該第一閾值的輸入神經元與上一個絕對值大於該第一閾值的輸入神經元之間的距離值組成的字符串;當該權值的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示該權值的絕對值小於或者等於一第二閾值,即該權值對應的輸入神經元與輸出神經元之間沒有連接,1表示該權值的絕對值大於該第二閾值,即該權值對應的輸入神經元與輸出神經元之間有連接;以直接索引形式表示權值的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示該權值的連接關係數據;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示該權值的連接關係數據;當該權值的連接關係數據以步長索引的形式表示時,該連接關係數據為與輸出神經元有連接的輸入神經元的與上一個與該輸出神經元有連接的輸入神經元之間的距離值組成的字符串。
- 根據申請專利範圍第3項的神經網絡運算模塊,其中,當該第一連接關係數據和該第二連接關係數據均以步長索引的形式表示,且表示該第一連接關係數據和該第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,該連接關係處理單元具體用於:將該第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成一第四連接關係數據;同理,對該第二連接關係數據的字符串進行同樣的處理,得到一第五連接關係數據;從該第四連接關係數據的字符串和該第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;將該新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相減,得到的元素組成該第三連接關係數據。
- 根據申請專利範圍第3項的神經網絡運算模塊,其中,該第一連接關係數據和該第二連接關係數據均以直接索引的形式表示,該連接關係處理單元具體用於:對該第一連接關係數據和該第二連接關係數據進行與操作,以得到該第三連接關係數據。
- 根據申請專利範圍第3項的神經網絡運算模塊,其中,該第一連接關係數據與該第二連接關係數據中任意一個以步長索引的形式表示,另一個以直接索引的形式表示,該連接關係處理單元具體用於:若該第一連接關係數據是以步長索引的形式表示,將該第一連接關係數據轉換成以直接索引的形式表示的連接關係數據; 若該第二連接關係數據是以步長索引的形式表示,將該第二連接關係數據轉換成以直接索引的形式表示的連接關係數據;對該第一連接關係數據和該第二連接關係數據進行與操作,以得到該第三連接關係數據。
- 根據申請專利範圍第6項的神經網絡運算模塊,其中,該第一連接關係數據與該第二連接關係數據中任意一個以步長索引的形式表示,另一個以直接索引的形式表示,當表示該第一連接關係數據和該第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,該連接關係處理單元還具體用於:若該第一連接關係數據是以步長索引的形式表示,將該第二連接關係數據轉換成以步長索引的形式表示的連接關係數據;若該第二連接關係數據是以步長索引的形式表示,將該第一連接關係數據轉換成以步長索引的形式表示的連接關係數據;將該輸入神經元的連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成該第三連接關係數據;同理,對該權值的連接關係數據的字符串進行同樣的處理,得到該第四連接關係數據;從該第三連接關係數據的字符串和該第四連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;將該新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相減,得到的元素組成該第三連接關係數據。
- 根據申請專利範圍第1項的神經網絡運算模塊,其中,該映射單元對該輸入數據進行處理之前,該映射單元還用於:對該至少一個輸入神經元進行分組,以得到M組輸入神經元,該M為大於或者等於1的整數;判斷該M組輸入神經元的每一組輸入神經元是否滿足一第一預設條件,該第一預設條件包括一組輸入神經元中絕對值小於或者等於一第三閾值的輸入神經元的個數小於或者等於一第四閾值;當該M組輸入神經元任意一組輸入神經元不滿足該第一預設條件時,將該組輸入神經元刪除;對該至少一個權值進行分組,以得到N組權值,該N為大於或者等於1的整數;判斷該N組權值的每一組權值是否滿足一第二預設條件,該第二預設條件包括一組權值中絕對值小於或者等於一第五閾值的權值的個數小於或者等於一第六閾值;當該N組權值任意一組權值不滿足該第二預設條件時,將該組權值刪除。
- 根據申請專利範圍第1項的神經網絡運算模塊,其中,該神經網絡運算模塊用於稀疏神經網絡運算或者稠密神經網絡運算。
- 一種神經網絡運算裝置,其中,該神經網絡運算裝置包括一個或多個如申請專利範圍第1-9項任一項的神經網絡運算模塊,用於從其他處理裝置中獲取待運算數據和控制信息,並執行指定的神經網絡運算,將執行結果通過I/O介面傳遞給其他處理裝置; 當該神經網絡運算裝置包含多個該神經網絡運算模塊時,多個該神經網絡運算模塊間可以通過特定的結構進行連接並傳輸數據;其中,多個該神經網絡運算模塊通過快速外部設備互連總線PCIE總線進行互聯並傳輸數據,以支持更大規模的神經網絡的運算;多個該神經網絡運算模塊共享同一控制系統或擁有各自的控制系統;多個該神經網絡運算模塊共享內存或者擁有各自的內存;多個該神經網絡運算模塊的互聯方式是任意互聯拓撲。
- 一種組合處理裝置,其中,該組合處理裝置包括如申請專利範圍第10項的神經網絡運算裝置,通用互聯介面和其他處理裝置;該神經網絡運算裝置與該其他處理裝置進行交互,共同完成用戶指定的操作。
- 一種神經網絡晶片,其中,該神經網絡晶片包括如申請專利範圍第9項的神經網絡運算裝置或如申請專利範圍第11項的組合處理裝置。
- 一種板卡,其中,該板卡包括如申請專利範圍第12項的神經網絡晶片。
- 一種電子裝置,其中,該電子裝置包括如申請專利範圍第12項的神經網絡晶片或者如申請專利範圍第13項的板卡。
- 一種神經網絡運算方法,其中,包括:對一輸入數據進行處理,以得到一處理後的輸入數據;獲取一神經運算指令,將該神經運算指令譯碼成一微指令;根據該微指令對該處理後的輸入數據進行人工神經網絡運算,以得到一運算結果; 其中,該輸入數據包括一輸入神經元和一權值,該處理後的輸入數據包括一處理後的輸入神經元和一處理後的權值,對該輸入數據進行處理,以得到該處理後的輸入數據,包括:根據該輸入神經元和該權值獲取該輸入神經元的連接關係數據和該權值的連接關係數據;對該輸入神經元的連接關係數據和該權值的連接關係數據進行處理,以得到一第二連接關係數據,根據該第二連接關係數據對該輸入神經元和該權值進行處理,以得到該處理後的輸入神經元和該處理後的權值。
- 根據申請專利範圍第15項的方法,其中,該輸入數據包括至少一個輸入神經元和至少一個權值,對該輸入數據進行處理之前,該方法還包括:對該至少一個輸入神經元進行分組,以得到M組輸入神經元,該M為大於或者等於1的整數;判斷該M組輸入神經元的每一組輸入神經元是否滿足一第一預設條件,該第一預設條件包括一組輸入神經元中絕對值小於或者等於一第三閾值的輸入神經元的個數小於或者等於一第四閾值;當該M組輸入神經元任意一組輸入神經元不滿足該第一預設條件時,將該組輸入神經元刪除;對該至少一個權值進行分組,以得到N組權值,該N為大於或者等於1的整數; 判斷該N組權值的每一組權值是否滿足一第二預設條件,該第二預設條件包括一組權值中絕對值小於或者等於一第五閾值的權值的個數小於或者等於一第六閾值;當該N組權值任意一組權值不滿足該第二預設條件時,將該組權值刪除。
- 根據申請專利範圍第15項的方法,其中,該輸入神經元的連接關係數據和該權值的連接關係數據以直接索引的形式表示,該對該輸入神經元的連接關係數據和該權值的連接關係數據進行處理,以得到該第二連接關係數據,包括:對該輸入神經元的連接關係數據和該權值的連接關係數據進行與操作,以得到一第三連接關係數據。
- 根據申請專利範圍第15項的方法,其中,對該輸入神經元的連接關係數據和該權值的連接關係數據進行處理,以得到該第二連接關係數據,包括:當該輸入神經元的連接關係數據以直接索引的形式表示,該權值的連接關係數據以步長索引的形式表示時,將該權值的連接關係數據轉換成以直接索引的形式表示的連接關係數據;當該權值的連接關係數據以直接索引的形式表示,該輸入神經元的連接關係數據以步長索引的形式表示時,將該輸入神經元的連接關係數據轉換成以直接索引的形式表示的連接關係數據;對該輸入神經元的連接關係數據和該權值的連接關係數據進行與操作,以得到該第三連接關係數據。
- 根據申請專利範圍第15項的方法,其中,當該輸入神經元的連接關係數據和該權值的連接關係數均以步長的形式表,且表示該輸入神經元的連接關係數據和該權值的連接關係數據的字符串是按照物理地址由低到高的順序存儲時,該對該輸入神經元的連接關係數據和該權值的連接關係數據進行處理,以得到該第二連接關係數據,包括:將該輸入神經元的連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成該第三連接關係數據;同理,對該權值的連接關係數據的字符串進行同樣的處理,得到一第四連接關係數據;從該第三連接關係數據的字符串和該第四連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;將該新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相減,得到的元素組成該第三連接關係數據。
- 根據申請專利範圍第15項的方法,其中,當表示該輸入神經元的連接關係數據和該權值的連接關係數據的字符串是按照物理地址由低到高的順序存儲時,該對該輸入神經元的連接關係數據和該權值的連接關係數據進行處理,以得到該第二連接關係數據,包括:當該輸入神經元的關係數據是以步長索引的形式表示,該權值的連接關係數據是以直接索引的形式表示時,將該權值的連接關係數據轉換成以步長索引的形式表示的連接關係數據; 當該權值的關係數據是以步長索引的形式表示,該輸入神經元的連接關係數據是以直接索引的形式表示時,將該輸入神經元的連接關係數據轉換成以步長索引的形式表示的連接關係數據;將該輸入神經元的連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成該第三連接關係數據;同理,對該權值的連接關係數據的字符串進行同樣的處理,得到該第四連接關係數據;從該第三連接關係數據的字符串和該第四連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;將該新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相減,得到的元素組成該第三連接關係數據。
- 根據申請專利範圍第15-20項任一項的方法,其中,該輸入神經元的連接關係數據和該權值的連接關係數據以直接索引或者步長索引的形式表示;當該輸入神經元的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示該輸入神經元的絕對值小於或者等於一第一閾值,1表示該輸入神經元的絕對值大於該第一閾值;當該輸入神經元的連接關係數據以步長索引形式表示時,該連接關係數據為絕對值大於該第一閾值的輸入神經元與上一個絕對值大於該第一閾值的輸入神經元之間的距離值組成的字符串;當該權值的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示該權值的絕對值小於或者等於一第二閾值,即該權值 對應的輸入神經元與輸出神經元之間沒有連接,1表示該權值的絕對值大於該第二閾值,即該權值對應的輸入神經元與輸出神經元之間有連接;以直接索引形式表示權值的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示該權值的連接關係數據;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示該權值的連接關係數據;當該權值的連接關係數據以步長索引的形式表示時,該連接關係數據為與輸出神經元有連接的輸入神經元的與上一個與該輸出神經元有連接的輸入神經元之間的距離值組成的字符串。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711343478.4A CN109902811B (zh) | 2017-12-11 | 2017-12-11 | 神经网络运算设备和方法 |
CN201711343478.4 | 2017-12-11 | ||
??201711343478.4 | 2017-12-11 | ||
CN201711315639.9A CN109902810B (zh) | 2017-12-11 | 2017-12-11 | 神经网络运算设备和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201928792A TW201928792A (zh) | 2019-07-16 |
TWI771539B true TWI771539B (zh) | 2022-07-21 |
Family
ID=66819989
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107125682A TWI791569B (zh) | 2017-12-11 | 2018-07-25 | 神經網絡運算設備和方法 |
TW107144031A TWI771539B (zh) | 2017-12-11 | 2018-12-07 | 神經網絡運算設備和方法 |
TW107144032A TWI775998B (zh) | 2017-12-11 | 2018-12-07 | 神經網絡運算設備和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107125682A TWI791569B (zh) | 2017-12-11 | 2018-07-25 | 神經網絡運算設備和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107144032A TWI775998B (zh) | 2017-12-11 | 2018-12-07 | 神經網絡運算設備和方法 |
Country Status (5)
Country | Link |
---|---|
US (4) | US11657258B2 (zh) |
EP (3) | EP3633557A4 (zh) |
CN (9) | CN109902814B (zh) |
TW (3) | TWI791569B (zh) |
WO (1) | WO2019114649A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3735658A1 (en) * | 2018-07-12 | 2020-11-11 | Huawei Technologies Co. Ltd. | Generating a compressed representation of a neural network with proficient inference speed and power consumption |
US10963390B2 (en) * | 2018-08-21 | 2021-03-30 | Neuchips Corporation | Memory-adaptive processing method for convolutional neural network and system thereof |
JP6852141B2 (ja) * | 2018-11-29 | 2021-03-31 | キヤノン株式会社 | 情報処理装置、撮像装置、情報処理装置の制御方法、および、プログラム |
CN110597756B (zh) * | 2019-08-26 | 2023-07-25 | 光子算数(北京)科技有限责任公司 | 一种计算电路以及数据运算方法 |
CN112749782A (zh) * | 2019-10-31 | 2021-05-04 | 上海商汤智能科技有限公司 | 数据处理方法及相关产品 |
KR20210084123A (ko) * | 2019-12-27 | 2021-07-07 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
CN111260051B (zh) * | 2020-02-01 | 2024-05-14 | 上海寒武纪信息科技有限公司 | 神经网络运算方法及相关装置 |
CN111553471A (zh) * | 2020-07-13 | 2020-08-18 | 北京欣奕华数字科技有限公司 | 一种数据分析处理方法及装置 |
CN111930671B (zh) * | 2020-08-10 | 2024-05-14 | 中国科学院计算技术研究所 | 异构智能处理器、处理方法及电子设备 |
CN111930672B (zh) * | 2020-08-10 | 2024-03-01 | 中国科学院计算技术研究所 | 异构智能处理器及电子设备 |
CN111930674B (zh) * | 2020-08-10 | 2024-03-05 | 中国科学院计算技术研究所 | 乘累加运算装置及方法、异构智能处理器及电子设备 |
CN112272074B (zh) * | 2020-10-27 | 2022-11-25 | 国网内蒙古东部电力有限公司电力科学研究院 | 一种基于神经网络的信息传输速率控制方法及系统 |
CN115150614A (zh) * | 2021-03-30 | 2022-10-04 | 中国电信股份有限公司 | 图像特征的传输方法、装置和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130204818A1 (en) * | 2012-02-02 | 2013-08-08 | Chen-Sen Ouyang | Modeling method of neuro-fuzzy system |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
TWI607387B (zh) * | 2016-11-25 | 2017-12-01 | 財團法人工業技術研究院 | 字符辨識系統及其字符辨識方法 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5278945A (en) | 1992-01-10 | 1994-01-11 | American Neuralogical, Inc. | Neural processor apparatus |
US7367503B2 (en) * | 2002-11-13 | 2008-05-06 | Sandisk Corporation | Universal non-volatile memory card used with various different standard cards containing a memory controller |
CN101625759B (zh) * | 2009-07-30 | 2011-10-12 | 重庆医科大学 | 图像质量评价方法 |
US8385192B2 (en) * | 2009-08-11 | 2013-02-26 | International Business Machines Corporation | Deduplicated data processing rate control |
US8983885B1 (en) * | 2012-09-10 | 2015-03-17 | FEM, Inc. | Prospective media content generation using neural network modeling |
WO2015058216A1 (en) * | 2013-10-20 | 2015-04-23 | Pneuron Corp. | Event-driven data processing system |
JP6204168B2 (ja) * | 2013-11-27 | 2017-09-27 | 株式会社日立製作所 | 転送装置、サーバ、および経路変更方法 |
US9460384B2 (en) * | 2013-12-11 | 2016-10-04 | Qualcomm Incorporated | Effecting modulation by global scalar values in a spiking neural network |
US10339447B2 (en) * | 2014-01-23 | 2019-07-02 | Qualcomm Incorporated | Configuring sparse neuronal networks |
CN103929210B (zh) * | 2014-04-25 | 2017-01-11 | 重庆邮电大学 | 一种基于遗传算法与神经网络的硬判决译码方法 |
US10394851B2 (en) * | 2014-08-07 | 2019-08-27 | Cortical.Io Ag | Methods and systems for mapping data items to sparse distributed representations |
CN104346607B (zh) * | 2014-11-06 | 2017-12-22 | 上海电机学院 | 基于卷积神经网络的人脸识别方法 |
CN104598971A (zh) * | 2015-01-15 | 2015-05-06 | 宁波大学 | 基于径向基函数神经网络的单位脉冲响应函数提取方法 |
CN104679868B (zh) * | 2015-03-06 | 2017-09-26 | 四川深度信息技术有限责任公司 | 一种基于数据间关联关系的遗漏数据填补方法 |
US20160358075A1 (en) * | 2015-06-08 | 2016-12-08 | The Regents Of The University Of Michigan | System for implementing a sparse coding algorithm |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN107316078B (zh) * | 2016-04-27 | 2021-05-07 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN106250939B (zh) * | 2016-07-30 | 2020-07-24 | 复旦大学 | 基于fpga+arm多层卷积神经网络的手写体字符识别方法 |
CN107239825B (zh) * | 2016-08-22 | 2021-04-09 | 赛灵思电子科技(北京)有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
WO2018034682A1 (en) * | 2016-08-13 | 2018-02-22 | Intel Corporation | Apparatuses, methods, and systems for neural networks |
CN106779068A (zh) * | 2016-12-05 | 2017-05-31 | 北京深鉴智能科技有限公司 | 调整人工神经网络的方法和装置 |
CN108734279B (zh) * | 2017-04-20 | 2021-04-23 | 上海寒武纪信息科技有限公司 | 一种运算装置和方法 |
US20180330235A1 (en) * | 2017-05-15 | 2018-11-15 | National Taiwan University | Apparatus and Method of Using Dual Indexing in Input Neurons and Corresponding Weights of Sparse Neural Network |
CN107729990B (zh) | 2017-07-20 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN109697509B (zh) | 2017-10-24 | 2020-10-20 | 上海寒武纪信息科技有限公司 | 处理方法及装置、运算方法及装置 |
CN109993291B (zh) * | 2017-12-30 | 2020-07-07 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
-
2017
- 2017-12-11 CN CN201810042283.4A patent/CN109902814B/zh active Active
- 2017-12-11 CN CN201711371889.4A patent/CN109902817B/zh active Active
- 2017-12-11 CN CN201711343477.XA patent/CN109902815B/zh active Active
- 2017-12-11 CN CN201711315639.9A patent/CN109902810B/zh active Active
- 2017-12-11 CN CN201711371888.XA patent/CN109902816B/zh active Active
- 2017-12-11 CN CN202010526360.0A patent/CN111738431B/zh active Active
- 2017-12-11 CN CN201711343478.4A patent/CN109902811B/zh active Active
- 2017-12-11 CN CN201810042043.4A patent/CN109902813B/zh active Active
- 2017-12-11 CN CN201711371887.5A patent/CN109902812B/zh active Active
-
2018
- 2018-07-25 TW TW107125682A patent/TWI791569B/zh active
- 2018-12-07 TW TW107144031A patent/TWI771539B/zh active
- 2018-12-07 TW TW107144032A patent/TWI775998B/zh active
- 2018-12-10 WO PCT/CN2018/120047 patent/WO2019114649A1/zh unknown
- 2018-12-10 EP EP18889924.9A patent/EP3633557A4/en active Pending
- 2018-12-10 EP EP19214548.0A patent/EP3671573A1/en active Pending
- 2018-12-10 EP EP19214536.5A patent/EP3657400A1/en active Pending
-
2019
- 2019-11-27 US US16/697,196 patent/US11657258B2/en active Active
- 2019-11-27 US US16/697,198 patent/US20200097825A1/en active Pending
- 2019-11-27 US US16/697,191 patent/US11803735B2/en active Active
- 2019-11-27 US US16/697,189 patent/US20200097824A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130204818A1 (en) * | 2012-02-02 | 2013-08-08 | Chen-Sen Ouyang | Modeling method of neuro-fuzzy system |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
TWI607387B (zh) * | 2016-11-25 | 2017-12-01 | 財團法人工業技術研究院 | 字符辨識系統及其字符辨識方法 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI771539B (zh) | 神經網絡運算設備和方法 | |
US11907844B2 (en) | Processing method and accelerating device | |
TWI793225B (zh) | 神經網絡訓練方法及相關產品 | |
US11748601B2 (en) | Integrated circuit chip device | |
TWI791725B (zh) | 神經網絡運算方法、集成電路芯片裝置及相關產品 | |
US20210027137A1 (en) | Computation method and related products of recurrent neural network | |
TWI767098B (zh) | 神經網絡正向運算方法及相關產品 | |
CN110175673B (zh) | 处理方法及加速装置 | |
CN111382864A (zh) | 一种神经网络训练方法及装置 | |
WO2020211783A1 (zh) | 运算数据的量化频率调整方法及相关产品 | |
CN111832710A (zh) | 运算数据的量化频率调整方法及相关产品 |