TWI791569B - 神經網絡運算設備和方法 - Google Patents

神經網絡運算設備和方法 Download PDF

Info

Publication number
TWI791569B
TWI791569B TW107125682A TW107125682A TWI791569B TW I791569 B TWI791569 B TW I791569B TW 107125682 A TW107125682 A TW 107125682A TW 107125682 A TW107125682 A TW 107125682A TW I791569 B TWI791569 B TW I791569B
Authority
TW
Taiwan
Prior art keywords
connection relationship
data
input
relationship data
neural network
Prior art date
Application number
TW107125682A
Other languages
English (en)
Other versions
TW201928790A (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 TW201928790A publication Critical patent/TW201928790A/zh
Application granted granted Critical
Publication of TWI791569B publication Critical patent/TWI791569B/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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution 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
    • 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
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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/0495Quantised networks; Sparse networks; Compressed networks
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural 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

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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (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)
  • Memory System (AREA)
  • Control Of Electric Motors In General (AREA)
  • Electrotherapy Devices (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)
  • Image Analysis (AREA)

Abstract

一種神經網絡處理模塊,其映射單元接收到輸入神經元和權值後,對該輸入神經元和/或權值進行處理,以得到處理後的輸入神經元和處理後的權值;神經網絡處理模塊的運算單元對處理後的輸入神經元和處理後的權值進行人工神經網絡運算。

Description

神經網絡運算設備和方法
本發明涉及神經網絡領域,尤其涉及一種神經網絡運算設備和方法。
人工神經網絡(Artificial Neural Networks, ANNs)簡稱爲神經網絡(Neural Networks, NNs)。它是一種模仿動物神經網絡行爲特徵,進行分布式並行信息處理的算法數學模型。這種網絡依靠系統的複雜程度,通過調整內部大量節點之間的相互連接關係,從而達到處理信息的目的。
神經網絡是一個高計算量和高訪存的算法,權值越多,計算量和訪存量。都會增大。爲了减小計算量和權值數量,從而降低訪存量,因此提出了稀疏神經網絡。稀疏神經網絡的定義爲:在神經網絡中,值爲0的權值的數目很多,並且值爲非0的權值分布沒有規律,則稱該神經網絡爲稀疏神經網絡。定義權值爲0的元素數量與神經網絡所有權值元素數量的比值爲神經網絡的稀疏度,如圖1a所示。
現有技術中,圖形處理器(Graphics Processing Unit,GPU)在執行圖形圖像運算以及科學計算時會涉及稀疏神經網絡的計算,但是由於GPU是專門用來執行圖形圖像運算以及科學計算的設備,沒有對稀疏的卷積神經網絡運算的專門支持,仍然需要大量的前端譯碼工作才能執行稀疏的人工神經網絡運算,帶來了大量的額外開銷。另外GPU只有較小的片上緩存,多層人工神經網絡的模型數據(權值)需要反復從片外搬運,片外帶寬成爲了主要性能瓶頸,同時帶來了巨大的功耗開銷。
本發明實施例提供一種神經網絡運算設備及方法,通過對神經網絡數據進行處理,减小了在進行人工神經網絡運算之前譯碼的工作量,進而减小了額外的開銷,並且提高了運算速率。
第一方面,本發明實施例提供了一種神經網絡運算模塊,包括:
映射單元,用於接收輸入數據之後,對所述輸入數據進行處理,以得到處理後的輸入數據,所述輸入數據包括至少一個輸入神經元和至少一個權值,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值;
存儲單元,用於存儲所述處理後的輸入神經元、處理後的權值、神經網絡指令和運算結果;
直接存儲訪問單元,用於在所述存儲單元與指令緩存單元、第一輸入緩存單元、第二輸入緩存單元和輸出緩存單元進行數據的讀寫;
所述指令緩存單元,用於緩存所述直接存儲訪問單元讀取所述神經網絡指令;
所述第一輸入緩存單元,用於緩存所述直接存儲訪問單元讀取的第一緩存數據,所述第一緩存數據爲所述處理後的輸入神經元或所述處理後的權值;
所述第二輸入緩存單元,用於緩存所述直接存儲訪問單元讀取的第二緩存數據,所述第二緩存數據爲所述處理後的權值或所述處理後的輸入神經元,且所述第二緩存數據與所述第二緩存數據不一致;
指令控制單元,用於從所述指令緩存單元中獲取所述神經網絡指令,並將所述神經網絡指令譯碼成運算單元執行的微指令;
所述運算單元,用於從所述第一輸入緩存單元和所述第二輸入緩存單元中獲取所述處理後的輸入神經元和所述處理後的權值後,根據所述微指令對所述處理後的輸入神經元和所述處理後的權值進行人工神經網絡運算,以得到所述運算結果;
所述輸出緩存單元,用於緩存所述運算結果。
第二方面,本發明實施例提供了另一種神經網絡運算模塊,包括:
存儲單元,用於存儲輸入數據、神經網絡指令和運算結果,所述輸入數據包括至少一個輸入神經元和至少一個權值;
直接內存訪問直接存儲訪問單元,用於在所述存儲單元與指令緩存單元、映射單元和輸出緩存單元進行數據的讀寫;
映射單元,用於通過所述直接存儲訪問單元獲取所述輸入數據後,對所述輸入數據進行處理,以得到處理後的輸入數據,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值,並將所述處理後的輸入神經元和所述處理後的權值存儲到第一輸入緩存單元和第二輸入緩存單元中;
所述第一輸入緩存單元,用於緩存第一緩存數據,所述第一緩存數據爲所述處理後的輸入神經元或處理後的權值;
所述第二輸入緩存單元,用於緩存第二緩存數據,所述第二緩存數據爲所述處理後的輸入神經元或處理後的權值,且所述第二緩存數據與所述第一緩存數據不一致;
所述指令緩存單元,用於緩存所述直接存儲訪問單元讀取神經網絡指令;
指令控制單元,用於從所述指令緩存單元中獲取所述神經網絡指令,並將所述神經網絡指令譯碼成運算單元執行的微指令;
所述運算單元,用於從所述第一輸入緩存單元和所述第二輸入緩存單元中獲取所述處理後的輸入神經元和所述處理後的權值後,根據所述微指令對所述處理後的輸入神經元和所述處理後的權值進行人工神經網絡運算,以得到所述運算結果;
所述輸出緩存單元,用於緩存所述運算結果。
第三方面,本發明實施例提供了另一種神經網絡運算模塊,包括:
存儲單元,用於存儲第一輸入數據及所述第一輸入數據的連接關係數據、處理後的第二輸入數據、神經網絡指令和運算結果,所述第一輸入數據爲輸入神經元權值,所述第一輸入數據的連接關係數據爲輸入神經元的連接關係數據或者權值的連接關係數據,所述處理後的第二輸入數據爲處理後的輸入神經元或者處理後的權值;
直接內存訪問直接存儲訪問單元,用於在所述存儲單元與指令緩存單元、映射單元、第一輸入緩存單元和輸出緩存單元進行數據的讀寫;
映射單元,用於通過所述直接存儲訪問單元獲取所述第一輸入數據和所述第一輸入數據的連接關係數據後,根據所述第一輸入數據的連接關係數據對所述第一輸入數據進行處理,以得到處理後的第一輸入數據,並將所述處理後的第一輸入數據存儲到第一輸入緩存單元中,所述處理後的第一輸入數據爲處理後的輸入神經元或者處理後的權值;
所述第一輸入緩存單元,用於緩存所述處理後的第一輸入數據;
所述第二輸入緩存單元,用於緩存所述處理後的第二輸入數據,且所述處理後的第一輸入數據與所述處理後的第二輸入數據不一致;
所述指令緩存單元,用於緩存所述直接存儲訪問單元讀取神經網絡指令;
指令控制單元,用於從所述指令緩存單元中獲取所述神經網絡指令,並將所述神經網絡指令譯碼成運算單元執行的微指令;
所述運算單元,用於從所述第一輸入緩存單元和所述第二輸入緩存單元中獲取所述處理後的第一輸入數據和所述處理後的第二輸入數據後,根據所述微指令對所述處理後的第一輸入數據和所述處理後的第二輸入數據進行人工神經網絡運算,以得到所述運算結果;
所述輸出緩存單元,用於緩存所述運算結果。
第四方面,本發明實施例提供了一種神經網絡運算方法,包括:
對輸入數據進行處理,以得到處理後的輸入數據;
獲取神經運算指令,將所述神經運算指令譯碼成微指令;
根據所述微指令對所述處理後的輸入數據進行人工神經網絡運算,以得到運算結果。
第五方面,本發明實施例提供了一種神經網絡運算裝置,該神經網絡運算裝置包括一個或者多個第一方面所述的神經網絡運算模塊、第二方面所述的神經網絡運算模塊或者第三方面所述的神經網絡運算模塊。該神經網絡運算裝置用於從其他處理裝置中獲取待運算數據和控制信息,並執行指定的神經網絡運算,將執行結果通過I/O接口傳遞給其他處理裝置;
當所述神經網絡運算裝置包含多個所述神經網絡運算模塊時,所述多個所述神經網絡運算模塊間可以通過特定的結構進行連接並傳輸數據;
其中,多個所述神經網絡運算模塊通過快速外部設備互連總線(Peripheral Component Interconnect-Express,PCI-E或PCIe)PCIE總線進行互聯並傳輸數據,以支持更大規模的神經網絡的運算;多個所述神經網絡運算模塊共享同一控制系統或擁有各自的控制系統;多個所述神經網絡運算模塊共享內存或者擁有各自的內存;多個所述神經網絡運算模塊的互聯方式是任意互聯拓撲。
第六方面,本發明實施例提供了一種組合處理裝置,該組合處理裝置包括如第五方面所述的神經網絡處理裝置、通用互聯接口,和其他處理裝置。該神經網絡運算裝置與上述其他處理裝置進行交互,共同完成用戶指定的操作。
第七方面,本發明實施例提供了一種神經網絡芯片,該神經網絡芯片包括上述第一方面所述的神經網絡運算模塊、上述第二方面所述的神經網絡運算模塊、上述第三方面所述的神經網絡運算模塊、上述第五方面所述的神經網絡運算裝置或者上述第六方面所述的組合處理裝置。
第八方面,本發明實施例提供了一種神經網絡芯片封裝結構,該神經網絡芯片封裝結構包括上述第七方面所述的神經網絡芯片;
第九方面,本發明實施例提供了一種板卡,該板卡包括上述第八方面所述的神經網絡芯片封裝結構。
第十方面,本發明實施例提供了一種電子裝置,該電子裝置包括上述第七方面所述的神經網絡芯片或者上述第九方面所述的板卡。
可以看出,在本發明實施例的方案中,映射單元對輸入神經元和權值進行處理,以得到處理後的輸入神經元和處理後的權值,運算單元根據指令控制單元對神經網絡指令進行譯碼得到的微指令對處理後的輸入神經元和處理後的權值進行人工神經網絡運算。與現有技術相比,採用本發明實施例减小了在進行人工神經網絡運算之前譯碼的工作量,進而减小了額外的開銷,並且提高了運算速率。
本發明的這些方面或其他方面在以下實施例的描述中會更加簡明易懂。
爲了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式僅僅是本發明的一些實施例,對於所屬技術領域中具有通常知識者來講,在不付出創造性勞動的前提下,還可以根據這些圖式獲得其他的圖式。
以下分別進行詳細說明。
本發明的說明書和申請專利範圍及所述圖式中的術語“第一”、“第二”、“第三”和“第四”等是用於區別不同對象,而不是用於描述特定順序。此外,術語“包括”和“具有”以及它們任何變形,意圖在於覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統、産品或設備沒有限定於已列出的步驟或單元,而是可選地還包括沒有列出的步驟或單元,或可選地還包括對於這些過程、方法、産品或設備固有的其它步驟或單元。
在本文中提及“實施例”意味著,結合實施例描述的特定特徵、結構或特性可以包含在本發明的至少一個實施例中。在說明書中的各個位置出現該短語並不一定均是指相同的實施例,也不是與其它實施例互斥的獨立的或備選的實施例。所屬技術領域中具有通常知識者顯式地和隱式地理解的是,本文所描述的實施例可以與其它實施例相結合。
參見圖1b,圖1b爲本發明實施例提供的一種神經網絡運算模塊的結構示意圖。該神經網絡運算模塊用於加速稀疏神經網絡的運算。如圖1b所示,該神經網絡運算模塊包括:映射單元101和運算單元108,進一步可選的,該神經網絡運算模塊還可以進一步包括:存儲單元102、直接存儲訪問(Direct Memory Access, DMA)單元103、指令緩存單元104、第一輸入緩存單元105、第二輸入緩存單元106、指令控制單元107和輸出緩存單元109。其中,圖1b僅是神經網絡運算模塊的一種結構示意圖,神經網絡運算模塊中包括的各個單元的位置關係不限於圖1b。舉例來說,映射單元101可位於圖第一輸入緩存單元105和第二輸入緩存單元106之前(即圖1b所示的左側),也可位於第一輸入緩存單元105和第二輸入緩存單元106之前(圖1b未示)。
其中,上述映射單元101,用於接收輸入數據之後,對所述輸入數據進行處理,以得到處理後的輸入數據,所述輸入數據包括至少一個輸入神經元和至少一個權值,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值。
上述輸入數據包括至少一個輸入神經元和至少一個權值。上述映射單元101確定所述至少一個輸入神經元中每個輸入神經元的絕對值是否大於第一閾值。當上述輸入神經元的絕對值小於或者等於該第一閾值時,上述映射單元101將該輸入神經元删除;當上述輸入神經元的絕對值大於上述第一閾值時,上述映射單元101保留該輸入神經元,該映射單元101將删除後的輸出神經元輸出,作爲處理後的輸入神經元。上述映射單元101獲取輸入神經元的連接關係數據,該輸入神經元的連接關係數據表示上述至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元的位置信息。上述映射單元101確定上述至少一個權值中每個權值的絕對值是否大於第二閾值。當權值的絕對值小於或者等於上述第二閾值時,上述映射單元101將該權值删除,並根據上述輸入神經元的連接關係數據將從上述删除後的權值中選擇相關的權值輸出,作爲處理後的權值。
在一種可行的實施例中,上述輸入數據包括至少一個輸入神經元和至少一個權值。上述映射單元101確定所述至少一個權值中每個權值的絕對值是否大於第二閾值。當上述權值的絕對值小於或者等於該第二閾值時,上述映射單元101將該權值删除;當上述權值的絕對值大於上述第二閾值時,上述映射單元101保留該權值,該映射單元101將删除後的權值輸出,作爲處理後的權值。上述映射單元101獲取權值的連接關係數據,該權值的連接關係數據表示上述至少一個輸入神經元與輸出神經元之間的連接關係的數據。上述映射單元101確定上述至少一個輸入神經元中每個輸入神經元的絕對值是否大於第一閾值。當輸入神經元的絕對值小於或者等於上述第一閾值時,上述映射單元101將該輸入神經元删除,並根據上述權值的連接關係數據將從上述删除後的輸入神經元中選擇相關的輸入神經元輸出,作爲處理後的輸入神經元。
進一步地,上述映射單元101將上述處理後的輸入神經元和處理後的權值按照一一對應的格式存儲到上述存儲單元102中。
具體地,上述映射單元101對上述處理後的輸入神經元和上述處理後的權值按照一一對應的格式進行存儲的具體方式是將上述處理後的輸入神經元中的每個處理後的輸入神經元和與其對應的處理後的權值作爲一個數據集,並將該數據集存儲到上述存儲單元102中。
具體地,如圖2所示,上述映射單元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.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確定上述輸入神經元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 分別作爲一個數據集,並將該數據集存儲到上述存儲單元102中;對於輸出神經元o2,上述映射單元101將上述i2與w22 和i3與w32 分別作爲一個數據集,並將該數據集存儲到上述存儲單元102中。
針對上述輸出神經元o1,上述第二輸出數據爲w11 ,w31 和w41 ;針對上述輸出神經元o2,上述第二輸出數據爲w22 和w32
當上述第二輸入數據爲輸入神經元i1、i2、i3和i4,且該輸入神經元的值分別爲1,0,3,5則上述連接關係數據(即上述第三輸出數據)爲“1011”,上述第二輸出數據爲1,3,5。
如圖3中的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 分別作爲一個數據集,並將該數據集存儲到上述存儲單元102中;對於輸出神經元o2,上述映射單元101將上述i2與w22 和i3與w32 分別作爲一個數據集,並將該數據集存儲到上述存儲單元102中。
針對上述輸出神經元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將上述處理後的輸入神經元和處理後的權值按照一一對應的格式存儲到上述存儲單元102中。
具體地,上述映射單元101對上述處理後的輸入神經元和上述處理後的權值按照一一對應的格式進行存儲的具體方式是將上述處理後的輸入神經元中的每個處理後的輸入神經元和與其對應的處理後的權值作爲一個數據集,並將該數據集存儲到上述存儲單元102中。
對於映射單元101包括第一稀疏處理單元1011和第一數據處理單元1012的情况,映射單元101中的稀疏處理單元1011對輸入神經元或者權值進行稀疏化處理,减小了權值或者輸入神經元的數量,進而减小了運算單元進行運算的次數,提高了運算效率。
具體地,如圖4所示,上述映射單元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將上述處理後的輸入神經元中的每個處理後的輸入神經元與其對應的處理後的權值作爲一個數據集,將該數據集存儲出上述存儲單元102中。
舉例說明,假設上述第三輸入數據包括輸入神經元i1,i2,i3和i4,上述第四輸入數據包括權值w11 ,w21 ,w31 和w41 ,上述第三連接關係數據以直接索引方式表示,爲“1010”,則上述第二數據處理單元1016輸出的第四輸出數據爲輸入神經元i1和i3,輸出的第五輸出數據爲權值w11 和w31 。上述第二數據處理單元1016將輸入神經元i1與權值w11 和輸入神經元i3與權值w31 分別作爲一個數據集,並將該數據集存儲到上述存儲單元102中。
對於映射單元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或者該第六閾值爲其他值。
需要說明的是,上述第三閾值和上述第五閾值可相同或者不同,上述第四閾值和上述第六閾值可相同或者不同。
上述存儲單元102,用於存儲上述處理後的輸入神經元、處理後的權值和神經網絡指令。
上述直接存儲訪問單元103,用於在上述存儲單元102與上述指令緩存單元104、第一輸入緩存單元105、第二輸入緩存單元106和輸出緩存單元109之間進行數據的讀寫。
具體地,上述直接存儲訪問單元103從上述存儲單元102中讀取神經網絡指令,並將該神經網絡指令寫入上述指令緩存單元104中。上述直接存儲訪問單元103從上述存儲單元102讀取上述處理後的輸入神經元和處理後的權值,並將該輸入神經元和權值分別寫入上述第一輸入緩存單元105和上述第二輸入緩存單元106,或者分別寫入上述第二輸入緩存單元106和上述第一輸入緩存單元105。
上述指令緩存單元104,用於緩存上述直接存儲訪問單元103讀取的神經網絡指令。
上述第一輸入緩存單元105,用於緩存上述直接存儲訪問單元103讀取的處理後的輸入神經元或處理後的權值。
上述第二輸入緩存單元106,用於緩存上述直接存儲訪問單元103讀取的處理後的輸入神經元或處理後的權值。
需要說明的是,當上述第一輸入緩存單元105用於緩存處理後的輸入神經元時,則上述第二輸入緩存單元106用於緩存處理後的權值;當上述第二輸入緩存單元105用於緩存處理後的權值時,則上述第一輸入緩存單元106用於緩存處理後的輸入神經元。
需要說明的是,第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值可均存儲在上述存儲單元102、第一輸出緩存單元105或者第二輸入緩存單元106中;上述第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值中部分閾值存儲在上述存儲單元102、部分閾值存儲在上述第一輸出緩存單元105中,部分閾值存儲在上述第二輸出緩存單元106中。
上述指令控制單元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相關的一個池化核中的數據。
可以看出,在本發明實施例的方案中,上述映射單元中的稀疏處理單元對輸入神經元和權值進行處理,剔除絕對值小於或等於上述閾值的輸入神經元和權值,减少了輸入神經元和權值的數量,减少了額外的開銷,運算單元根據處理後的輸入神經元和權值進行人工神經網絡運算,提高了運算的效率。
需要說明的是,上述神經網絡運算模塊不僅可以進行稀疏神經網絡運算,還可以進行稠密神經網絡運算。上述神經網絡運算模塊特別適用於稀疏神經網絡的運算,是因爲稀疏神經網絡裏0值數據或者絕對值很小的數據非常多。通過映射單元可以提出這些數據,在保證運算精度的情况下,可提高運算的效率。
參見圖5,圖5爲本發明實施例提供的另一種神經網絡運算模塊的結構示意圖,如圖5所示,該神經網絡運算模塊包括映射單元501和運算單元508,進一步可選的,該神經網絡運算模塊還可以包括存儲單元502、直接存儲訪問單元503、指令緩存單元504、第一輸入緩存單元505、第二輸入緩存單元506、指令控制單元507和輸出緩存單元509。
上述存儲單元502,用於存儲輸入數據、神經網絡指令和運算結果,所述輸入數據包括至少一個輸入神經元和至少一個權值。
上述直接存儲訪問單元503,用於在所述存儲單元502與指令緩存單元504、映射單元501和輸出緩存單元509之間進行數據的讀寫。
具體地,上述直接存儲訪問單元從上述存儲單元502中讀取神經網絡指令,並將該神經網絡指令寫入上述指令緩存單元504中。上述直接存儲訪問單元503從上述存儲單元502讀取上述輸入神經元和權值,並將該輸入神經元和權值寫入上述映射單元501。上述直接存儲訪問單元503從上述輸出緩存單元509讀取上述運算結果後,將該運算結果寫入上述存儲單元502中。
上述映射單元501,用於通過所述直接存儲訪問單元503獲取所述輸入數據後,對所述輸入數據進行處理,以得到處理後的輸入數據,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值,並將所述處理後的輸入神經元和所述處理後的權值存儲到第一輸入緩存單元505和第二輸入緩存單元506中。
具體的,上述映射單元501將上述處理後的輸入神經元和上述處理後的權值分別存儲到上述第一輸入緩存單元505和第二輸入緩存單元506中,或者分別存儲到上述第二輸入緩存單元506和第一輸入緩存單元505。
需要說明的是,上述映射單元501的具體功能可參見上述圖1所示的實施例中映射單元101(包括第二稀疏處理單元1013、第三稀疏處理單元1014、連接關係處理單元1015和第二數據處理單元1016)的相關描述,在此不再叙述。在本實施例中第一輸入數據和第二輸入數據分別與圖1所示實施例中的第三輸入數據和第四輸入數據一致,本實施例中的第一輸出數據和第二輸出數據分別與圖1所示實施例中的第四輸出數據和第五輸出數據一致。
上述第一輸入緩存單元505,用於緩存第一緩存數據,所述第一緩存數據爲所述處理後的輸入神經元或處理後的權值。
上述第二輸入緩存單元506,用於緩存第二緩存數據,所述第二緩存數據爲所述處理後的輸入神經元或處理後的權值,且所述第二緩存數據與所述第一緩存數據不一致。
上述指令緩存單元504,用於緩存所述直接存儲訪問單元503讀取神經網絡指令。
上述指令控制單元507,用於從所述指令緩存單元504中獲取所述神經網絡指令,並將所述神經網絡指令譯碼成運算單元508執行的微指令。
上述運算單元508,用於從所述第一輸入緩存單元505和所述第二輸入緩存單元506中獲取所述處理後的輸入神經元和所述處理後的權值後,根據所述微指令對所述處理後的輸入神經元和所述處理後的權值進行人工神經網絡運算,以得到所述運算結果。
需要說明的是,上述運算單元508的功能描述可參見上述圖1所示的運算單元108的相關描述,在此不再叙述。
上述輸出緩存單元509,用於緩存所述運算結果。
需要說明的是,第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值可均存儲在上述存儲單元502、第一輸出緩存505或者第二輸入緩存506中;上述第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值中部分閾值存儲在上述存儲單元502、部分閾值存儲在上述第一輸出緩存505中,部分閾值存儲在上述第二輸出緩存506中。
需要指出的是,上述指令緩存單元504、上述第一輸入緩存單元505、上述第二輸入緩存單元506和上述輸出緩存單元509均可爲片上緩存。
可以看出,在本發明實施例的方案中,映射單元中的第四稀疏處理單元和第五稀疏處理單元分別對輸入神經元和權值進行處理,以分別得到第一連接關係數據和第二連接關係數據。連接關係處理單元對上述第一連接關係數據和第二連接關係數據進行處理,得到第三連接關係數據。第三數據處理單元根據第三連接關係數據對上述第一輸入數據進行處理以得到第一輸出數據並輸出,同理,根據第三連接關係數據對上述第二輸入數據進行處理以得到第二輸出數據並輸出。通過對輸入神經元和權值進行處理,得到處理後的輸入神經元和權值,减小了輸入數據的數據量,進而减小了總的運算量,提高了運算速度,同時也减小了額外的開銷。
需要說明的是,上述神經網絡運算模塊不僅可以進行稀疏神經網絡運算,還可以進行稠密神經網絡運算。上述神經網絡運算模塊特別適用於稀疏神經網絡的運算,是因爲稀疏神經網絡裏0值數據或者絕對值很小的數據非常多。通過映射單元可以提出這些數據,在保證運算精度的情况下,可提高運算的效率。
參見圖6、圖6爲本發明實施例提供的另一種神經網絡運算模塊的結構示意圖。如圖6所示,該神經網絡運算模塊包括映射單元601和運算單元608,進一步可選的,該神經網絡運算模塊還可以進一步包括存儲單元602、直接存儲訪問單元603、指令緩存單元604、第一輸入緩存單元605、第二輸入緩存單元606、指令控制單元607和輸出緩存單元609。
其中,上述存儲單元602,用於存儲第一輸入數據及所述第一輸入數據的連接關係數據、處理後的第二輸入數據、神經網絡指令和運算結果,所述第一輸入數據爲輸入神經元權值,所述第一輸入數據的連接關係數據爲輸入神經元的連接關係數據或者權值的連接關係數據,所述處理後的第二輸入數據爲處理後的輸入神經元或者處理後的權值。
上述直接存儲訪問單元603,用於在上述存儲單元602與上述指令緩存單元604、上述映射單元601、上述第一輸入緩存單元605和上述輸出緩存單元609之間進行數據讀寫。
具體地,上述直接存儲訪問單元603從上述存儲單元602中讀取上述神經網絡指令,並將該神經網絡指令寫入上述指令緩存單元604中;
從上述存儲單元602中讀取上述輸入神經元及該輸入神經元的連接關係數據,並將該輸入神經元及其連接關係數據寫入上述映射單元601中;從上述存儲單元602中讀取處理後的權值,並將該權值寫入上述第二輸入緩存單元606,或者;
從上述存儲單元602中讀取上述權值和該權值的連接關係數據,並將該權值及其連接關係數據寫入上述映射單元601中;從上述存儲單元602中讀取處理後的輸入神經元,並將該處理後的輸入神經元寫入上述第二輸入緩存單元606;
從上述輸出緩存單元609中讀取所述運算結果,並將該運算結果寫入上述存儲單元602中。
其中,如圖7所示,上述映射單元601包括:
輸入數據緩存單元6011,用於緩存第一輸入數據,該第一輸入數據包括至少一個輸入神經元或者至少一個權值。
連接關係緩存單元6012,用於緩存第一輸入數據的連接關係數據,即上述輸入神經元的連接關係數據或者上述權值的連接關係數據。
其中,上述輸入神經元的連接關係數據爲用於表示該輸入神經元中絕對值是否小於或者等於第一閾值的字符串,上述權值的連接關係數據爲表示該權值絕對值是否小於或者等於上述第一閾值的字符串,或者爲表示該權值對應的輸入神經元和輸出神經元之間是否有連接的字符串。該輸入神經元的連接關係數據和權值的連接關係數據可以直接索引或者步長索引的形式表示。
需要說明的是,上述直接索引和步長索引的描述可參見上述圖1b所示實施例的相關描述。
第四稀疏處理單元6013,用於根據所述第一輸入數據的連接關係數據對所述第一輸入數據進行處理,以得到處理後的第一輸入數據,並將該處理後的第一輸入數據存儲到上述第一輸入緩存單元中605。
其中,當上述第一輸入數據爲至少一個輸入神經元時,上述第四稀疏處理單元6013在一個時鐘周期處理一個輸入神經元和一個連接關係,即在一個時鐘周期從S1個輸入神經元中選擇一個有效的輸入神經元,S1爲大於1的整數。
在一種可行的實施例中,上述第四稀疏處理單元6013在一個時鐘周期處理多個輸入神經元和多個連接關係數據,即一個時鐘周期從S1個輸入神經元中選出有效的S2個輸入數據,上述S2爲大於0且小於或者等於該S1的整數。
舉例說明,如圖8所示,上述輸入神經元爲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,如圖8所示。上述第四稀疏處理單元6013將上述輸入神經元i1,i3和i4存儲到上述第一輸入緩存單元605中。
再舉例說明,如圖9所示,輸入神經元爲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,如圖9所示。上述第四稀疏處理單元6013將上述輸出神經元i2和i4和存儲到上述第一輸入緩存單元605中。
舉例說明,如圖10所示,輸入數據爲輸入神經元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,如圖10所示。上述第四稀疏處理單元6013將上述輸入神經元i1,i3和i4存儲到上述第一輸入緩存單元605中。
再舉例說明,如圖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存儲到上述第一輸入緩存單元605中。
在一種可行的實施例中,上述輸入數據緩存單元6011用於緩存的第一輸入數據包括至少一個權值,上述連接關係緩存單元6012緩存的數據爲上述權值的連接關係數據,且上述至少一個權值的絕對值均大於第一閾值時,上述第四稀疏處理單元6013根據上述權值的連接關係數據,將沒有連接關係的輸入神經元和輸出神經元之間的權值的值置爲0,並將該值爲0的權值和上述至少一個權值存儲到上述第二輸入緩存單元606中。
舉例說明,權值的形式爲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 存儲到上述第二輸入緩存單元606中。
上述第一輸入緩存單元605,用於緩存上述處理後的輸入神經元。
上述第二輸入緩存單元606,用於緩存從上述存儲單元602中讀取的處理的權值。
在一種可行的實施例中,當上述第一輸入數據爲至少一個權值時,上述第四稀疏處理單元6013在一個時鐘周期處理一個權值和一個連接關係,即在一個時鐘周期從S3個權值中選擇一個有效的權值,該S3爲大於1的整數。
可選地,上述第四稀疏處理單元6013在一個時鐘周期處理多個權值和多個連接關係數據,即一個時鐘周期從S3個權值中選出有效的S4個權值,上述S4爲大於0且小於或者等於該S3的整數。
上述第一輸入緩存單元605,用於緩存上述處理後的權值。
上述第二輸入緩存單元606,用於緩存從上述存儲單元602中讀取的處理的輸入神經元。
需要說明的是,上述相關描述可參見圖8-圖11的相關描述,在此不再叙述。
可選地,所述映射單元601對所述第一輸入數據進行處理之前,所述映射單元601還用於:
對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M爲大於或者等於1的整數;
判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;
當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元删除;
對所述至少一個權值進行分組,以得到N組權值,所述N爲大於或者等於1的整數;
判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;
當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值删除。
需要說明的是,上述相關描述可參見圖1所示實施例中的相關描述,在此不再叙述。
需要說明的是,第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值可均存儲在上述存儲單元602或者第一輸出緩存單元605中;上述第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值中部分閾值存儲在上述存儲單元602、部分閾值存儲在上述第一輸出緩存單元605中。
上述指令控制單元607,用於從上述指令緩存單元604中獲取神經網絡指令後,將該神經網路指令譯碼成運算單元608執行的微指令。
上述運算單元608,用於從上述第一輸入緩存605和上述第二輸入緩存606中獲取上述處理後的輸入神經元和處理後的權值後,根據從上述微指令對上述處理後的權值和處理後的輸入神經元進行人工神經網絡運算,並將運算結果存儲到上述輸出緩存單元609中。
上述輸出緩存單元609,用於緩存上述運算單元608進行人工神經網絡運算得到的運算結果。
需要指出的是,上述指令緩存單元604、上述第一輸入緩存單元605、上述第二輸入緩存單元606和上述輸出緩存單元609均可爲片上緩存。
需要說明的是,上述圖1b、圖5和圖6所示實施例中的片上緩存是位於神經網絡運算模塊和內存之間的臨時存儲器,它的容量比內存小,但是交換速度快。片上緩存中的數據是內存中數據的一小部分,這一小部分數據是神經網絡運算模塊即將要訪問的數據,當神經網絡運算模塊需要讀寫數據時,就可以直接訪問片上緩存,從而加快讀寫數據的速度。
需要說明的是,上述圖1b、圖5和圖6所示的實施例中的權值的連接關係數據的表示方式除了直接索引和步長索引之外,還可爲以下幾種情况:
方式一:列表的列表(List of Lists,LIL)
以LIL的形式表示具體是將上述權值矩陣的每一行的非零權值的信息存儲在一個列表中,該列表中的每個記錄包括非零權值的列索引及該非零權值的值。
舉例說明,假設上述權值矩陣爲
Figure 02_image001
,則該權值矩陣的連接關係數據用LIL的形式表示爲((1,x1) ,(2,x4) ,((1,x2), (2,x5)), (1,x3))。該連接關係數據中有4個列表,表示該權值矩陣對應的輸入神經元的數量爲4個,分別爲i1,i2,i3和i4。上述LIL中列表中最多有兩個記錄,由此可知該權值矩陣對應的輸出神經元個數爲2,分別爲o1和o2。上述第一個列表中的記錄(1,x1)表示輸入神經元i1與輸出神經元o1之間的權值爲x1,上述第二個列表中的記錄(2,x4)表示輸入神經元i2與輸出神經元o2之間的權值爲x4,上述第三個列表中的記錄(1,x2)表示輸入神經元i3與輸出神經元o1之間的權值爲x2,記錄(2,x5)表示輸入神經元i3與輸出神經元o1之間的權值爲x5,上述第四個列表中的記錄(1,x3)表示輸入神經元i4與輸出神經元o1之間的權值爲x3。因此由上述LIL可得到如圖12所示的神經網絡結構。
對於上述輸出神經元o1,上述映射單元輸出權值x1,x2和x3,該權值x1,x2和x3分別對應輸入神經元i1,i3和i4;對於上述輸出神經元o2,上述映射單元輸出權值x4和x5,該權值x4和x5分別對應輸入神經元i2和i3。上述映射單元將上述權值x1,x2和x3與x4和x5存儲到上述第一輸入緩存單元中。
上述以LIL的形式表示上述權值的連接關係數據的優點在於簡單,可快速構造矩陣,方便修改(按照列索引的大小順序存儲記錄時),支持靈活的切片操作。
方式二:坐標列表(Coordinate list,COO)
該坐標列表爲由至少一個元組組成的列表,該元組包括非零權值在上述權值矩陣中的行號,列號和該非零權值的值組成的。每個元組表示序號爲行號的輸入神經元與序號爲列號的輸出神經元之間的權值爲該元組對應的非零權值。並且坐標列表的元組中的最大行號值爲權值矩陣對應的輸入神經元的個數,最大列號值爲權值矩陣對應的輸出神經元的個數。
換句話說,上述坐標列表中每個元組表示非零權值在權值矩陣的位置信息。
舉例說明,假設上述權值矩陣爲
Figure 02_image001
,則該權值矩陣的連接關係數據以COO的形式表示爲(1,1,x1),(2,2,x4),(3,1,x2),(3,2,x5),(4,1,x3),該COO的元組中最大行號值爲4和最大的列號值爲2,該權值矩陣對應的輸入神經元個數爲4和輸出神經元的個數爲2,分別爲輸入神經元i1,i2,i3、i4和輸出神經元o1,o2,由元組(1,1,x1)可知輸入神經元i1與輸出神經元o1之間的權值爲x1,由元組(2,2,x4)可知輸入神經元i2與輸出神經元o2之間的權值爲x4,由元組(3,1,x2)可知輸入神經元i3與輸出神經元o1之間的權值爲x2,由元組(3,2,x5)可知輸入神經元i3與輸出神經元o2之間的權值爲x5,由元組(4,1,x3)可知輸入神經元i4與輸出神經元o1之間的權值爲x3。由上述坐標列表可得到如圖12所示的神經網絡結構。
對於上述輸出神經元o1,上述映射單元輸出權值x1,x2和x3,該權值x1,x2和x3分別對應輸入神經元i1,i3和i4;對於上述輸出神經元o2,上述映射單元輸出權值x4和x5,該權值x4和x5分別對應輸入神經元i2和i3。上述映射單元將上述權值x1,x2和x3、x4和x5存儲到上述第一輸入緩存單元中。
上述以COO的形式表示上述權值的連接關係數據的優點在於簡單,可以快速構建矩陣,方便修改。這種方法在矩陣特別稀疏的時候最適用,不管一個矩陣有多麽巨大,若它只有一個非零元素,使用COO只需要3個數字,配合原矩陣的大小即可重建原矩陣,支持快速地與其他格式互相轉化。
方式三:壓縮稀疏行(Compressed Sparse Row,CSR)
採用CSR的形式是把上述權值矩陣行的信息壓縮存儲了,只顯式保留每行第一個非零權值的位置。將上述權值矩陣通過三個數組表示:
上述第一數組存儲上述權值矩陣中的所有非零權值的值,其順序按照從左至右、從上到下的行遍歷方式排列元素,該第一數組記作A。該第一數組的長度即權值矩陣中非零權值的個數;
上述第二數組存儲上述第一數組A中的每個元素分別在權值矩陣中的列索引(即列號),因而第二數組的長度與數組A的長度相同,記此數組爲JA。
上述第三數組記作IA,該數組IA的長度爲權值矩陣的行數加1。該數組IA中的元素累加存儲上述權值矩陣中每一行非零權值的個數,具體可通過如下遞歸方法獲取,並在該數組IA中的最後一個元素中保存整個權值矩陣中非零權值的個數
若上述三個數組的序號與權值矩陣的序號從0開始,可以用如下的遞歸方法定義數組IA:
IA[0]=0
IA[i]=IA[i-1]+權值矩陣中第i-1行的非零權值個數(i>0)
舉例說明,假設上述權值矩陣爲
Figure 02_image003
,由於上述第一數組A存儲權值矩陣的所有非零權值的值,其順序按照從左到右,從上到下的行遍歷方式排列元素,故該第一數組A=[5,8,3,6];第二數組JA存儲上述數組A中每個元素分別在上述權值矩陣中的列索引(即列號),則該數組JA=[0,1,2,1]。在第三數組IA中累加存儲上述權值矩陣中每一行的非零權值的個數,根據上述遞歸方式確定該數組IA=[0,0,2,3,4]。
由上述第一數組A可知上述權值矩陣包括4個非零權值,分別爲5,3,8,6。由上述第二數組JA可知上述4個非零權值在上述權值矩陣中的列索引,即權值5在上述權值矩陣中的第一列,權值8在上述權值矩陣中的第二列,權值3在上述權值矩陣中的第三列,權值6在上述權值矩陣中的第二列,由上述第三數組IA及其定義可知上述權值矩陣的第一行沒有非零權值,第二行有2個非零權值,第三行和第四行各有1個非零權值;由上述信息可得到上述權值矩陣以坐標列表的形式表示爲:(1,0,5),(1,1,8),(2,2,3),(3,1,6),進一步可確定上述權值矩陣。由該權值矩陣的形式可知,該矩陣的第一行和第四列的元素的值均爲0,因此可確定該矩陣對應的輸入神經元爲3個,分別爲i2,i3和i4;該權值矩陣對應的輸出神經元分別爲o1,o2和o3。最終可確定上述輸入神經元i2與輸出神經元o1之間的權值爲5,上述輸入神經元i2與輸出神經元o2之間的權值爲8,上述輸入神經元i3與輸出神經元o3之間的權值爲3,上述輸入神經元i4與輸出神經元o2之間的權值爲6,最終可得到如圖13所示的神經網絡結構。
對於上述輸出神經元o1,上述映射單元輸出權值5,其對應輸入神經元i2;對於上述輸出神經元o2,上述映射單元輸出權值8和6,其分別對應輸入神經元i2和i4;對於上述輸出神經元o3,上述映射單元輸出權值3,其對應輸入神經元i3。上述映射單元將上述權值5、8、6和3存儲到上述第一輸入緩存單元中。
上述以CSR的形式表示上述權值的連接關係數據與COO的形式表示相比壓縮了行索引的信息,並且採用CSR形式在存儲稀疏矩陣時非零元素平均使用的字節數最爲穩定。
方式四:壓縮稀疏列(Compressed Sparse Column,CSC)
採用CSC的形式是把上述權值矩陣列的信息壓縮存儲了,只顯式保留每列第一個非零權值的位置。將上述權值矩陣用三個數組表示:
上述第四數組存儲上述權值矩陣中的所有非零權值的值,其順序按照從上至下、從左到右的列遍歷方式排列元素,該第四數組記作A’,其長度即權值矩陣中非零權值的個數;
上述第五數組存儲上述第一數組A’中的每個元素分別在權值矩陣中的行索引(即行號),因而其長度與第一數組A’相同,記此數組爲JA’。
上述第六數組記作IA’,該數組的長度爲上述權值矩陣的列數加1。該數組IA’中的元素累加存儲上述權值矩陣中每一列非零權值的個數,具體可通過如下遞歸方法獲取,並且在該數組IA’累加整個權值矩陣中每一列中非零權值的個數。
若上述三個數組的序號與權值矩陣的序號從0開始,可以用如下的遞歸方法定義數組IA’:
IA’[0]=0
IA’[j]=IA’[j-1]+權值矩陣中第j-1列的非零權值個數(j>0)
舉例說明,假設上述權值矩陣爲
Figure 02_image005
,由於上述第四數組A’存儲權值矩陣的所有非零權值的數,其順序按照從左到右,從上到下的行遍歷方式排列元素,故該數組A’=[4,6,1,3,5,2,7,8];上述第五數組JA’存儲上述數組A’中每個元素分別在上述權值矩陣中的行索引(即行號),則該數組JA’=[0,3,1,3,2,0,2,3];根據上述遞歸方式確定數組IA’=[0,2,4,5,8]。
由上述數組A’可知上述權值矩陣包括8個非零權值,分別爲4,6,1,3,5,2,7,8。由上述數組JA’可知上述8個非零權值在上述權值矩陣中的行索引,即權值4在上述權值矩陣中的第一列,權值6在上述權值矩陣中的第4列,權值1在上述權值矩陣中的第二列,權值3在上述權值矩陣中的第四列,權值5在上述權值矩陣中的第三列,權值2在上述權值矩陣中的第一列,權值7在上述權值矩陣中的第三列,權值8在上述權值矩陣中的第四列,由上述數組IA’及其定義可知上述權值矩陣的第一列和第二列各有2個非零權值,第三列有1個非零權值,第四行有3個非零權值;由上述信息可得到上述權值矩陣以坐標列表的形式表示爲:(0,0,4),(3,0,6),(1,1,1),(3,1,3),(2,2,5),(0,3,2),(2,3,7),(3,3,8),進一步可確定上述權值矩陣。由該權值矩陣的形式可知,該矩陣的每一行和每一列均有非零權值,因此可確定該矩陣對應的輸入神經元爲4個,分別爲i1,i2,i3和i4;該權值矩陣對應的輸出神經元分別爲o1,o2,o3和o4。最終可確定上述輸入神經元i1與輸出神經元o1之間的權值爲4,上述輸入神經元i1與輸出神經元o4之間的權值爲2,上述輸入神經元i2與輸出神經元o2之間的權值爲1,上述輸入神經元i3與輸出神經元o3之間的權值爲5,上述輸入神經元i3與輸出神經元o4之間的權值爲7,上述輸入神經元i4與輸出神經元o1之間的權值爲6,上述輸入神經元i4與輸出神經元o2之間的權值爲3,上述輸入神經元i4與輸出神經元o4之間的權值爲8,最終可得到如圖14所示的神經網絡結構。
對於上述輸出神經元o1,上述映射單元輸出權值5和4,其分別對應輸入神經元i1和i4;對於上述輸出神經元o2,上述映射單元輸出權值1和3,其分別對應輸入神經元i2和i4;對於上述輸出神經元o3,上述映射單元輸出權值5,其對應輸入神經元i3;對於上述輸出神經元o3,上述映射單元輸出權值2,7和8,其對應輸入神經元i1,i3和i4。上述映射單元將上述權值4,6,1,3,5,2,7和8存儲到上述第一輸入緩存單元中。
上述以CSC的形式表示上述權值的連接關係數據與COO的形式表示相比壓縮了列索引的信息,對於算術運算、列切片、矩陣與向量的點乘都很有效。
方式五:(ELL Pack,ELL)
該方式採用兩個與權值矩陣的行數相同矩陣存儲該權值矩陣中非零權值的信息。上述第一矩陣存儲上述權值矩陣中非零權值的列號,上述第二矩陣存儲上述權值矩陣中非零權值的值,行號就不存了,用自身所在的行來表示;這兩個矩陣每一行都是從頭開始放,如果沒有元素了就用個結束標志(比如*)結束。
舉例說明,假設上述權值矩陣爲
Figure 02_image001
,則該權值矩陣的連接關係數據用ELL的形式表示爲:
第一矩陣爲:
Figure 02_image007
,第二矩陣爲
Figure 02_image009
由上述第一矩陣和第二矩陣的行數可知,上述權值矩陣對應的輸入神經元
的個數爲4,分別爲輸入神經元i1,i2,i3和i4;由上述第一矩陣和第二矩陣的列數可知,上述權值矩陣對應的輸出神經元的個數爲2,分別爲輸出神經元o1和o2。根據上述第一矩陣和第二矩陣可知,上述輸入神經元i1與輸出神經元o1之間的權值爲x1,輸入神經元i2與輸出神經元o2之間的權值爲x4,輸入神經元i3與輸出神經元o1之間的權值爲x2,輸入神經元i3與輸出神經元o2之間的權值爲x5,輸入神經元i4與輸出神經元o1之間的權值爲x3。由上述ELL表示的連接關係數據可得到如圖12所示的神經網絡結構。
對於上述輸出神經元o1,上述映射單元輸出權值x1,x2和x3,該權值x1,x2和x3分別對應輸入神經元i1,i3和i4;對於上述輸出神經元o2,上述映射單元輸出權值x4和x5,該權值x4和x5分別對應輸入神經元i2和i3。上述映射單元將上述權值x1,x2和x3、x4和x5存儲到上述第一輸入緩存單元中。
對於通過ELL方式表示的連接關係數據,當權值矩陣的某一行的非零元素多餘其他行時,在第一矩陣中的結尾處會存在多個結束標志,浪費緩存資源。爲了解决該問題,可採用方式六所示的方式表示上述連接關係數據。
方式六:混合(Hybird,HYB)
該方式可以看成上述ELL和COO方式的組合。採用COO的方式存儲權值矩陣中某一行相對於其他行多出來的非零權值。採用ELL的方式存儲權值矩陣中每一行最大相同數量的非零權值。
假設上述權值矩陣爲:
Figure 02_image011
,則上述ELL中的第三矩陣爲
Figure 02_image013
,第四矩陣爲
Figure 02_image015
;上述COO形式的元組爲(2,3,9)。由上述第三矩陣和第四矩陣的行數可知,上述權值矩陣對應的輸入神經元的個數爲4,分別爲輸入神經元i1,i2,i3和i4;根據上述坐標列表中的列號(3)可知上述權值矩陣對應的輸出神經元的個數爲4,分別爲輸出神經元o1,o2,o3和o4。由上述第一矩陣,第二矩陣和坐標列表可知:輸入神經元i1與輸出神經元o1之間的權值爲1,輸入神經元i1與輸出神經元o2之間的權值爲7,輸入神經元i2與輸出神經元o2之間的權值爲2,輸入神經元i2與輸出神經元o3之間的權值爲8,輸入神經元i3與輸出神經元o1之間的權值爲5,輸入神經元i3與輸出神經元o3之間的權值爲3,輸入神經元i3與輸出神經元o4之間的權值爲9,輸入神經元i4與輸出神經元o2之間的權值爲6,輸入神經元i4與輸出神經元o4之間的權值爲4,可以得到如圖15所示的神經網絡結構。
對於上述輸出神經元o1,上述映射單元輸出權值1和5,分別對應輸入神經元i1和i3;對於上述輸出神經元o2,上述映射單元輸出權值7和2,分別對應輸入神經元i1和i2;對於上述輸出神經元o3,上述映射單元輸出權值8和3,分別對應輸入神經元i2和i3;對於上述輸出神經元o4,上述映射單元輸出權值9和4,分別對應輸入神經元i3和i4。上述映射單元將上述權值1,5,7,2,8,3,9和4存儲到上述第一輸入緩存單元中。
總而言之,這六種形式(LIL、COO、CSC、CSR、ELL、HYB)在稀疏度越高的情况下越能占用更少的存儲空間。LIL根據具體實現結構的不同,占用稍多於2*nnz個存儲單元,空間代價優於其他方法。如果非零元素數量小於行數\列數,那麽使用COO比使用CSR/CSC更加經濟,反之則使用CSR/CSC更加經濟。如果每行的非零元素數目比較均勻,即矩陣中的每一行的非零元素個數差別不大,這樣非零元素最多的行中的非零元素數目,與不均勻的矩陣中相應非零元素最多行相比,顯然會更少,那麽可以考慮使用ELL。在極端均勻的情况下,即每一行的非零元素個數都一樣,ELL所占存儲單元個數是2*nnz,比COO和CSR、CSC都要少。但是稀疏神經網絡並不能保證有這樣的特性。也許有某些特定的稀疏神經網絡模型會有這樣的特性,那麽使用ELL比較好。對於矩陣中每一行稀疏元素個數較統一的情况,採用ELL形式的表示最佳,其次是HYB(ELL+COO)。
在並行方面,COO是可以並行生成的,CSR與CSC的3個數組中的2個也是可以並行生成的。 在做運算時,COO、LIL、ELL均可按行並行計算,而CSC、CSR、HYB則需要更多的預處理。
CSR擅長稀疏矩陣左乘向量,而CSC擅長於稀疏矩陣右乘向量轉置。這兩種表示形式可以通過轉置互相轉換。在神經網絡的傳播過程中可以使用這兩種方法以及COO。ELL格式在進行稀疏矩陣-矢量乘積(sparse matrix-vector products)時效率最高。
需要說明的是,上述非零權值還可以替換爲大於第一預設閾值的權值。
可選地,上述第一預設閾值可爲0.5、1、1.2、1.5、2或者其他值。
需要說明的是,上述圖1b、圖5和圖6所示的實施例中的輸入神經元的連接關係數據的表示方式除了直接索引和步長索引之外,還以以上述六種方式(LIL、COO、CSR、CSC、ELL、HYB)進行表示。
當以上述六種方式表示上述輸入神經元的連接關係數據時,上述非零權值可替換爲非零輸入神經元,上述權值矩陣可替換爲輸入神經元矩陣。
進一步的,上述非零輸入神經元可替換爲大於第二預設閾值的輸入神經元。
可選地,上述第二預設閾值可爲0.5、1、1.2、1.5、2或者其他值。上述第一預設閾值和上述第二預設閾值可以相同或者不同。
需要說明的是,圖1b、圖5和圖6所示的實施例中相關的連接關係數據(包括權值的連接關係數據和輸入神經元的連接關係數據)可以採用高維動態數組,可以用鏈表等等表示。
需要說明的是,上述神經網絡運算模塊不僅可以進行稀疏神經網絡運算,還可以進行稠密神經網絡運算。上述神經網絡運算模塊特別適用於稀疏神經網絡的運算,是因爲稀疏神經網絡裏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、圖5或者圖6所示實施例所述的神經網絡運算模塊,用於從其他處理裝置中獲取待運算數據和控制信息,並執行指定的神經網絡運算,將執行結果通過I/O接口傳遞給其他處理裝置;
當所述神經網絡運算裝置包含多個所述神經網絡運算模塊時,所述多個所述神經網絡運算模塊間可以通過特定的結構進行連接並傳輸數據;
其中,多個所述神經網絡運算模塊通過PCIE總線進行互聯並傳輸數據,以支持更大規模的神經網絡的運算;多個所述神經網絡運算模塊共享同一控制系統或擁有各自的控制系統;多個所述神經網絡運算模塊共享內存或者擁有各自的內存;多個所述神經網絡運算模塊的互聯方式是任意互聯拓撲。
該神經網絡運算裝置具有較高的兼容性,可通過pcie接口與各種類型的服務器相連接。
在一種可行的實施例中,本發明實施例提供了一種組合處理裝置,該組合裝置包括如上述神經網絡運算裝置,通用互聯接口和其他處理裝置。
上述神經網絡運算裝置與上述其他處理裝置進行交互,共同完成用戶指定的操作。參見圖16a,圖16a爲本發明實施例提供的一種組合處理裝置的結構示意圖。如圖16a所示,該組合處理裝置包括上述神經網絡運算裝置1601、通用互聯接口1602和其他處理裝置1603。
其中,上述其他處理裝置1603包括中央處理器(Central Processing Unit)、圖形處理器(Graphics Processing Unit,GPU)、神經網絡處理器等通用/專用處理器中的一種或以上的處理器類型。其他處理裝置1603所包括的處理器數量不做限制。其他處理裝置1603作爲神經網絡運算裝置1601與外部數據和控制的接口,包括數據搬運,完成對本神經網絡運算裝置的開啓、停止等基本控制;其他處理裝置1603也可以和神經網絡運算裝置1601協作共同完成運算任務。
上述通用互聯接口1602,用於在所述神經網絡運算裝置1601與其他處理裝置1603間傳輸數據和控制指令。該神經網絡運算裝置1601從其他處理裝置1603中獲取所需的輸入數據,寫入神經網絡運算裝置1601片上的存儲裝置;可以從其他處理裝置1603中獲取控制指令,寫入神經網絡運算裝置1601片上的控制緩存;也可以讀取神經網絡運算裝置1601的存儲模塊中的數據並傳輸給其他處理裝置1603。
可選的,如圖16b所示,上述組合處理裝置還包括存儲裝置1604,用於保存在本運算單元/運算裝置或其他運算單元所需要的數據,尤其適用於所需要運算的數據在本神經網絡運算裝置1601或其他處理裝置1603的內部存儲中無法全部保存的數據。
上述組合裝置可以作爲手機、機器人、無人機等智能設備的片上系統,有效降低控制部分的核心面積,提高處理速度,降低整體功耗。
在一種可行的實施例中,本發明實施例提供了一種神經網絡芯片,該神經網絡芯片包括如圖1b、圖5或者圖6所示實施例所述的神經網絡運算模塊,或者上述神經網絡運算裝置或者上述組合處理裝置。
在一種可行的實施例中,本發明實施例提供了一種神經網絡芯片封裝結構,該神經網絡芯片封裝結構包括上述神經網絡芯片。
在一種可行的實施例中,本發明實施例提供了一種板卡,該板卡包括上述神經網絡芯片封裝結構。該板卡可用於衆多通用或專用的計算系統環境或配置中。例如:個人計算機、服務器計算機、手持設備或便攜式設備、平板型設備、智能家居、家電、多處理器系統、基於微處理器的系統、機器人、可編程的消費電子設備、網絡個人計算機(personal computer,PC)、小型計算機、大型計算機、包括以上任何系統或設備的分布式計算環境等等。
請參照圖17,圖17爲本發明實施例提供的一種板卡的結構示意圖。如圖17所示,上述板卡17包括神經網絡芯片封裝結構171、第一電氣及非電氣連接裝置172和第一基板(substrate)173。
對於神經網絡芯片封裝結構171的具體結構不作限定,可選的,如圖18所示,上述神經網絡芯片封裝結構171包括:神經網絡芯片1711、第二電氣及非電氣連接裝置1712、第二基板1713。
本發明所涉及的神經網絡芯片1711的具體形式不作限定,上述的神經網絡芯片1711包含但不限於將神經網絡處理器集成的神經網絡晶片上,上述晶片可以由矽材料、鍺材料、量子材料或分子材料等製成。根據實際情况(例如:較嚴苛的環境)和不同的應用需求可將上述神經網絡晶片進行封裝,以使神經網絡晶片的大部分被包裹住,而將神經網絡晶片上的引脚通過金線等導體連到封裝結構的外邊,用於和更外層進行電路連接。
本發明對於第一基板173和第二基板1713的類型不做限定,可以是印刷電路板(printed circuit board,PCB)或印刷接線板(printed wiring board,PWB),還可能爲其它電路板。對PCB的製作材料也不做限定。
本發明所涉及的第二基板1713用於承載上述神經網絡芯片1711,通過第二電氣及非電氣連接裝置1712將上述的神經網絡芯片1711和第二基板1713進行連接得到的神經網絡芯片封裝結構171,用於保護神經網絡芯片1711,便於將神經網絡芯片封裝結構171與第一基板173進行進一步封裝。
對於上述具體的第二電氣及非電氣連接裝置1712的封裝方式和封裝方式對應的結構不作限定,可根據實際情况和不同的應用需求選擇合適的封裝方式並進行簡單地改進,例如:覆晶球柵陣列封裝(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)的封裝方式對神經網絡芯片1711和第二基板1713進行封裝,具體的神經網絡芯片封裝結構171的示意圖可參照圖19。如圖19所示,上述神經網絡芯片封裝結構包括:神經網絡芯片21、焊盤22、焊球23、第二基板24、第二基板24上的連接點25、引脚26。
其中,焊盤22與神經網絡芯片21相連,通過在焊盤22和第二基板24上的連接點25之間焊接形成焊球23,將神經網絡芯片21和第二基板24連接,即實現了神經網絡芯片21的封裝。
引脚26用於與封裝結構的外部電路(例如,神經網絡處理器板卡17上的第一基板173)相連,可實現外部數據和內部數據的傳輸,便於神經網絡芯片21或神經網絡芯片21對應的神經網絡處理器對數據進行處理。對於引脚的類型和數量本發明也不作限定,根據不同的封裝技術可選用不同的引脚形式,並遵從一定規則進行排列。
可選的,上述神經網絡芯片封裝結構還包括絕緣填充物,置於焊盤22、焊球23和連接點25之間的空隙中,用於防止焊球與焊球之間産生干擾。
其中,絕緣填充物的材料可以是氮化矽、氧化矽或氧氮化矽;干擾包含電磁干擾、電感干擾等。
可選的,上述神經網絡芯片封裝結構還包括散熱裝置,用於散發神經網絡芯片21運行時的熱量。其中,散熱裝置可以是一塊導熱性良好的金屬片、散熱片或散熱器,例如,風扇。
舉例來說,如圖20所示,上述神經網絡芯片封裝結構171包括:神經網絡芯片21、焊盤22、焊球23、第二基板24、第二基板24上的連接點25、引脚26、絕緣填充物27、散熱膏28和金屬外殼散熱片29。其中,散熱膏28和金屬外殼散熱片29用於散發神經網絡芯片21運行時的熱量。
可選的,上述神經網絡芯片封裝結構171還包括補强結構,與焊盤22連接,且內埋於焊球23中,以增强焊球23與焊盤22之間的連接强度。
其中,補强結構可以是金屬線結構或柱狀結構,在此不做限定。
本發明對於第一電氣及非電氣裝置172的具體形式也不作限定,可參照第二電氣及非電氣裝置1712的描述,即通過焊接的方式將神經網絡芯片封裝結構171進行封裝,也可以採用連接線連接或插拔方式連接第二基板1713和第一基板173的方式,便於後續更換第一基板173或神經網絡芯片封裝結構171。
可選的,第一基板173包括用於擴展存儲容量的內存單元的接口等,例如:同步動態隨機存儲器(Synchronous Dynamic Random Access Memory,SDRAM)、雙倍速率同步動態隨機存儲器(Double Date Rate SDRAM,DDR)等,通過擴展內存提高了神經網絡處理器的處理能力。
第一基板173上還可包括快速外部設備互連總線(Peripheral Component Interconnect-Express,PCI-E或PCIe)接口、小封裝可熱插拔(Small Form-factor Pluggable,SFP)接口、以太網接口、控制器局域網總線(Controller Area Network,CAN)接口等等,用於封裝結構和外部電路之間的數據傳輸,可提高運算速度和操作的便利性。
將神經網絡處理器封裝爲神經網絡芯片1711,將神經網絡芯片1711封裝爲神經網絡芯片封裝結構171,將神經網絡芯片封裝結構171封裝爲板卡17,可填補目前神經網絡的空缺,通過板卡上的接口(插槽或插芯)與外部電路(例如:計算機主板)進行數據交互,即直接通過使用板卡17實現神經網絡處理器的功能,並保護神經網絡芯片1711。且板卡17上還可添加其他模塊,提高了神經網絡處理器的應用範圍和運算效率。
在一種可行的實施例中,本發明實施例提供了一種電子裝置,該電子裝置包括上述板卡。
其中,該電子裝置包括:數據處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、雲端服務器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備交通工具、家用電器、和/或醫療設備。
上述交通工具包括飛機、輪船和/或車輛;上述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油烟機;所述醫療設備包括核磁共振儀、超音波儀器和/或心電圖儀。
參見圖21,圖21爲本發明實施例提供的一種神經網絡運算方法的流程示意圖。如圖21所示,該方法包括:
步驟S2101、神經網絡運算模塊對輸入數據進行處理,以得到處理後的輸入數據。
其中,所述輸入數據包括至少一個輸入神經元和/或至少一個權值,所述對輸入數據進行處理之前,所述方法還包括:
對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M爲大於或者等於1的整數;
判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;
當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元删除;
對所述至少一個權值進行分組,以得到N組權值,所述N爲大於或者等於1的整數;
判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;
當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值删除。
可選地,所述輸入數據包括第一輸入數據和第二輸入數據,所述處理後的輸入數據包括處理後的第一輸入數據和處理後的第二輸入數據,所述對輸入數據進行處理,以得到處理後的輸入數據,包括:
對所述第二輸入數據進行處理,以得到第一連接關係數據和處理後的第二輸出數據;
根據所述第一連接關係數據對所述第一輸入數據進行處理,以得到處理後的第二輸入數據,
其中,當所述第一輸入數據爲輸入神經元,所述第二輸入數據爲權值時,所述第一連接關係數據爲所述權值的連接關係數據;當所述第一輸入數據爲權值,所述第二輸入數據爲輸入神經元時,所述第一連接關係數據爲輸入神經元的連接關係數據。
可選地,所述輸入數據包括輸入神經元和權值,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值,所述對輸入數據進行處理,以得到處理後的輸入數據,包括:
根據所述輸入神經元和所述權值獲取所述輸入神經元的連接關係數據和所述權值的連接關係數據;
對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,
根據所述第二連接關係數據對所述輸入神經元和所述權值進行處理,以得到所述處理後的輸入神經元和所述處理後的權值。
可選地,所述輸入神經元的連接關係數據和所述權值的連接關係數據以直接索引的形式表示,所述對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,包括:
對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行與操作,以得到所述第三連接關係數據。
可選地,所述對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,包括:
當所述輸入神經元的連接關係數據以直接索引的形式表示,所述權值的連接關係數據以步長索引的形式表示時,將所述權值的連接關係數據轉換成以直接索引的形式表示的連接關係數據;
當所述權值的連接關係數據以直接索引的形式表示,所述輸入神經元的連接關係數據以步長索引的形式表示時,將所述輸入神經元的連接關係數據轉換成以直接索引的形式表示的連接關係數據;
對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行與操作,以得到所述第三連接關係數據。
可選地,當所述輸入神經元的連接關係數據和所述權值的連接關係數均以步長的形式表,且表示所述權值的連接關係數據和所述輸入神經元的連接關係數據的字符串是按照物理地址由低到高的順序存儲時,所述對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,包括:
將所述輸入神經元的連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第三連接關係數據;同理,對所述權值的連接關係數據的字符串進行同樣的處理,得到第四連接關係數據;
從所述第三連接關係數據的字符串和所述第四連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;
將所述新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相减,得到的元素組成所述第三連接關係數據。
可選地,當表示所述權值的連接關係數據和所述輸入神經元的連接關係數據的字符串是按照物理地址由低到高的順序存儲時所述對所述輸入神經元的連接關係數據和所述權值的連接關係數據進行處理,以得到第二連接關係數據,包括:
當所述輸入神經元的關係數據是以步長索引的形式表示,所述權值的連接關係數據是以直接索引的形式表示時,將所述權值的連接關係數據轉換成以步長索引的形式表示的連接關係數據;
當所述權值的關係數據是以步長索引的形式表示,所述輸入神經元的連接關係數據是以直接索引的形式表示時,將所述輸入神經元的連接關係數據轉換成以步長索引的形式表示的連接關係數據;
將所述第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第四連接關係數據;同理,對所述第二連接關係數據的字符串進行同樣的處理,得到第五連接關係數據;
從所述第四連接關係數據的字符串和所述第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;
將所述新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相减,得到的元素組成所述第三連接關係數據。
可選地,所述對輸入數據進行處理,以得到處理後的輸入數據,包括:
當所述輸入數據包括輸入神經元和所述輸入神經元的連接關係數據時,根據所述輸入神經元的連接關係數據對所述輸入神經元進行處理,以得到處理後的輸入神經元;
當所述輸入數據包括權值和所述權值的連接關係數據時,根據所述權值的連接關係數據對所述權值進行處理,以得到處理後的權值。
其中,所述輸入神經元的連接關係數據和所述權值的連接關係數據以直接索引或者步長索引的形式表示;
當所述輸入神經元的連接關係數據以直接索引的形式表示時,該連接關係數據爲由0和1組成的字符串,0表示所述輸入神經元的值的絕對值小於或者等於第一閾值,1表示所述輸入神經元的值的絕對值大於所述第一閾值;
當所述輸入神經元的連接關係數據以步長索引形式表示時,該連接關係數據爲絕對值大於所述第一閾值的輸入神經元與上一個絕對值大於所述第一閾值的輸入神經元之間的距離值組成的字符串;
當所述權值的連接關係數據以直接索引的形式表示時,該連接關係數據爲由0和1組成的字符串,0表示該權值的絕對值小於或者等於第二閾值,即該權值對應的輸入神經元與輸出神經元之間沒有連接,1表示該權值的絕對值大於上述第二閾值,即該權值對應的輸入神經元與輸出神經元之間有連接;以直接索引形式表示權值的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示所述權值的連接關係數據;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示所述權值的連接關係數據;
當所述權值的連接關係數據以步長索引的形式表示時,該連接關係數據爲與輸出神經元有連接的輸入神經元的與上一個與該輸出神經元有連接的輸入神經元之間的距離值組成的字符串。
步驟S2102、神經網絡運算模塊獲取神經運算指令,將所述神經運算指令譯碼成微指令。
步驟S2103、神經網絡運算模塊根據所述微指令對所述處理後的輸入數據進行人工神經網絡運算,以得到運算結果。
需要說明的是,上述步驟S2101-S2103的描述可參見上述圖1b、圖5和圖6所示實施例的相關描述,在此不再叙述。
本發明實施例還提供一種計算機存儲介質,其中,該計算機存儲介質可存儲有程式,該程式執行時包括上述方法實施例中記載的任何一種神經網絡運算方法的部分或全部步驟。
需要說明的是,對於前述的各方法實施例,爲了簡單描述,故將其都表述爲一系列的動作組合,但是所屬技術領域中具有通常知識者應該知悉,本發明並不受所描述的動作順序的限制,因爲依據本發明,某些步驟可以採用其他順序或者同時進行。其次,所屬技術領域中具有通常知識者也應該知悉,說明書中所描述的實施例均屬於優選實施例,所涉及的動作和模塊並不一定是本發明所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置,可通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅爲一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
所述作爲分離部件說明的單元可以是或者也可以不是物理上分開的,作爲單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬件的形式實現,也可以採用軟件功能單元的形式實現。
所述集成的單元如果以軟件功能單元的形式實現並作爲獨立的産品銷售或使用時,可以存儲在一個計算機可讀取存儲器中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件産品的形式體現出來,該計算機軟件産品存儲在一個存儲器中,包括若干指令用以使得一台計算機設備(可爲個人計算機、服務器或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲器包括: USB硬碟、唯讀存儲器(Read-Only Memory,ROM)、隨機存取存儲器(Random Access Memory,RAM)、移動硬碟、磁碟或者光碟等各種可以存儲程式代碼的介質。
所屬技術領域中具有通常知識者可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程式來指令相關的硬件來完成,該程式可以存儲於一計算機可讀存儲器中,存儲器可以包括:閃存碟、唯讀存儲器(Read-Only Memory,ROM)、隨機存取器(Random Access Memory,RAM)、磁碟或光碟等。
以上對本發明實施例進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於所屬技術領域中具有通常知識者,依據本發明的思想,在具體實施方式及應用範圍上均會有改變之處,綜上上述,本說明書內容不應理解爲對本發明的限制。
S2101、S2102、S2103‧‧‧步驟17‧‧‧板卡21‧‧‧神經網絡芯片22‧‧‧焊盤23‧‧‧焊球24‧‧‧第二基板25‧‧‧連接點26‧‧‧引脚27‧‧‧絕緣填充物28‧‧‧散熱膏29‧‧‧金屬外殼散熱片101、501、601‧‧‧映射單元102、502、602‧‧‧存儲單元103、503、603‧‧‧直接存儲訪問單元104、504、604‧‧‧指令緩存單元105、505、605‧‧‧第一輸入緩存單元106、506、606‧‧‧第二輸入緩存單元107、507、607‧‧‧指令控制單元108、508、608‧‧‧運算單元109、509、609‧‧‧輸出緩存單元171‧‧‧神經網絡芯片封裝結構172‧‧‧第一電氣及非電氣連接裝置173‧‧‧第一基板1011‧‧‧第一稀疏處理單元1012‧‧‧第一數據處理單元1013‧‧‧第二稀疏處理單元1014‧‧‧第三稀疏處理單元1015‧‧‧連接關係處理單元1016‧‧‧第二數據處理單元1601‧‧‧神經網絡運算裝置1602‧‧‧通用互聯接口1603‧‧‧其他處理裝置1604‧‧‧存儲裝置1711‧‧‧神經網絡芯片1712‧‧‧第二電氣及非電氣連接裝置1713‧‧‧第二基板6011‧‧‧輸入數據緩存單元6012‧‧‧連接關係緩存單元6013‧‧‧第四稀疏處理單元
圖1a爲本發明實施例提供的一種稀疏神經網絡結構示意圖。
圖1b爲本發明實施例提供的一種神經網絡運算模塊的結構示意圖。
圖2爲本發明實施例提供的一種神經網絡運算模塊的局部結構示意圖。
圖3爲本發明實施例提供的一種神經網絡結構示意圖。
圖4爲本發明實施例提供的另一種神經網絡運算模塊的局部結構示意圖。
圖5爲本發明實施例提供的另一種神經網絡運算模塊的結構示意圖。
圖6爲本發明實施例提供的另一種神經網絡運算模塊的結構示意圖。
圖7爲本發明實施例提供的另一種神經網絡運算模塊的局部結構示意圖。
圖8爲本發明實施例提供的另一種神經網絡運算模塊的局部結構示意圖。
圖9爲本發明實施例提供的另一種神經網絡運算模塊的局部結構示意圖。
圖10爲本發明實施例提供的另一種神經網絡運算模塊的局部結構示意圖。
圖11爲本發明實施例提供的另一種神經網絡運算模塊的局部結構示意圖。
圖12爲本發明實施例提供的另一種神經網絡結構示意圖。
圖13爲本發明實施例提供的另一種神經網絡結構示意圖。
圖14爲本發明實施例提供的另一種神經網絡結構示意圖。
圖15爲本發明實施例提供的另一種神經網絡結構示意圖。
圖16a爲本發明實施例提供的一種組合處理裝置的結構示意圖。
圖16b爲本發明實施例提供的另一種組合處理裝置的結構示意圖。
圖17爲本發明實施例提供的一種板卡的結構示意圖。
圖18爲本發明實施例提供的一種神經網絡芯片封裝結構的示意圖。
圖19爲本發明實施例提供的另一種神經網絡芯片封裝結構的示意圖。
圖20爲本發明實施例提供的另一種神經網絡芯片封裝結構的示意圖。
圖21爲本發明實施例提供的一種神經網絡運算方法的流程示意圖。
101‧‧‧映射單元
102‧‧‧存儲單元
103‧‧‧直接存儲訪問單元
104‧‧‧指令緩存單元
105‧‧‧第一輸入緩存單元
106‧‧‧第二輸入緩存單元
107‧‧‧指令控制單元
108‧‧‧運算單元
109‧‧‧輸出緩存單元

Claims (25)

  1. 一種神經網絡運算模塊,其中,包括:映射單元,用於接收輸入數據之後,對所述輸入數據進行處理,以得到處理後的輸入數據,所述輸入數據包括至少一個輸入神經元和至少一個權值,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值;以及運算單元,用於從第一輸入緩存單元和第二輸入緩存單元中獲取所述處理後的輸入神經元和所述處理後的權值後,根據微指令對所述處理後的輸入神經元和所述處理後的權值進行人工神經網絡運算,以得到運算結果;所述映射單元包括:第一稀疏處理單元,用於對第二輸入數據進行處理,以得到第三輸出數據和第二輸出數據,並將所述第三輸出數據傳輸至第一數據處理單元;所述第一數據處理單元,用於根據所述第三輸出數據對第一輸入數據進行處理,以得到第一輸出數據;其中,當所述第一輸入數據包括至少一個輸入神經元,所述第二輸入數據包括至少一個權值時,所述第一輸出數據為處理後的輸入神經元,所述第二輸出數據為處理後的權值,所述第三輸出數據為權值的連接關係數據;當所述第一輸入數據包括至少一個權值,所述第二輸入數據包括至少一個輸入神經元時,所述第一輸出數據為處理後的權值,所述第二輸出數據為處理後的輸入神經元,所述第三輸出數據為輸入神經元的連接關係數據;或者,所述映射單元包括:第二稀疏處理單元,用於接收到第三輸入數據後,根據所述第三輸入數據得到第一連接關係數據,並將該第一連接關係數據傳輸至連接關係處理單元; 第三稀疏處理單元,用於接收到第四輸入數據後,根據所述第四輸入數據得到第二連接關係數據,並將該第二連接關係數據傳輸至所述連接關係處理單元;所述連接關係處理單元,用於根據所述第一連接關係數據和所述第二連接關係數據,以得到第三連接關係數據,並將該第三連接關係數據傳輸至第二數據處理單元;所述第二數據處理單元,用於在接收到所述第三輸入數據,所述第四輸入數據和所述第三連接關係數據後,根據所述第三連接關係數據對所述第三輸入數據和所述第四輸入數據進行處理,以得到第四輸出數據和第五輸出數據;其中,當所述第三輸入數據包括至少一個輸入神經元,第四輸入數據包括至少一個權值時,所述第一連接關係數據為輸入神經元的連接關係數據,所述第二連接關係數據為權值的連接關係數據,所述第四輸出數據為處理後的輸入神經元,所述第五輸出數據為處理後的權值;當所述第三輸入數據包括至少一個權值,所述第四輸入數據包括至少一個輸入神經元時,所述第一連接關係數據為權值的連接關係數據,所述第二連接關係數據為輸入神經元的連接關係數據,所述第四輸出數據為處理後的權值,所述第五輸出數據為處理後的輸入神經元。
  2. 根據申請專利範圍第1項所述的神經網絡運算模塊,其中,所述神經網絡運算模塊還包括:存儲單元,用於存儲所述處理後的輸入神經元、處理後的權值、神經網絡指令和運算結果;指令控制單元,用於從指令緩存單元中獲取所述神經網絡指令,並將所述神經網絡指令譯碼成所述運算單元執行所述微指令;以及輸出緩存單元,用於緩存所述運算結果。
  3. 根據申請專利範圍第2項所述的神經網絡運算模塊,其中,所述神經網絡運算模塊還包括:直接存儲訪問單元,用於在所述存儲單元與所述指令緩存單元、所述第一輸入緩存單元、所述第二輸入緩存單元和所述輸出緩存單元之間進行數據的讀寫;所述指令緩存單元,用於緩存所述直接存儲訪問單元讀取所述神經網絡指令;所述第一輸入緩存單元,用於緩存所述直接存儲訪問單元讀取的第一緩存數據,所述第一緩存數據為所述處理後的輸入神經元或所述處理後的權值;所述第二輸入緩存單元,用於緩存所述直接存儲訪問單元讀取的第二緩存數據,所述第二緩存數據為所述處理後的權值或所述處理後的輸入神經元,且所述第一緩存數據與所述第二緩存數據不一致。
  4. 根據申請專利範圍第1項所述的神經網絡運算模塊,其中,所述輸入神經元的連接關係數據和所述權值的連接關係數據均以直接索引或者步長索引的形式表示;當所述輸入神經元的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示所述輸入神經元的絕對值小於或者等於第一閾值,1表示所述輸入神經元的絕對值大於所述第一閾值;當所述輸入神經元的連接關係數據以步長索引形式表示時,該連接關係數據為絕對值大於所述第一閾值的輸入神經元與上一個絕對值大於所述第一閾值的輸入神經元之間的距離值組成的字符串;當所述權值的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示所述權值的絕對值小於或者等於第二閾值,即該 權值對應的輸入神經元與輸出神經元之間沒有連接,1表示所述權值的絕對值大於所述第二閾值,即該權值對應的輸入神經元與輸出神經元之間有連接;以直接索引形式表示權值的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示所述權值的連接關係數據;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示所述權值的連接關係數據;當所述權值的連接關係數據以步長索引的形式表示時,該連接關係數據為與輸出神經元有連接的輸入神經元的與上一個與該輸出神經元有連接的輸入神經元之間的距離值組成的字符串。
  5. 根據申請專利範圍第4項所述的神經網絡運算模塊,其中,當所述第一連接關係數據和所述第二連接關係數據均以步長索引的形式表示,且表示所述第一連接關係數據和所述第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,所述連接關係處理單元具體用於:將所述第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第四連接關係數據;同理,對所述第二連接關係數據的字符串進行同樣的處理,得到第五連接關係數據;從所述第四連接關係數據的字符串和所述第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;將所述新的字符串中每一個元素與其相鄰的且值小於該元素值的元素進行相減,得到的元素組成所述第三連接關係數據。
  6. 根據申請專利範圍第4項所述的神經網絡運算模塊,其中,當所述第一連接關係數據和所述第二連接關係數據均以直接索引的形式表示時,所述連接關係處理單元具體用於:對所述第一連接關係數據和所述第二連接關係數據進行與操作,以得到第三連接關係數據。
  7. 根據申請專利範圍第4項所述的神經網絡運算模塊,其中,當所述第一連接關係數據與所述第二連接關係數據中任意一個以步長索引的形式表示,另一個以直接索引的形式表示時,所述連接關係處理單元具體用於:若所述第一關係數據是以步長索引的形式表示,將所述第一連接關係數據轉換成以直接索引的形式表示的連接關係數據;若所述第二關係數據是以步長索引的形式表示,將所述第二連接關係數據轉換成以直接索引的形式表示的連接關係數據;對所述第一連接關係數據和所述第二連接關係數據進行與操作,以得到第三連接關係數據。
  8. 根據申請專利範圍第7項所述的神經網絡運算模塊,其中,當所述第一連接關係數據與所述第二連接關係數據中任意一個以步長索引的形式表示,另一個以直接索引的形式表示,且表示所述第一連接關係數據和所述第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,所述連接關係處理單元還具體用於:若所述第一關係數據是以步長索引的形式表示,將所述第二連接關係數據轉換成以步長索引的形式表示的連接關係數據; 若所述第二關係數據是以步長索引的形式表示,將所述第一連接關係數據轉換成以步長索引的形式表示的連接關係數據;將所述第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第四連接關係數據;同理,對所述第二連接關係數據的字符串進行同樣的處理,得到第五連接關係數據;從所述第四連接關係數據的字符串和所述第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;將所述新的字符串中每一個元素與其相鄰的且值小於該元素值的元素進行相減,得到的元素組成所述第三連接關係數據。
  9. 根據申請專利範圍第1-3項中任一項所述神經網絡運算模塊,其中,所述映射單元對所述輸入數據進行處理之前,所述映射單元還用於:對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M為大於或者等於1的整數;判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元删除;對所述至少一個權值進行分組,以得到N組權值,所述N為大於或者等於1的整數; 判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值删除。
  10. 根據申請專利範圍第1至3項中任一項或5至8項中任一項所述的神經網絡運算模塊,其中,所述神經網絡運算模塊用於稀疏神經網絡運算或者稠密神經網絡運算。
  11. 一種神經網絡運算模塊,其中,包括:映射單元,用於直接存儲訪問單元獲取輸入數據後,對所述輸入數據進行處理,以得到處理後的輸入數據,所述輸入數據包括至少一個輸入神經元和至少一個權值,所述處理後的輸入數據包括處理後的輸入神經元和處理後的權值,並將所述處理後的輸入神經元和所述處理後的權值存儲到第一輸入緩存單元和第二輸入緩存單元中;所述運算單元,用於從第一輸入緩存單元和第二輸入緩存單元中獲取所述處理後的輸入神經元和所述處理後的權值後,根據所述微指令對所述處理後的輸入神經元和所述處理後的權值進行人工神經網絡運算,以得到所述運算結果;所述映射單元包括:第二稀疏處理單元,用於接收到第一輸入數據後,根據所述第一輸入數據以得到第一連接關係數據,並將該第一連接關係數據傳輸至連接關係處理單元; 第三稀疏處理單元,用於接收到第二輸入數據後,根據所述第二輸入數據以得到第二連接關係數據,並將該第二連接關係數據傳輸至所述連接關係處理單元;所述連接關係處理單元,用於根據所述第一連接關係數據和所述第二連接關係數據,以得到第三連接關係數據,並將該第三連接關係數據傳輸至第二數據處理單元;所述第二數據處理單元,用於在接收到所述第一輸入數據,所述第二輸入數據和所述第三連接關係數據後,根據所述第三連接關係數據對所述第一輸入數據和所述第二輸入數據進行處理,以得到第一輸出數據和第二輸出數據;其中,當所述第一輸入數據包括至少一個輸入神經元,第二輸入數據包括至少一個權值時,所述第一連接關係數據為輸入神經元的連接關係數據,所述第二連接關係數據為權值的連接關係數據,所述第一輸出數據為處理後的輸入神經元,所述第二輸出數據為處理後的權值;當所述第一輸入數據包括至少一個權值,所述第二輸入數據包括至少一個輸入神經元時,所述第一連接關係數據為權值的連接關係數據,所述第二連接關係數據為輸入神經元的連接關係數據,所述第一輸出數據為處理後的權值,所述第二輸出數據為處理後的輸入神經元。
  12. 根據申請專利範圍第11項所述的神經網絡運算模塊,其中,所述神經網絡運算模塊還包括:存儲單元,用於存儲輸入數據、神經網絡指令和運算結果,所述輸入數據包括至少一個輸入神經元和至少一個權值;指令控制單元,用於從指令緩存單元中獲取所述神經網絡指令,並將所述神經網絡指令譯碼成運算單元執行的微指令; 輸出緩存單元,用於緩存所述運算結果。
  13. 根據申請專利範圍第12項所述的神經網絡運算模塊,其中,所述神經網絡運算模塊還包括:所述直接內存訪問單元,用於在所述存儲單元與所述指令緩存單元、所述映射單元和所述輸出緩存單元之間進行數據的讀寫;所述第一輸入緩存單元,用於緩存第一緩存數據,所述第一緩存數據為所述處理後的輸入神經元或處理後的權值;所述第二輸入緩存單元,用於緩存第二緩存數據,所述第二緩存數據為所述處理後的輸入神經元或處理後的權值,且所述第二緩存數據與所述第一緩存數據不一致;所述指令緩存單元,用於緩存所述直接存儲訪問單元讀取所述神經網絡指令。
  14. 根據申請專利範圍第11項所述的神經網絡運算模塊,其中,所述輸入神經元的連接關係數據和所述權值的連接關係數據均以直接索引或者步長索引的形式表示;當所述輸入神經元的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示所述輸入神經元的絕對值小於或者等於第一閾值,1表示所述輸入神經元的絕對值大於所述第一閾值;當所述輸入神經元的連接關係數據以步長索引形式表示時,該連接關係數據為絕對值大於所述第一閾值的輸入神經元與上一個絕對值大於所述第一閾值的輸入神經元之間的距離值組成的字符串; 當所述權值的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示所述權值的絕對值小於或者等於第二閾值,即該權值對應的輸入神經元與輸出神經元之間沒有連接,1表示所述權值的絕對值大於所述第二閾值,即該權值對應的輸入神經元與輸出神經元之間有連接;以直接索引形式表示權值的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示所述權值的連接關係數據;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示所述權值的連接關係數據;當所述權值的連接關係數據以步長索引的形式表示時,該連接關係數據為與輸出神經元有連接的輸入神經元的與上一個與該輸出神經元有連接的輸入神經元之間的距離值組成的字符串。
  15. 根據申請專利範圍第14項所述的神經網絡運算模塊,其中,當所述第一連接關係數據和所述第二連接關係數據均以步長索引的形式表示,且表示所述第一連接關係數據和所述第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,所述連接關係處理單元具體用於:將所述第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第四連接關係數據;同理,對所述第二連接關係數據的字符串進行同樣的處理,得到第五連接關係數據;從所述第四連接關係數據的字符串和所述第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串; 將所述新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相減,得到的元素組成所述第三連接關係數據。
  16. 根據申請專利範圍第14項所述的神經網絡運算模塊,其中,所述第一連接關係數據和所述第二連接關係數據均以直接索引的形式表示,所述連接關係處理單元具體用於:對所述第一連接關係數據和所述第二連接關係數據進行與操作,以得到第三連接關係數據。
  17. 根據申請專利範圍第14項所述的神經網絡運算模塊,其中,所述第一連接關係數據與所述第二連接關係數據中任意一個以步長索引的形式表示,另一個以直接索引的形式表示,所述連接關係處理單元具體用於:若所述第一連接關係數據是以步長索引的形式表示,將所述第一連接關係數據轉換成以直接索引的形式表示的連接關係數據;若所述第二連接關係數據是以步長索引的形式表示,將所述第二連接關係數據轉換成以直接索引的形式表示的連接關係數據;對所述第一連接關係數據和所述第二連接關係數據進行與操作,以得到所述第三連接關係數據。
  18. 根據申請專利範圍第17項所述的神經網絡運算模塊,其中,當表示所述第一連接關係數據和所述第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時所述連接關係處理單元還具體用於:若所述第一連接關係數據是以步長索引的形式表示,將所述第二連接關係數據轉換成以步長索引的形式表示的連接關係數據; 若所述第二連接關係數據是以步長索引的形式表示,將所述第一連接關係數據轉換成以步長索引的形式表示的連接關係數據;將所述第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第四連接關係數據;同理,對所述第二連接關係數據的字符串進行同樣的處理,得到第五連接關係數據;從所述第四連接關係數據的字符串和所述第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成新的字符串;將所述新的字符串中每一個元素與其相鄰且值小於該元素值的元素進行相減,得到的元素組成所述第三連接關係數據。
  19. 根據申請專利範圍第12項所述的神經網絡運算模塊,其中,所述映射單元對所述輸入數據進行處理之前,所述映射單元還用於:對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M為大於或者等於1的整數;判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元删除;對所述至少一個權值進行分組,以得到N組權值,所述N為大於或者等於1的整數; 判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值删除。
  20. 根據申請專利範圍第11至19項中任一項所述的神經網絡運算模塊,其中,所述神經網絡運算模塊用於稀疏神經網絡運算或者稠密神經網絡運算。
  21. 一種神經網絡運算裝置,其中,所述神經網絡運算裝置包括一個或多個如申請專利範圍第1至20項中任一項所述的神經網絡運算模塊,用於從其他處理裝置中獲取待運算數據和控制信息,並執行指定的神經網絡運算,將執行結果通過I/O接口傳遞給其他處理裝置;當所述神經網絡運算裝置包含多個所述神經網絡運算模塊時,所述多個所述神經網絡運算模塊間可以通過特定的結構進行連接並傳輸數據;其中,多個所述神經網絡運算模塊通過快速外部設備互連總線PCIE總線進行互聯並傳輸數據,以支持更大規模的神經網絡的運算;多個所述神經網絡運算模塊共享同一控制系統或擁有各自的控制系統;多個所述神經網絡運算模塊共享內存或者擁有各自的內存;多個所述神經網絡運算模塊的互聯方式是任意互聯拓撲。
  22. 一種組合處理裝置,其中,所述組合處理裝置包括如申請專利範圍第21項所述的神經網絡運算裝置,通用互聯接口和其他處理裝置; 所述神經網絡運算裝置與所述其他處理裝置進行交互,共同完成用戶指定的操作。
  23. 一種神經網絡芯片,其中,所述神經網絡芯片包括如申請專利範圍第21項所述的神經網絡運算裝置或如申請專利範圍第22項所述的組合處理裝置。
  24. 一種板卡,其中,所述板卡包括如申請專利範圍第23項所述的神經網絡芯片。
  25. 一種電子裝置,其中,所述電子裝置包括如申請專利範圍第23項所述的神經網絡芯片或者如申請專利範圍第24項所述的板卡。
TW107125682A 2017-12-11 2018-07-25 神經網絡運算設備和方法 TWI791569B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
??2017113156399 2017-12-11
CN2017113156399 2017-12-11
CN201711315639.9A CN109902810B (zh) 2017-12-11 2017-12-11 神经网络运算设备和方法

Publications (2)

Publication Number Publication Date
TW201928790A TW201928790A (zh) 2019-07-16
TWI791569B true TWI791569B (zh) 2023-02-11

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 After (2)

Application Number Title Priority Date Filing Date
TW107144031A TWI771539B (zh) 2017-12-11 2018-12-07 神經網絡運算設備和方法
TW107144032A TWI775998B (zh) 2017-12-11 2018-12-07 神經網絡運算設備和方法

Country Status (5)

Country Link
US (4) US20200097824A1 (zh)
EP (3) EP3671573A1 (zh)
CN (9) CN109902816B (zh)
TW (3) TWI791569B (zh)
WO (1) WO2019114649A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020014590A1 (en) * 2018-07-12 2020-01-16 Futurewei Technologies, Inc. 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 中国科学院计算技术研究所 异构智能处理器、处理方法及电子设备
CN111930674B (zh) * 2020-08-10 2024-03-05 中国科学院计算技术研究所 乘累加运算装置及方法、异构智能处理器及电子设备
CN111930672B (zh) * 2020-08-10 2024-03-01 中国科学院计算技术研究所 异构智能处理器及电子设备
CN112272074B (zh) * 2020-10-27 2022-11-25 国网内蒙古东部电力有限公司电力科学研究院 一种基于神经网络的信息传输速率控制方法及***
CN115150614A (zh) * 2021-03-30 2022-10-04 中国电信股份有限公司 图像特征的传输方法、装置和***
US20220318604A1 (en) * 2021-03-30 2022-10-06 Amazon Technologies, Inc. Sparse machine learning acceleration

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346607A (zh) * 2014-11-06 2015-02-11 上海电机学院 基于卷积神经网络的人脸识别方法
US8983885B1 (en) * 2012-09-10 2015-03-17 FEM, Inc. Prospective media content generation using neural network modeling
TW201531966A (zh) * 2014-01-23 2015-08-16 Qualcomm Inc 配置稀疏神經網路
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106779068A (zh) * 2016-12-05 2017-05-31 北京深鉴智能科技有限公司 调整人工神经网络的方法和装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
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
US8700541B2 (en) * 2012-02-02 2014-04-15 I-Shou University Modeling method of neuro-fuzzy system
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
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
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
CN107316078B (zh) * 2016-04-27 2021-05-07 中科寒武纪科技股份有限公司 用于执行人工神经网络自学习运算的装置和方法
CN106250939B (zh) * 2016-07-30 2020-07-24 复旦大学 基于fpga+arm多层卷积神经网络的手写体字符识别方法
CN107679617B (zh) * 2016-08-22 2021-04-09 赛灵思电子科技(北京)有限公司 多次迭代的深度神经网络压缩方法
CN109478139B (zh) * 2016-08-13 2024-01-23 英特尔公司 用于共享存储器中的访问同步的装置、方法和***
TWI607387B (zh) * 2016-11-25 2017-12-01 財團法人工業技術研究院 字符辨識系統及其字符辨識方法
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
CN109284822B (zh) * 2017-07-20 2021-09-21 上海寒武纪信息科技有限公司 一种神经网络运算装置及方法
CN109697507B (zh) 2017-10-24 2020-12-25 安徽寒武纪信息科技有限公司 处理方法及装置
CN109993291B (zh) * 2017-12-30 2020-07-07 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8983885B1 (en) * 2012-09-10 2015-03-17 FEM, Inc. Prospective media content generation using neural network modeling
TW201531966A (zh) * 2014-01-23 2015-08-16 Qualcomm Inc 配置稀疏神經網路
CN104346607A (zh) * 2014-11-06 2015-02-11 上海电机学院 基于卷积神经网络的人脸识别方法
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106779068A (zh) * 2016-12-05 2017-05-31 北京深鉴智能科技有限公司 调整人工神经网络的方法和装置

Also Published As

Publication number Publication date
EP3633557A1 (en) 2020-04-08
CN111738431A (zh) 2020-10-02
CN109902817B (zh) 2021-02-09
CN109902816A (zh) 2019-06-18
US20200097825A1 (en) 2020-03-26
CN109902817A (zh) 2019-06-18
CN109902810A (zh) 2019-06-18
CN109902813B (zh) 2020-08-04
US11657258B2 (en) 2023-05-23
CN109902814A (zh) 2019-06-18
TW201928790A (zh) 2019-07-16
US20200097824A1 (en) 2020-03-26
US20200097803A1 (en) 2020-03-26
CN109902813A (zh) 2019-06-18
CN109902815B (zh) 2020-05-19
CN109902816B (zh) 2020-08-04
TWI771539B (zh) 2022-07-21
CN109902811B (zh) 2020-03-10
CN111738431B (zh) 2024-03-05
TWI775998B (zh) 2022-09-01
US20200097834A1 (en) 2020-03-26
EP3671573A1 (en) 2020-06-24
EP3657400A1 (en) 2020-05-27
TW201928795A (zh) 2019-07-16
EP3633557A4 (en) 2020-09-16
CN109902812A (zh) 2019-06-18
CN109902814B (zh) 2020-01-17
WO2019114649A1 (zh) 2019-06-20
CN109902815A (zh) 2019-06-18
US11803735B2 (en) 2023-10-31
TW201928792A (zh) 2019-07-16
CN109902811A (zh) 2019-06-18
CN109902812B (zh) 2020-10-09
CN109902810B (zh) 2020-05-22

Similar Documents

Publication Publication Date Title
TWI791569B (zh) 神經網絡運算設備和方法
US11907844B2 (en) Processing method and accelerating device
TWI793225B (zh) 神經網絡訓練方法及相關產品
TWI791725B (zh) 神經網絡運算方法、集成電路芯片裝置及相關產品
TWI768159B (zh) 集成電路芯片裝置及相關產品
TWI767098B (zh) 神經網絡正向運算方法及相關產品
CN110175673B (zh) 处理方法及加速装置
WO2019165946A1 (zh) 集成电路芯片装置、板卡及相关产品
CN111382864A (zh) 一种神经网络训练方法及装置
WO2019165940A1 (zh) 集成电路芯片装置、板卡及相关产品
CN111832696A (zh) 神经网络运算方法及相关产品
CN111832710A (zh) 运算数据的量化频率调整方法及相关产品