TW202123032A - 脈衝卷積神經網路演算法、積體電路、運算裝置及存儲介質 - Google Patents

脈衝卷積神經網路演算法、積體電路、運算裝置及存儲介質 Download PDF

Info

Publication number
TW202123032A
TW202123032A TW109142950A TW109142950A TW202123032A TW 202123032 A TW202123032 A TW 202123032A TW 109142950 A TW109142950 A TW 109142950A TW 109142950 A TW109142950 A TW 109142950A TW 202123032 A TW202123032 A TW 202123032A
Authority
TW
Taiwan
Prior art keywords
layer
storage
calculation
neural network
input
Prior art date
Application number
TW109142950A
Other languages
English (en)
Other versions
TWI774147B (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 TW202123032A publication Critical patent/TW202123032A/zh
Application granted granted Critical
Publication of TWI774147B publication Critical patent/TWI774147B/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N25/00Circuitry of solid-state image sensors [SSIS]; Control thereof
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)
  • Error Detection And Correction (AREA)

Abstract

一種脈衝卷積神經網路演算法以及相關的積體電路、運算裝置和存儲介質,用於以高效低能耗的方式進行人工智慧中的脈衝卷積神經網路運算。所述演算法的特徵在於,基於存算一體單元,所述存算一體單元包括至少一個存輸入端,至少一個算輸入端以及一個輸出端,其特徵在於將脈衝卷積神經網路的第一層的權值複製至若干份,份數至少為用於表徵待分析物屬性的量所轉換成的二進位數字的位數以及所述存算一體單元的存輸入端的最小值,並且將複製後的所述份數的權值進行處理,使複製後的各個權值在數值上依次縮小兩倍,所得數值被分別輸入到多個所述存算一體單元的存輸入端,所述存算一體單元的個數與所述份數相同。

Description

脈衝卷積神經網路演算法、積體電路、運算裝置及存儲介質
[相關申請]
本申請要求於2019年12月9日遞交的中國專利申請第201911249006.1號的優先權,在此全文引用上述中國專利申請公開的內容以作為本申請的一部分。
本發明涉及一種脈衝卷積神經網路脈衝卷積神經網路演算法、積體電路、運算裝置及存儲介質,可以將傳統的卷積神經網路轉換成脈衝神經網路,具體涉及圖像分類領域。
傳統的電腦大多採取馮諾依曼架構,然而,因為馮諾依曼架構存儲單元和運算單元的分立,導致了在資料傳輸上產生了極大的能量消耗,並且影響運算速度。目前卷積神經網路在圖像分類領域具有非常好的效果,擁有大量成熟的訓練方法和工具,還有經過大量驗證的經典卷積神經網路模型,如lenet-5、alexnet、vgg-16等。如果在採用馮諾依曼架構的硬體上運行,比如CPU、GPU、FPGA,則需要大量的資料傳輸過程,對於規模很大的矩陣,計算速度比資料傳輸的速度要快得多,優化計算速度不能夠加快整個系統的速度。
存算一體單元由於能夠將資料直接保存在計算單元上且不需要片上快取,從而解決了上述問題,但是卷積神經網路運算中依然存在大量的中間資料需要快取,且在存算一體單元上實現時,需要使用大量類比數位轉換器將電流轉換為數位信號,佔用了整個系統大部分的面積和功耗。另外由於類比數位轉換器的頻率有限,所以整個系統的計算速度也受到其限制,無法再進行提升。
脈衝神經網路試圖盡可能類比人腦的計算方式,明顯的特徵就是資料都是以脈衝信號的形式在網路裡流動,在用硬體實現時,功耗遠小於卷積神經網路。
脈衝卷積神經網路結合了卷積神經網路和脈衝神經網路的特點,將卷積神經網路模型進行一些修改後,使得可以用訓練卷積神經網路的方法得到權值,並且分類準確率相對於所採用的卷積神經網路,下降幅度很小。由於網路中的資料都是脈衝形式,所以硬體資源消耗小。目前該領域的研究還僅停留在演算法層面,沒有相關的硬體實現方案。
現有的脈衝卷積神經網路演算法中,一種輸入方式是,輸入脈衝通過亂數產生的方式產生,根據大數定律,需要很長時間生成大量脈衝後,才可能收斂到原始值,貼近卷積神經網路的分類結果,而這樣就需要大量的計算時間,計算效率很低。另一種輸入方式是,輸入並不是脈衝,而是類比值,在電路實現時,一方面輸入的精度得不到保證,另一方面考慮到實際應用,輸入源很可能是圖像感測器,輸出均為數位信號,需要考慮到相容性。
批標準化(Batch Normalization,BN)層是卷積神經網路中的一種對網路進行優化的常用層,可以提高訓練的準確率,減少訓練結果對初始化方法的依賴。通過數學推導,如果要在脈衝卷積神經網路演算法中添加BN層,經過卷積層/全連接層與BN層的合併後,卷積層/全連接層中一定會不可避免地產生偏置。而現有的脈衝卷積神經網路演算法中,都避免了偏置的使用,這樣就無法添加BN層,對大規模的卷積神經網路的訓練工作帶來了困擾。
此外,現有的脈衝卷積神經網路演算法中,都沒有考慮過結束的問題,然而在實際模擬和電路中,計算時長也是很重要的考量因素,針對這一點也值得改進。
鑒於以上,根據本發明的一方面,提出了一種脈衝卷積神經網路演算法,通過改變輸入方式、將平均池化層併入下一個卷積層或全連接層、支持帶偏置的卷積層和全連接層的計算、支援在網路中添加BN層、設定計算結束判定條件、加入對特殊情況的輔助判斷等優化改進方法,可以大大節約現有脈衝卷積神經網路演算法的計算時間,並提高圖像分類的準確率,增加脈衝卷積神經網路演算法對偏置和BN層的功能支援,並調整輸入方式增加相容性。
根據本發明的另一方面,提出了一種脈衝卷積神經網路運算裝置,在存算一體單元上實現脈衝卷積神經網路時,通過將代表卷積神經網路中真實值的多位數位信號轉換成時間序列脈衝信號的形式,用電流積分比較電路代替類比數位轉換器,從而大大減小了面積和功耗。而且卷積層和全連接層的映射方式是完全展開,即每一層的所有輸出結果同時計算完成,並與作為下一層的輸入連接到下一層,且每一層卷積層/全連接層的權值係數均保存在存算一體單元中,從而運算過程中沒有資料需要快取,整個系統的計算速度顯著加快。
但是對於大規模的脈衝卷積神經網路,所需的存算一體單元與輸入圖像尺寸的平方和卷積層通道數成正比,需要佔用大量面積。並且這個方案的計算速度非常快,在圖像很大的情況下,遠遠超過了輸入圖像資料的傳送速率,也就是說,會因為資料傳輸速度跟不上而導致計算速度受限。
鑒於以上,根據本發明的又一方面,提出了一種帶有記憶體的脈衝卷積神經網路運算裝置,通過將脈衝信號按照固定時長進行打包並加入片上或者片外的記憶體保存中間資料,大大縮減了所需的存算一體單元數目,從而減小面積和功耗。雖然這樣的方法會使得理論上的計算速度比起不用保存中間資料的方案下降很多,但是實際上因為資料傳輸速度的瓶頸限制,最終的速度也在可以接受的範圍內。
根據本發明的一個方面,提供一種脈衝卷積神經網路演算法,基於存算一體單元,所述存算一體單元包括至少一個存輸入端,至少一個算輸入端以及一個輸出端,其特徵在於:1)將脈衝卷積神經網路的第一層的權值複製至若干份,份數至少為用於表徵待分析物屬性的量所轉換成的二進位數字的位數以及所述存算一體單元的存輸入端的最小值,並且將複製後的所述份數的權值進行處理,使複製後的各個權值在數值上依次縮小兩倍,所得數值被分別輸入到多個所述存算一體單元的存輸入端,所述存算一體單元的個數與所述份數相同;2)將所選的、集中用於表徵待分析物屬性的量轉換成二進位數字,並將待輸入的所述二進位數字的每一位元數值,或者根據系統位元寬截位元後的數值作為輸入脈衝,輸入到所述脈衝卷積神經網路的存算一體計算單元中;並且,對於每個表徵待分析物屬性的輸入集合,在對應於所述輸入集合的時間週期內,使所述輸入脈衝保持不變並不間斷地輸入到所述脈衝卷積神經網路中相應的計算單元,直到完成對該被分析物的所述屬性的處理;3)對於用於表徵待分析物屬性的、對應於所述一個組中的每個基本的二進位數字,使所述每個存輸入端的輸入量,分別與一個算輸入端的輸入量相對應,並且絕對值較大的存輸入端的輸入量與較高位的算輸入端的輸入量一一對應;4)在每個所述存算一體單元中,使所述存輸入端的量與所述算輸入端的量進行運算,輸出端得到的電流值代表所述存算一體單元的存輸入端的值與算輸入端的值進行乘法運算的結果。
此外,根據本發明的一個實施例,所述脈衝卷積神經網路演算法,其特徵還在於:1)包括所述第一層的運算以及其它層的運算,並且在其中的任意層,在所述存輸入端與所述算輸入端的運算以外,再加一個運算累加項,所述運算累加項為一個經過修正的偏置值,所述經過修正的偏置值正比於其原始值再除以該層之前所有層的正閾值的累乘,所述正比的比例與該偏置所在的層以及之前的層的權值縮放比例有關;2)所述脈衝卷積神經網路演算法,對所述存算一體單元的輸出持續地進行累加,當所述累加和超過一個設定的正閾值後,對所述累加和進行清零,並且向下一層相應位置的算輸入端釋放一個輸出脈衝;並且當所述累加和小於一個設定的負閾值之後,使該累加和保持在該負閾值上。
此外,根據本發明的一個實施例,所述脈衝卷積神經網路中包括批標準化層,對該批標準化層之前的一個卷積層或全連接層中的權值和偏置進行線性變換,其中所述線性變換中的參數由前面的訓練過程中得到。
此外,根據本發明的一個實施例,其中用多個計數器對所述脈衝卷積神經網路最後一個全連接層中每個神經元的脈衝個數以及最早出現脈衝的時間進行統計,所述計數器個數為所述神經元的數目或其兩倍。
此外,根據本發明的一個實施例,如果所述多個計數器中至少兩個計數器計數結果均為相同的最大值,則選取最早接收到脈衝的計數器所對應的類別值為最終結果。
此外,根據本發明的一個實施例,計數器顯著地多,則輸出終止運算,將最終的分類結果作為所述多個計數器計數結果的最大值所對應的類別值進行輸出。
此外,根據本發明的一個實施例,在所述第一層的運算之後,還進行平均池化、最大池化、卷積層和全連接層運算中的至少一種。
此外,根據本發明的一個實施例,所述脈衝卷積神經網路演算法,其特徵還在於:1)設定若干個時脈信號的時長為一個分析週期;2)將待分析的標的物分為若干分區;3)以所述分析週期為時間單位,逐次分析一個分區的時間序列信號,將代表該分區的運算結果送至一個記憶體;4)分析下一個分區的信號,將所述代表該分區的運算結果送至所述記憶體,直到所完成的多個分區的信號聯合地滿足下一層的分析條件;5)將所述記憶體存儲的各個所述分區的信號送入下一層進行運算。
此外,根據本發明的一個實施例,所述記憶體為暫存器、片上快取、片外存儲或者雲存儲中的至少一種,或者它們的組合。
根據本發明的另一個方面,提供一種基於脈衝卷積神經網路的積體電路,其特徵在於,所述積體電路執行如上述的脈衝卷積神經網路演算法。
根據本發明的又一個方面,提供一種電腦可讀記錄介質,其上存儲電腦可讀指令,當所述電腦可讀指令由電腦執行時,使得所述電腦執行脈衝卷積神經網路演算法,所述脈衝卷積神經網路演算法的特徵在於:1)將脈衝卷積神經網路的第一層的權值複製至若干份,份數至少為用於表徵待分析物屬性的量所轉換成的二進位數字的位數以及所述存算一體單元的存輸入端的最小值,並且將複製後的所述份數的權值進行處理,使複製後的各個權值在數值上依次縮小兩倍,所得數值被分別輸入到多個所述存算一體單元的存輸入端,所述存算一體單元的個數與所述份數相同;2)將所選的、集中用於表徵待分析物屬性的量轉換成二進位數字,並將待輸入的所述二進位數字的每一位元數值,或者根據系統位元寬截位元後的數值作為輸入脈衝,輸入到所述脈衝卷積神經網路的存算一體計算單元中;並且,對於每個表徵待分析物屬性的輸入集合,在對應於所述輸入集合的時間週期內,使所述輸入脈衝保持不變並不間斷地輸入到所述脈衝卷積神經網路中相應的計算單元,直到完成對該被分析物的所述屬性的處理;3)對於用於表徵待分析物屬性的、對應於所述一個組中的每個基本的二進位數字,使所述每個存輸入端的輸入量,分別與一個算輸入端的輸入量相對應,並且絕對值較大的存輸入端的輸入量與較高位的算輸入端的輸入量一一對應;4)在每個所述存算一體單元中,使所述存輸入端的量與所述算輸入端的量進行運算,輸出端得到的電流值代表所述存算一體單元的存輸入端的值與算輸入端的值進行乘法運算的結果。
此外,根據本發明的一個實施例,所述電腦可讀記錄介質的特徵還在於:1)所述脈衝卷積神經網路演算法包括所述第一層的運算以及其它層的運算,並且在其中的任意層,在所述存輸入端與所述算輸入端的運算以外,再加一個運算累加項,所述運算累加項為一個經過修正的偏置值,所述經過修正的偏置值正比於其原始值再除以該層之前所有層的正閾值的累乘,所述正比的比例與該偏置所在的層以及之前的層的權值縮放比例有關;2)所述脈衝卷積神經網路演算法,對所述存算一體單元的輸出持續地進行累加,當所述累加和超過一個設定的正閾值後,對所述累加和進行清零,並且向下一層相應位置的算輸入端釋放一個輸出脈衝;並且當所述累加和小於一個設定的負閾值之後,使該累加和保持在該負閾值上。
此外,根據本發明的一個實施例,所述脈衝卷積神經網路中包括批標準化層,對該批標準化層之前的一個卷積層或全連接層中的權值和偏置進行線性變換,其中所述線性變換中的參數由前面的訓練過程中得到。
此外,根據本發明的一個實施例,用多個計數器對所述脈衝卷積神經網路最後一個全連接層中每個神經元的脈衝個數以及最早出現脈衝的時間進行統計,所述計數器個數為所述神經元的數目或其兩倍。
此外,根據本發明的一個實施例,如果所述多個計數器中至少兩個計數器計數結果均為相同的最大值,則選取最早接收到脈衝的計數器所對應的類別值為最終結果。
此外,根據本發明的一個實施例,在所述多個計數器進行計數的過程中,一個計數器收集的脈衝數比其他計數器顯著地多,則輸出終止運算,將最終的分類結果作為所述多個計數器計數結果的最大值所對應的類別值進行輸出。
此外,根據本發明的一個實施例,在所述第一層的運算之後,還進行平均池化、最大池化、卷積層和全連接層運算中的至少一種。
此外,根據本發明的一個實施例,所述脈衝卷積神經網路演算法包括以下:1)設定若干個時脈信號的時長為一個分析週期;2)將待分析的標的物分為若干分區;3)以所述分析週期為時間單位,逐次分析一個分區的、時間序列信號,將代表該分區的運算結果送至一個記憶體,已分析的信號可以被後續的信號覆蓋;4)分析下一個分區的信號,將所述代表該分區的運算結果送至所述記憶體,直到所完成的多個分區的信號聯合地滿足下一層的分析條件;5)將所述記憶體存儲的各個所述分區的信號送入下一層進行運算。
此外,根據本發明的一個實施例,所述記憶體為暫存器、片上快取、片外存儲或者雲存儲中的至少一種,或者它們的組合。
根據本發明的又一個方面,提供一種基於脈衝卷積神經網路的積體電路,所述脈衝卷積神經網路包括多層神經元,每層神經元包括多個神經元元件,每層神經元中的多個神經元彼此不連接,而連接到後層的神經元;至少一個所述神經元元件帶有至多一個數位邏輯電路,所述數位邏輯電路被用於操作,所述操作包括資料分發,還可以包括最大池化、時脈同步、以及資料快取;並且,最後一層的每個神經元元件帶有一個計數器組,統計該神經元元件的輸出脈衝中具有高電平的脈衝個數;其中,每個神經元包括至少一個存算一體單元和至少一個積分比較電路,所述多個存算一體單元的電流輸出端彼此連接,並且集體地連接到所述積分比較電路上;每個所述積分比較電路包括至少一個積分器和至少一個比較器,所述積分器用於累加電流輸出端的輸出量,所述比較器用於將積分器中被累加的輸出量與在先設定的閾值進行比較,並且進行比較器的清零和脈衝輸出,所述清零的操作使所述的積分器可以進行下一次的累加操作;並且,每個所述存算一體單元包括至少一個存輸入端和至少一個算輸入端以及至少一個電流輸出端,所述存輸入端被設置為接收表徵所述上位機所下發的權值的載流子,所述算輸入端被設置為接收表徵外界或所設定的上層輸入脈衝的載流子;所述電流輸出端被設置為以電流的形式輸出被作為權值的載流子和作為輸入脈衝的載流子共同作用後的載流子。
此外,根據本發明的一個實施例,所述存算一體單元為半導體原理的光電計算單元、憶阻器、快閃記憶體中的一種。
此外,根據本發明的一個實施例,所述數位邏輯電路被設置為從當前池化層的上一層神經元元件中輸出的、數量為池化層尺寸的平方的多個輸出信號中,找出最先出現的高電平脈衝信號;並且,所述數位邏輯電路還被設置為包括一個多路選擇器的功能裝置,使所述高電平脈衝信號經過所述多路選擇器後,保持該高電平脈衝信號所對應的通路開啟,將所述通路與下一個卷積層或全連接層連通;同時忽略與該高電平脈衝信號所對應的通路相並行的其它通路的信號,或者關閉所述其它通路。
此外,根據本發明的一個實施例,將平均池化運算合併到下一個卷積層或全連接層中進行,包括:1)卷積層或全連接層,所述卷積層或全連接層的每個神經元元件中的存算一體單元數量為該層對應演算法的原始尺寸的若干倍,倍數為池化層尺寸的平方,並且所述對應演算法中的每一個權值在所述神經元元件中出現若干次,次數為池化層尺寸的平方,2)其中從上一層神經元元件中輸出的、待傳輸到下一個池化層的、數量為池化層尺寸的平方的輸出脈衝信號,直接作為所述卷積層或全連接層中的存算一體單元的算輸入量,所述存算一體單元分別與同樣的權值對應。
此外,根據本發明的一個實施例,每個所述神經元元件包括一個神經元,並且帶有暫存器,所述暫存器用於實現所涉及的資料操作在時間上的同步。
根據本發明的又一個方面,提供一種脈衝卷積神經網路運算裝置,用於進行脈衝卷積神經網路運算,包括一個上位機和上述的積體電路;其中,所述上位機被設置為處理並生成第一層的權值,所述生成第一層的權值的過程包括:根據一個訓練得出的初始權值經過若干線性變換生成一組權值,該組權值包括多個權值數,其中後一個權值數值為前一個權值數值的1/2;並且,所述上位機將該組權值發送給所述脈衝卷積神經網路的第一層的各個神經元元件中的存算一體單元中的存輸入端;並且,所述上位機將初始權值經過若干線性變換後發送給所述第一層之後的其它層的存算一體單元的存輸入端中,對於緊接著平均池化層之後的卷積層或全連接層的權值,還根據池化尺寸將權值複製若干份,份數為池化層尺寸的平方。
此外,根據本發明的一個實施例,所述裝置被用於按分區來分析標的物,再將各分區的標的物信號合成,構成完整的標的物資訊,並且所述脈衝卷積神經網路運算裝置還包括記憶體,所述記憶體用於存儲已分步處理過的、代表所述標的物的至少一個分區的信號,並在所有的分區信號處理完以後,將所有的分區信號進行合成,或將所有的分區信號發送至另一個處理器進行合成;所述記憶體為暫存器、片上快取、片外存儲或者雲存儲中的至少一種。
根據本發明的又一個方面,提供一種上述積體電路的製造方法,所述方法包括以下步驟:1)通過熱氧化和澱積形成數位邏輯電路、積分比較電路和存算一體單元中電晶體的介質層和閘極;所述電晶體至少包括普通邏輯電晶體,高壓電晶體以及浮閘電晶體;2)通過澱積MIM介質層以及澱積金屬層,或熱氧化和澱積工藝形成積分比較電路中的電容;3)通過離子注入的方式形成數位邏輯電路、積分比較電路和存算一體單元中電晶體的源極和汲極,以及PN接面的P級和N級;4)通過金屬層工藝、金屬層介質工藝以及通孔工藝形成整體電路的金屬連線和有源區-金屬層以及金屬層-金屬層通孔;5)通過應用於憶阻器或快閃記憶體的工藝,生成一個CMOS工藝的存算一體單元。
本發明的目的至少在於,通過將卷積神經網路中的資料轉換為時間脈衝序列的方式,通過電流積分比較電路代替功耗和面積都很大的類比數位轉換器,大大降低整個系統的面積和功耗。
本發明的另一個目在於,將每一層卷積層/全連接層的輸出結果均與下一層卷積層/全連接層直接相連,權值資料可以直接保存在存算一體單元中,整個系統中不需要片上快取,節省了大量資料搬運的過程,從而加快計算的速度。而對於大規模的網路,本發明提出了一種帶有記憶體的脈衝卷積神經網路運算裝置,每一層卷積層/全連接層的輸出結果與下一層卷積層/全連接層直接相連所需要的存算一體單元過多,面積過大,所以通過片上或片外的記憶體保存部分資料,用時間換空間的方式將大大減少所需要的硬體資源。
本發明中所述的存算一體單元,並不具體到某一種特定裝置,只要存算一體單元中可以保存資料,通過多個存算一體單元組合可以完成向量點乘的運算即可。對於每一個存算一體單元,有存輸入端、算輸入端和輸出端,存輸入端的資料可以長時間保存,輸出端的值與算輸入端和和存輸入端的乘積成正比,且多個存算一體單元的輸出端可以進行求和。
接下來分別以光電計算單元、憶阻器、快閃記憶體為例,描述存算一體單元。
實施例1
光電計算單元中的計算單元為包括三大功能區的多功能區結構,如圖1所示,三大功能區為:載流子控制區、耦合區、光生載流子收集區和讀出區,具體功能分別如下:
載流子控制區:負責控制並調製光電計算單元內的載流子,並且作為計算單元的電輸入埠,輸入其中一個運算量作為電輸入量;或者只控制並調製計算單元內的載流子,通過其他區域輸入電輸入量。
耦合區:負責連接光生載流子收集區和讀出區,使得光子入射產生的光生載流子作用於光電計算單元內的載流子,形成運算關係。
光生載流子收集區和讀出區:其中收集區負責吸收入射的光子並收集產生的光生載流子,並且作為計算單元的光輸入埠,輸入其中一個運算量作為光輸入量;讀出區可以作為計算單元的電輸入埠,輸入其中一個運算量作為電輸入量,並且作為計算單元的輸出埠,輸出被光輸入量和電輸入量作用後的載流子作為單元輸出量;或者通過其他區域輸入電輸入量,讀出區只作為計算單元的輸出埠,輸出被光輸入量和電輸入量作用後的載流子,作為單元輸出量。
在上述例子中,因為光輸入量實際為存儲在半導體裝置內的光生載流子,此載流子可以在相對於運算速度較長的時間內(通常為秒級,更長的能到數年)存儲在光電計算單元中,因此光輸入量即為存算一體單元中的存輸入量,光生載流子收集和讀出區中的收集區為存算一體單元的存輸入端;電輸入量不具備長時間保存在單元內的功能,因此點輸入量為存算一體單元中的算輸入量,光生載流子收集和讀出區中的讀出區或者載流子控制區為存算一體單元的算輸入端,取決於具體工作模式;光電計算單元的最終運算結果在光生載流子收集和讀出區中的讀出區以電流的形式輸出,因此光生載流子收集和讀出區中的讀出區即為存算一體單元的輸出端。
發光單元發出的光作為入射計算單元光生載流子收集和讀出區的光子,參與運算。圖2是光電計算陣列的結構示意圖,其中:1為發光陣列,2為計算陣列。如圖2所示,光電計算陣列包括發光陣列1和計算陣列2。發光陣列1由多個發光單元週期性排列組成,計算陣列2由多個計算單元週期性排列組成。
本實施例所述的光電計算單元,有如下三種具體的裝置實現形式:
實施例1-1
圖3是實施例1-1計算單元結構的截面圖(a)和立體圖(b)。如圖3所示,本實施例的計算單元包括:作為載流子控制區的控制閘極、作為耦合區的電荷耦合層,以及作為光生載流子收集區和讀出區的P型襯底,P型襯底中分為左側收集區和右側讀出區,其中右側讀出區中包括淺槽隔離、通過離子注入形成的N型源端和N型汲端。淺槽隔離位於半導體襯底中部、收集區和讀出區的中間,淺槽隔離通過刻蝕並填充入二氧化矽來形成,以用於隔離收集區和讀出區的電信號。N型源端位於讀出區內靠近底層介質層的一側,通過離子注入法摻雜而形成。N型汲端位於半導體襯底中靠近底層介質層與N型源端相對的另一側,同樣通過離子注入法進行摻雜法形成。應理解,本文中提及的左側、右側、上方以及下方只代表在通過圖中所示視角觀察下的相對位置隨觀察視角變化而變化,並不理解為對具體結構的限制。
在收集區的襯底上施加一個電壓範圍為負壓的脈衝,或在控制閘上施加一個電壓範圍為正壓的脈衝,使得收集區襯底中產生用於光電子收集的耗盡層,並通過右側讀出區讀出收集的光電子數量,作為光輸入端的輸入量。讀出時,在控制閘極上施加一正電壓,使N型源端和收集區N型汲端間形成導電溝道,再通過在N型源端和N型汲端間施加一個偏置脈衝電壓,使得導電溝道內的電子加速形成源汲之間的電流。源汲之間溝道內形成電流的載流子,受到控制閘電壓、源汲間電壓和收集區收集的光電子數量共同作用,作為被光輸入量和電輸入量共同作用後的電子,以電流的形式進行輸出,其中控制閘電壓、源汲間電壓可以作為裝置的電輸入量,光電子數量則為裝置的光輸入量。
耦合區的電荷耦合層用於連接收集區和讀出區,使收集區襯底內耗盡區開始收集光電子以後,收集區襯底表面勢就會受到收集的光電子數量影響;通過電荷耦合層的連接,使得讀出區半導體襯底表面勢受到收集區半導體襯底表面勢影響,進而影響讀出區源汲間電流大小,從而通過判斷讀出區源汲間電流來讀出收集區收集的光電子數量;
載流子控制區的控制閘,用以在其上施加一個脈衝電壓,使得在P型半導體襯底讀出區中產生用於激發光電子的耗盡區,同時也可以作為電輸入端,輸入其中一位運算量。
此外,P型半導體襯底和電荷耦合層之間存在用於隔離的底層介質層;電荷耦合層和控制閘之間亦存在用於隔離的頂層介質層。
實施例1-2
圖是實施例1-2計算單元結構的截面圖(a)和立體圖(b)。如圖4所示,本實施例的計算單元包括:作為載流子控制區的控制閘極、作為耦合區的電荷耦合層,以及作為光生載流子收集區和讀出區的P型半導體襯底,其中P型襯底中包含通過離子注入形成的N型源端和汲端。P型半導體襯底可以同時承擔感光和讀出的工作。N型源端位於讀出區內靠近底層介質層的一側,通過離子注入法摻雜而形成。N型汲端位於半導體襯底中靠近底層介質層與所述N型源端相對的另一側,同樣通過離子注入法進行摻雜法形成。
感光時,在P型半導體襯底上施加一個電壓範圍為負壓的脈衝,同時在作為載流子控制區的控制閘極上施加一個電壓範圍為正壓的脈衝,使得P型襯底中產生用於光電子收集的耗盡層,產生在耗盡區內的電子在控制閘極和P型襯底兩端之間的電場作用下被加速,並在到達獲得足夠高的能量,穿過P型襯底和電荷耦合層之間的底層介質層勢壘,進入電荷耦合層並儲存於此,電荷耦合層中的電荷數量,會影響裝置開啟時的閾值,進而影響讀出時的源汲間電流大小;讀出時,在控制閘極上施加一脈衝電壓,使N型源端和N型汲端間形成導電溝道,再通過在N型源端和N型汲端間施加一個脈衝電壓,使得導電溝道內的電子加速形成源汲之間的電流。源汲之間的電流受到控制閘脈衝電壓、源汲間電壓和電荷耦合層中存儲的電子數量共同作用,作為被光輸入量和電輸入量共同作用後的電子,以電流的形式進行輸出,其中控制閘電壓、源汲間電壓可以作為裝置的電輸入量,電荷耦合層中存儲的光電子數量則為裝置的光輸入量。
耦合區的電荷耦合層用於儲存進入其中的光電子,並改變讀出時裝置閾值大小,進而影響讀出區源汲間電流,從而通過判斷讀出區源汲間電流來讀出感光時產生並且進入電荷耦合層中的光電子數量。
載流子控制區的控制閘,用以在其上施加一個脈衝電壓,使得在P型半導體襯底讀出區中產生用於激發光電子的耗盡區,同時也可以作為電輸入端,輸入其中一位運算量。
此外,P型半導體襯底和電荷耦合層之間存在一層用於隔離的底層介質層;電荷耦合層和控制閘之間亦存在一層用於隔離的頂層介質層。
實施例1-3
圖5是實施例1-3計算單元的結構示意圖(a)和多功能區示意圖(b)。如圖5所示,本實施例的計算單元包括:作為光生載流子收集和讀出區的光電二極體和讀出電晶體,其中,光電二極體通過離子摻雜形成,負責感光。光電二極體的N區通過作為耦合區的光電子耦合引線連接到讀出電晶體的控制閘和重置電晶體的源端上,讀出電晶體的汲端施加一正電壓脈衝(Vd2),作為讀出電流的驅動電壓;曝光前,重置電晶體打開,重置電晶體汲端電壓Vd1施加到光電二極體上,使作為收集區的光電二極體處於反偏狀態,產生耗盡層;曝光時,重置電晶體關斷,光電二極體被電學上隔離,光子入射光電二極體耗盡區後產生光電子,並在二極體中積累,二極體的N區和在電學上通過作為耦合區的光電子耦合引線和N區連接的讀出電晶體控制閘電勢開始下降,進而影響讀出電晶體溝道內的電子濃度。讀出電晶體負責讀出,其汲端施加一正脈衝電壓(Vd2),源端和選址電晶體汲端連接,讀出時,打開選址電晶體,讀出電晶體中產生電流,電流大小受到重置電晶體汲端電壓Vd1、讀出電晶體汲端電壓Vd2和入射光子數共同影響,讀出電晶體溝道內的電子,作為被光輸入量和電輸入量共同作用後的電子,以電流的形式輸出,其中重置電晶體汲端電壓Vd1、讀出電晶體汲端電壓Vd2可以作為裝置的電輸入量,電入射光子數則為裝置的光輸入量。
耦合區的光電子耦合引線用於連接作為光生載流子收集和讀出區中收集區的光電二極體和作為讀出區的讀出電晶體,將光電二極體N區電勢施加到讀出電晶體控制閘上。
作為載流子控制區的重置電晶體,通過其汲端輸入一個正電壓(Vd1)作用於光電二極體,當重置電晶體打開時,正電壓即會作用在光電二極體上,使光電二極體產生耗盡區並感光,同時也可以作為電輸入端,輸入其中一位運算量。
此外,選址電晶體用於控制整個運算裝置作為輸出量的輸出電流的輸出,可以在光電計算單元組成陣列時行列選址使用。
實施例2
憶阻器(RRAM)全稱為記憶電阻器,該裝置可以概括為可在“高阻狀態”和“低阻狀態”之間切換,並可將電阻值長時間存儲的一種特殊的非易失性(NVM)記憶體件。
圖6是RRAM裝置結構示意圖以及其三端概述。如圖6所示,通常該裝置由兩層金屬電極中間夾著可以行成導電通孔的特殊通孔層組,通孔層多由金屬氧化物組成,常見的有如WOx,TaOx等。成當RRAM裝置處於初始模式時,裝置處於高阻態,當有較大偏壓加在裝置兩端時,裝置進入程式設計狀態,特殊通孔層中形成導電通道,並在電壓降低後繼續維持此導電通道的存在並存儲當前電阻值,直到施加一較大負偏壓後裝置進入擦除狀態,導電通道管段,使得裝置重新回到初始高阻態。
使用RRAM裝置作為存算一體裝置,因為其具有長時間存儲電阻值的功能,因此其存輸入端即為處於程式設計狀態時的裝置兩端;電阻輸入完成後裝置即處於低阻態並可以在一定電壓範圍內當作線性電阻使用,利用此線性電阻的範圍即可完成存算一體單元所需的運算,因此其算輸入端即為處於線性電阻範圍內的裝置兩端;當有線性電阻範圍內的偏壓加在裝置兩端時,電流即從RRAM的一端流到另一端,因此此時裝置電流流出的一端即為存算一體裝置中的輸出端。
因為RRAM通常為兩端裝置,因此其存輸入端,算輸入端和輸出端通常為不同工作模式下的相同區域。
實施例3
快閃記憶體(FLASH)為目前最常見的非易失性(NVM)記憶體件,其基本存放裝置單元為浮閘裝置,例如和實施例1-2中描述的光電計算單元類似的結構,或如圖7所示的結構。
圖7是一種快閃記憶體的基本cell單元結構圖。如圖7所示,添加用於擦除和選擇的EG和WL。其基本原理為在一正常MOSFET電晶體的溝道和控制閘極之間添加四周被氧化物隔離層包裹的電荷存儲層,利用此隔離存儲層來存儲電荷以存儲資料,並通過判斷該電晶體的閾值來將存儲的電荷量讀出。其中所述隔離層可以是使用多晶矽製作的浮閘,如圖7中的FG(floating gate),也可以是氮化物層等,電荷存入隔離層多為通過溝道熱電子注入(CHE)的機制來實現。
使用flash裝置作為存算一體裝置,因為存儲在被隔離的電荷存儲層中的電核可以在長時間內保存在裝置當中,因此被存儲的電荷量即為存算一體裝置中的存輸入量,存輸入端即為熱電子注入端,這一機制通常發生在flash裝置P型襯底中的表面溝道的電荷存儲層正下方,如圖7中的FG(floating gate)正下方;flash裝置讀出時,MOSFET電晶體的溝道電流受到源汲間電壓Vds、控制閘極電壓Vgs和電荷存儲層中存儲的電荷量共同作用,因此算輸入端可以為flash裝置的控制閘極,如圖7中的CG(coupling gate)或WL(word line),或者為源端和汲端;因為最終受電輸入量和存輸入量共同作用後的資料以電流的形式從flash源汲間流過,因此flash裝置作為存算一體裝置的輸出端為源端和汲端。
實施例4
本實施例使用上述實施例中的任意一種作為存算一體單元,進行脈衝卷積神經網路的計算,有如下具體的實施方式:
實施例4-1
資料集以MNIST為例,資料集大小為10000*28*28,共10000組測試資料,圖像尺寸為28*28,通道數為1,資料為0-1之間的浮點數,分類數目為10。
卷積神經網路以Lenet-5為例,池化層可以是最大池化,也可以是平均池化,具體網路結構見圖8和圖9。其中圖8是Spiking-Lenet-5的結構示意圖(平均池化),圖9是Spiking-Lenet-5的結構示意圖(最大池化)。
具體地,圖8和圖9中的輸入圖像大小都是28*28,每一個像素值還需要轉化為位元寬為width的二進位數字。第一層是卷積層,卷積核尺寸為5*5,個數為6個,並且每個權值都需要被覆製成比例為1/2的等比數列,一共複製成width個,與同一個像素值的不同位元的0/1對應相乘;每個卷積視窗的大小為5*5,因為第一層只有1個通道,如果是多通道的輸入,則每一個卷積核也應有多通道,每一個通道裡的像素值與卷積核權值對應相乘;關於5*5的卷積視窗,在輸入圖像上選取5*5個像素值,位置相同的像素值與卷積核權值對應相乘;同一個卷積視窗內所有的乘積累加得到的結果,對應於一個神經元電流積分比較電路中的積分值的增量;將卷積視窗在輸入圖像上按照固定順序滑窗,則對應不同的神經元;之後更換不同的卷積核,對應不同的一組神經元。
如圖8和圖9所示,卷積層1上方的28*28*6,即為卷積層1的神經元總個數,28*28為輸出圖像的大小(進行卷積運算時,圖像邊緣在卷積視窗中不足的部分用0進行填補),6與卷積核個數對應,表示輸出圖像的通道數。
在圖8中,該28*28*6的輸出圖像,直接作為卷積層2的輸入,開始進行新的計算。因為這裡採用了平均池化的方式,原本28*28的圖像應該2*2平均,生成14*14的圖像,這裡直接將14*14圖像中任一個像素點在28*28圖像中對應的4個像素點整合在同一個卷積窗口中了,相應地,原本5*5的卷積視窗則變成了10*10,相鄰2*2的像素點對應的權值是一樣的。卷積計算過程與卷積層1類似。
而在圖9中,因為採用了最大池化,所以需要在卷積層2之前加上最大池化層1,功能是4選1,使得卷積層2的輸入圖像大小為14*14。
對於全連接層,就是直接進行矩陣向量乘的操作,圖8中的1600*120是在400*120的基礎上因為平均池化複製權值所致。
最後的10個計數器,則分別統計全連接層3的10個神經元的輸出脈衝信號中,高電平的個數了。根據系統的具體實現方案,還可以添加10個計數器,記錄每個神經元最早生成高電平的時間。
在上位機中,首先要先訓練好卷積神經網路,訓練好的卷積神經網路按照如下公式進行計算:
Figure 02_image001
Figure 02_image003
其中,I為卷積神經網路某一層的輸入,W為權值,B為偏置,O為輸出,channel為輸入通道數,kernelsize為卷積核尺寸。ii為輸出圖像的行,jj為輸出圖像的列,nn為輸出圖像的通道。
再將得到的每一層的權值W和偏置B以及來自於資料集的輸入資料,即第一層的I,進行如下處理:
先考慮來自資料集的輸入資料,在存輸入端量化位寬和資料集輸入位寬之間,選擇更小的那個值作為系統位元寬width。將資料集中的灰度值按照假資料位元寬width進行量化,得到width位的二進位數字,不足的位元數在高位補零。原來的輸入資料即被擴展成width倍的二進位數字,即脈衝信號。
再考慮權值和偏置。如果卷積神經網路中有BN層(批標準化,batch normalization),那麼在訓練的時候,需要匯出bn.weight(γ)、bn.bias(β)、bn.running_mean(mean)、bn.running_var(var)和bn.eps(eps,給分母加上的小量,默認為1e-5),其中,bn.weight(γ)表示:訓練過程中學習到的縮放係數;bn.bias(β)表示:訓練過程中學習到的偏移係數;bn.running_mean(mean)表示:訓練過程中得到的,資料的統計平均值;bn.running_var(var)表示:訓練過程中得到的,資料的統計方差值。並按照如下公式修改該BN層前一層卷積層或全連接層的權值W和偏置B:
Figure 02_image005
Figure 02_image007
這樣就完成了卷積層或全連接層與BN層的合併,在進行推斷任務的時候,僅需保留修正過的W’和B’的卷積層或全連接層計算即可,無需多餘的BN層運算。
還有一些特殊情況,對於第一層,假設輸入圖像的灰度值本應和某個卷積核中的某個權值W’相乘並按照卷積神經網路的計算公式進行累加,那麼將第一層的權值複製為width份,依次保持不變、除以2、除以4等2的指數次冪,將修正後的權值記為W’’。該層的偏置應在上述修正B’的基礎上再乘以2,記為B’’。其中,灰度值量化得到的二進位數字,按照高位到低位元的順序,依次與W’、W’/2、W’/4、W’/8……對應起來排序。
如果該卷積神經網路中使用了平均池化層,那麼該平均池化層的下一層卷積層或全連接層的中的每個權值W’都將被覆製成若干份,該數量為池化層尺寸的平方,比如池化層是2*2的,那麼每個權值都被覆製成4份,將修正後的權值記為W’’。若該層有偏置,則將偏置值在B’的基礎上再放大4倍,記為B’’。
至此,在卷積神經網路層面上,對於輸入、權值和偏置的處理就已經結束了,考慮脈衝卷積神經網路層面。
首先是使用者根據實際需要(比如根據實際量化位元寬以及該層權值的最大絕對值進行縮放調整,以達到盡可能高的精度),會對每一層的權值進行縮放,令新的權值為W’’’。
然後是根據脈衝卷積神經網路的原理,給每層的偏置帶來的修正。
對於第一層而言,其計算公式為O’’’=I’’’*W’’’+B’’’,此處省略了如上文卷積計算公式中複雜的求和運算式,這裡的形式雖然略有不同,但區別僅在於將I改變成了二進位展開的若干輸入I’’,W’’也相應處理成若干倍W’’’。由於不論在任何時刻,W’’’與B’’’的關係都應該能夠計算出與卷積神經網路中O’’對應的O’’’,即如果I’’*W’’’=A1*(I’’*W’’),那麼B’’’=A1*B’’,O’’’=A1*O’’,A1為一個縮放比例。
再考慮第二層,對於第二層而言,其輸入I’’’是由第一層的O’’’按照時間累加,每超過閾值
Figure 02_image009
後生成一次1,否則為0,假設這個時間為T1,即
Figure 02_image011
=
Figure 02_image009
,對於I’’’,每T1時間內僅包含1次1,其餘均為零。假設第二層的I’’’*W’’’+B’’’按照時間累加,每超過閾值
Figure 02_image013
後生成一次1,否則為0,假設這個時間為T2,即
Figure 02_image015
,將第一層的公式代入得:B’’’+W’’’*
Figure 02_image017
,由於在卷積神經網路中,第二層的輸出=O’’*W’’+B’’,其中W’’’=A2*W’’,O’’’=A1*O’’,那麼B’’’=
Figure 02_image019
。之後的第n層同理推導可得:B’’’=
Figure 02_image021
,其中分母的這些超參數
Figure 02_image023
均為在上位機上由用戶設置的值。
所有的權值和偏置都應在修正過的基礎上再按照width的位元寬進行二進位量化得到最終寫入存算一體單元存輸入端的值,記為W’’’’和B’’’’。
上述工作均在上位機中完成,完成後將權值和偏置根據卷積神經網路的計算公式排好順序,寫入存算一體單元中。
存輸入端的輸入全部完成後,上位機向第一層存算一體單元的算輸入端發送輸入脈衝,本裝置開始進行計算任務。
圖10是實施例4-1的由存算一體單元組成的一個神經元示意圖。在脈衝卷積神經網路演算法中,除了輸入與權值之間的對應關係與卷積神經網路演算法保持一致,所有的流通資料均為脈衝信號,即0或1,基本的計算單元為存算一體單元,負責乘法。在此基礎上,如圖10所示,一個神經元包括多個存算一體單元,這些存算一體單元中存輸入端的輸入對應於人腦中神經元的突觸,即W’’’’,算輸入端的輸入對應於突觸連接強度,即I’’’’。此外,神經元中還需有一個細胞體,在每一個時脈週期內,負責將這些存算一體單元的輸出端結果
Figure 02_image025
進行累加,並與該神經元細胞體此時的電勢
Figure 02_image027
進行累加。用公式表示即為:
Figure 02_image029
輸出脈衝的生成公式為:
Figure 02_image031
輸出脈衝生成完之後,神經元電勢經過如下變化,這些都在下一個時脈週期到來之前完成:
Figure 02_image033
其中
Figure 02_image035
Figure 02_image023
均為每層可自行設定的超參數。
Figure 02_image023
為正閾值,
Figure 02_image035
為負閾值。對於不加偏置的神經網路,負閾值也可以設置為0。
該功能由電流積分比較電路實現,並將輸出的結果保存至暫存器中,與時脈上升邊緣對齊,傳送給下一層的神經元。
對於需要加入偏置的某一層卷積層或全連接層,其經過修正的偏置值已經保存在該層每個神經元中的一個存算一體單元中,僅需將該存算一體單元的算輸入始終置為1即可。
有的網路在很多卷積層中都會出現需要補零的情況,因為補零的位置是固定的,只要將相應輸入一直置0即可。
對於平均池化層,需要在下一個卷積層或全連接層中,將需要平均池化的所有輸入直接和相應的神經元連接起來,並將權值複製多份(在上位機中已完成),實現和原來等比例的乘累加。
對於最大池化層,不需要在下一個卷積層或全連接層進行操作,而是需要在這相鄰兩層卷積層或全連接層中間,加上額外的判斷條件,即從計算開始算起,每一個池化視窗所對應的輸入信號中,選擇最早為1的那一路,與下一層卷積層或全連接層接通,其餘的輸入信號就可以被忽略了。這裡的具體實現方式為一些數位邏輯加上多路選擇器。
在全連接層3(即最後一個全連接層)後面,有10個計數器一直在統計這十類接收到的脈衝數目(高電平),並通過控制系統發送給上位機。
方案一:10個計數器的值即時地傳送給上位機。
在上位機中,需要進行這樣的結束條件判斷:當某時刻,有1類計數器中的脈衝數目,要比別的類多a個,a為設定的常數,即認為計算可以結束了,輸出脈衝數目最大的該類類別號。建議設置為4。
如果到了設定的最大時長後,還沒有滿足結束判定條件,就強制結束,找出這10類中脈衝數目最多的那一類。
如果有至少2類中,脈衝數目是一致的,那麼就比較誰最先接收到脈衝,輸出該類。
該圖片計算完成後,上位機發送相應的控制信號給控制系統,將系統中一些需要清零重的地方進行清零重置,然後再發送下一張圖片的輸入脈衝信號,開始下一輪計算。
方案二:10個計數器的值沒有辦法即時地傳送給上位機。
在硬體部分中,這10個計數器的值被傳輸到一個專門的結束條件判斷模組,需要實現這樣的功能:當某時刻,有1類計數器中的脈衝數目,要比別的類多a個,a為設定的常數(建議設置為4),即認為計算可以結束了。或者到了設定的最大時長後,還沒有滿足結束判定條件,就強制結束,這裡的結束指的是拉高一個輸出的結束信號,傳輸給控制系統和上位機,對硬體部分的相應位置進行重置,上位機向控制系統傳輸新的圖像資料,控制系統保存上位機發送的圖像資料,並將接下來需要計算的圖像資料分發給存算一體單元。(這裡根據實際系統中記憶體容量的使用情況,可以有若干種不同的資料傳輸方案,不做限定)
除了結束信號外,當結束信號拉高之後,需要將這10個計數器的值通過控制系統傳送給上位機。此外,除了這10個計數器,在全連接層3的後面還需設置10個計數器,用來記錄這10個神經元最早生成高電平輸出的時間,這10個計數器也將被傳送給上位機。
在上位機中,需要先在10個統計高電平數目的計數器中找出最大值,若有一樣的,則選擇最早生成高電平的那一類,作為最終的分類結果。
整個系統的框圖見圖11和圖12。圖11是整個系統的框圖(平均池化)。圖12是整個系統的框圖(最大池化)。其中Conv1~Conv2表示卷積層,FC1~FC3表示全連接層。如結合圖8、9所描述的Spiking-Lenet-5脈衝卷積神經網路結構圖,圖11和圖12將每一層都分別用硬體實現,資料在不同的模組中流通;此外,硬體部分還有控制系統,用於從上位機接收輸入資料和控制信號,然後分發至Conv1模組中,並從計數器模組中接收統計的結果,再發送給上位機。
整個系統的計算流程圖見圖13和圖14。圖13是整個系統的計算流程圖(平均池化)。圖14是整個系統的計算流程圖(最大池化)。其中CONV1~CONV2表示卷積層,FC1~FC3表示全連接層。
在對圖像進行計算之前,需要先將訓練好的權值和偏置,經過修正之後,寫入存算一體單元的存輸入端。之後對整個硬體加速器的除了存輸入端寫入的資料之外,所有的模組進行重置操作。接著上位機開始向硬體加速器傳輸輸入資料,控制系統接收到這些資料,等第一幅圖的所有輸入資料傳輸完畢後,開始同時對存算一體單元分發資料。由於同一幅圖的輸入資料在該圖像沒有計算完畢之前是一直保持不變的,根據系統的具體設計方案,可以等一幅圖像算完之後再傳輸下一張圖像的輸入資料,或者在第一張圖像算完之前,就將下一張或者若干張圖像的輸入資料保存在硬體加速器中,實現乒乓操作。
對於每一個卷積層或者全連接層模組,存算一體單元接收算輸入端的輸入信號,所有的存算一體單元的計算結果通過串聯的方式將電流相加,輸入至電流積分比較電路中,在該電路中經過積分、與閾值比較,然後生成輸出脈衝,在緊接著的暫存器中完成與時脈上升邊緣對齊的操作,得到該層的輸出。這些模組都是在同時、一刻不停地進行著獨立的運算的。
在圖14中,還多了最大池化模組,CONV1和CONV2的輸出先接入最大池化1、2,在最大池化模組中選擇高電平最早出現的那一路傳輸至下一層。
關於計數器組,方案一:計數器組統計最後一層全連接層每個神經元的輸出脈衝中,高電平的個數,該結果一直在被控制系統傳送回上位機。上位機根據使用者設置的條件,判斷本張圖片的計算是否完成,如果沒有完成則繼續保持現狀,如果完成了,就改變控制信號,將硬體加速器中,電流積分比較電路以及系統中的其它暫存器和計數器進行重置,並開始傳輸新的圖片。
方案二:計數器組統計最後一層全連接層每個神經元的輸出脈衝中高電平的個數,以及每個神經元最早生成高電平脈衝的時間,該結果僅在本輪計算結束後才被控制系統傳送回上位機。本輪計算結束的判斷由數位邏輯根據計數器組統計的結果來完成,如果沒有結束則繼續保持現狀,如果結束了,就向控制系統發送拉高的結束信號,將硬體加速器中,電流積分比較電路以及系統中的其它暫存器和計數器進行重置,存算一體單元等待控制系統分發下一張圖像的資料。上位機接收到該結束信號後,向控制系統傳送新的圖片,並對傳回的計數器組的資料進行處理,得到最終的分類結果。
根據上述實施例,通過將卷積神經網路中的資料轉換為時間脈衝序列的方式,通過電流積分比較電路代替功耗和面積都很大的類比數位轉換器,大大降低整個系統的面積和功耗。另外,將每一層卷積層/全連接層的輸出結果均與下一層卷積層/全連接層直接相連,權值資料可以直接保存在存算一體單元中,整個系統中不需要片上快取,節省了大量資料搬運的過程,從而加快計算的速度。
實施例4-2
本實施例在實施例4-1的基礎上,在積分比較電路中,加入積分比較電路的輸出結果與時脈信號同步的功能,實施例4-1中每一個與積分比較電路相連的暫存器被除去,積分比較電路的輸出直接被接入下一層神經元、最大池化模組或者計數器。除去暫存器的神經元示意圖見圖15,整個系統(去除暫存器、平均池化)的框圖見圖16,整個系統(去除暫存器、最大池化)的框圖見圖17。
實施例4-3
資料集以Cifar-10為例,資料集大小為10000*32*32*3,共10000組測試資料,圖像尺寸為32*32,通道數為3,資料為0-255的整數,分類數目為10。
卷積神經網路以Alexnet為例,這裡採用的模型有所變動,在第一層和第二層卷積層後面緊跟著加BN層,池化層改為平均池化,且所有卷積層的卷積核大小均為3*3,具體網路結構見圖18。
具體地,圖18中的輸入圖像大小是32*32,通道數為3,每一個像素值需要轉化為位元寬為width的二進位數字。第一層是卷積層,卷積核尺寸為3*3,通道數為3,個數為96個,並且每個權值都需要被覆製成比例為1/2的等比數列,一共複製成width個,與同一個像素值的不同位元的0/1對應相乘;3個通道的卷積核與輸入圖像對應;卷積視窗大小為3*3,在輸入圖像上選取3*3個像素值,位置相同的像素值與卷積核權值對應相乘;同一個卷積視窗內所有的乘積累加得到的結果,對應於一個神經元電流積分比較電路中的積分值的增量;將卷積視窗在輸入圖像上按照固定順序滑窗,則對應不同的神經元;之後更換不同的卷積核,對應不同的一組神經元。
如圖18所示,卷積層1上方的32*32*96,即為卷積層1的神經元總個數,32*32為輸出圖像的大小(進行卷積運算時,圖像邊緣在卷積視窗中不足的部分用0進行填補),96與卷積核個數對應,表示輸出圖像的通道數。該3輸出圖像,直接作為卷積層2的輸入,開始進行新的計算。因為這裡採用了平均池化的方式,原本32*32的圖像應該2*2平均,生成16*16的圖像,這裡直接將16*16圖像中任一個像素點在32*32圖像中對應的4個像素點整合在同一個卷積窗口中了,相應地,原本3*3的卷積視窗則變成了6*6,相鄰2*2的像素點對應的權值是一樣的。卷積計算過程與卷積層1類似。其它卷積層同理。
對於全連接層,就是直接進行矩陣向量乘的操作,圖18中的16384*1024是在4096*1024的基礎上因為平均池化複製權值所致。
最後的10個計數器,則分別統計全連接層3的10個神經元的輸出脈衝信號中,高電平的個數了。根據系統的具體實現方案,還可以添加10個計數器,記錄每個神經元最早生成高電平的時間。
在上位機中,首先要先訓練好卷積神經網路,訓練好的卷積神經網路按照如下公式進行計算:
Figure 02_image001
Figure 02_image003
其中,I為卷積神經網路某一層的輸入,W為權值,B為偏置,O為輸出,channel為輸入通道數,kernelsize為卷積核尺寸。ii為輸出圖像的行,jj為輸出圖像的列,nn為輸出圖像的通道。
再將得到的每一層的權值W和偏置B以及來自於資料集的輸入資料,即第一層的I,進行如下處理:
先考慮來自資料集的輸入資料,在存輸入端量化位寬和資料集輸入位寬之間,選擇更小的那個值作為系統位元寬width。將資料集中的RGB值按照假資料位元寬width進行量化,得到width位的二進位數字,不足的位元數在高位補零。原來的輸入資料即被擴展成width倍的二進位數字,即脈衝信號。
再考慮權值和偏置。如果卷積神經網路中有BN層(批標準化,batch normalization),那麼在訓練的時候,需要匯出bn.weight(γ)、bn.bias(β)、bn.running_mean(mean)、bn.running_var(var)和bn.eps(eps,給分母加上的小量,默認為1e-5),其中,bn.weight(γ)表示:訓練過程中學習到的縮放係數;bn.bias(β)表示:訓練過程中學習到的偏移係數;bn.running_mean(mean)表示:訓練過程中得到的,資料的統計平均值;bn.running_var(var)表示:訓練過程中得到的,資料的統計方差值。並按照如下公式修改該BN層前一層卷積層或全連接層的權值W和偏置B:
Figure 02_image005
Figure 02_image007
這樣就完成了卷積層或全連接層與BN層的合併,在進行推斷任務的時候,僅需保留修正過的W’和B’的卷積層或全連接層計算即可,無需多餘的BN層運算。
還有一些特殊情況,對於第一層,假設輸入圖像的RGB值本應和某個卷積核中的某個權值W’相乘並按照卷積神經網路的計算公式進行累加,那麼將第一層的權值複製為width份,依次保持不變、除以2、除以4等2的指數次冪,將修正後的權值記為W’’。該層的偏置應在上述修正B’的基礎上再乘以2,記為B’’。其中,RGB值量化得到的二進位數字,按照高位到低位元的順序,依次與W’、W’/2、W’/4、W’/8……對應起來排序。
如果該卷積神經網路中使用了平均池化層,那麼該平均池化層的下一層卷積層或全連接層的中的每個權值W’都將被覆製成若干份,該數量為池化層尺寸的平方,比如池化層是2*2的,那麼每個權值都被覆製成4份,將修正後的權值記為W’’。若該層有偏置,則將偏置值在B’的基礎上再放大4倍,記為B’’。
至此,在卷積神經網路層面上,對於輸入、權值和偏置的處理就已經結束了,考慮脈衝卷積神經網路層面。
首先是使用者根據實際需要(比如根據實際量化位元寬以及該層權值的最大絕對值進行縮放調整,以達到盡可能高的精度),會對每一層的權值進行縮放,令新的權值為W’’’。
然後是根據脈衝卷積神經網路的原理,給每層的偏置帶來的修正。
對於第一層而言,其計算公式為O’’’=I’’’*W’’’+B’’’,此處省略了如上文卷積計算公式中複雜的求和運算式,這裡的形式雖然略有不同,但區別僅在於將I改變成了二進位展開的若干輸入I’’,W’’也相應處理成若干倍W’’’。由於不論在任何時刻,W’’’與B’’’的關係都應該能夠計算出與卷積神經網路中O’’對應的O’’’,即如果I’’*W’’’=A1*(I’’*W’’),那麼B’’’=A1*B’’,O’’’=A1*O’’,A1為一個縮放比例。
再考慮第二層,對於第二層而言,其輸入I’’’是由第一層的O’’’按照時間累加,每超過閾值
Figure 02_image009
後生成一次1,否則為0,假設這個時間為T1,即
Figure 02_image011
=
Figure 02_image009
,對於I’’’,每T1時間內僅包含1次1,其餘均為零。假設第二層的I’’’*W’’’+B’’’按照時間累加,每超過閾值
Figure 02_image013
後生成一次1,否則為0,假設這個時間為T2,即
Figure 02_image015
,將第一層的公式代入得:B’’’+W’’’*
Figure 02_image017
,由於在卷積神經網路中,第二層的輸出=O’’*W’’+B’’,其中W’’’=A2*W’’,O’’’=A1*O’’,那麼B’’’=
Figure 02_image019
。之後的第n層同理推導可得:B’’’=
Figure 02_image021
,其中分母的這些超參數
Figure 02_image023
均為在上位機上由用戶設置的值。
所有的權值和偏置都應在修正過的基礎上再按照width的位元寬進行二進位量化得到最終寫入存算一體單元存輸入端的值,記為W’’’’和B’’’’。
上述工作均在上位機中完成,完成後將權值和偏置根據卷積神經網路的計算公式排好順序,寫入存算一體單元中。
存輸入端的輸入全部完成後,上位機向第一層存算一體單元的算輸入端發送輸入脈衝,本裝置開始進行計算任務。
圖19是實施例4-2的由存算一體單元組成的一個神經元示意圖。在脈衝卷積神經網路演算法中,除了輸入與權值之間的對應關係與卷積神經網路演算法保持一致,所有的流通資料均為脈衝信號,即0或1,基本的計算單元為存算一體單元,負責乘法。在此基礎上,如圖19所示,一個神經元包括多個存算一體單元,這些存算一體單元中存輸入端的輸入對應於人腦中神經元的突觸,即W’’’’,算輸入端的輸入對應於突觸連接強度,即I’’’’。此外,神經元中還需有一個細胞體,在每一個時脈週期內,負責將這些存算一體單元的輸出端結果
Figure 02_image025
進行累加,並與該神經元細胞體此時的電勢
Figure 02_image027
進行累加。用公式表示即為:
Figure 02_image029
輸出脈衝的生成公式為:
Figure 02_image031
輸出脈衝生成完之後,神經元電勢經過如下變化,這些都在下一個時脈週期到來之前完成:
Figure 02_image033
其中
Figure 02_image035
Figure 02_image023
均為每層可自行設定的超參數。
Figure 02_image023
為正閾值,
Figure 02_image035
為負閾值。對於不加偏置的神經網路,負閾值也可以設置為0。
該功能由電流積分比較電路實現,並將輸出的結果保存片上快取中,對於每一個神經元,需要收集固定時長的輸出脈衝信號,作為一個資料包,該固定時長與輸入脈衝的發送時長一致。當該輸出結果在下一層的計算中所需要的所有資料包均快取完畢後,就會以資料包的形式被傳送給下一層神經元,並且該電流積分比較電路中的累加值會被清零。片上快取的容量以及所需神經元的個數需要根據實際情況,綜合面積、功耗、速度和各層計算速度的平衡這幾個方面來考慮。
對於需要加入偏置的某一層卷積層或全連接層,其經過修正的偏置值已經保存在該層每個神經元中的一個存算一體單元中,僅需將該存算一體單元的算輸入始終置為1即可。
有的網路在很多卷積層中都會出現需要補零的情況,因為補零的位置是固定的,只要將相應輸入在其發送時長內一直置0即可。
對於平均池化層,需要在下一個卷積層或全連接層中,將需要平均池化的所有輸入直接和相應的神經元連接起來,並將權值複製多份(在上位機中已完成),實現和原來等比例的乘累加。
在全連接層3後面,有10個計數器一直在統計這十類接收到的脈衝數目,並通過控制系統發送給上位機。這裡還需要額外的邏輯電路來判斷什麼時候有脈衝,因為最後一層的執行時間相比於前面的層來說很短,並不是一直在運行。根據系統的具體實現方案,還可以添加10個計數器,記錄每個神經元最早生成高電平的時間。
在上位機中,需要對固定時長內接收到的10個脈衝數目進行比較,選其中的最大值,如果添加了10個計數器,記錄每個神經元最早生成高電平的時間,那麼還可以進行輔助比較:如果有至少2類中,脈衝數目是一致的,那麼就比較誰最先接收到脈衝,輸出該類。
該圖片計算完成後,上位機發送相應的控制信號給控制系統,將系統中一些需要清零重置的地方進行清零重置,然後再發送下一張圖片的輸入脈衝信號,開始下一輪計算。
整個系統的框圖見圖20。如結合圖18所描述的Spiking-Alexnet脈衝卷積神經網路結構圖,圖20中將每一層都分別用硬體實現,資料在不同的模組中流通;此外,硬體部分還有控制系統,用於從上位機接收輸入資料和控制信號,將輸入資料寫入片上快取,並從計數器模組中接收統計的結果,再發送給上位機。特別地,整個系統中還有片上快取和與其相對應的邏輯電路,邏輯電路接收控制系統的控制信號,根據資料分發計算的順序,生成片上快取的控制信號和存數位址,將從Conv1~Conv5接收到的輸出脈衝保存至片上快取;根據實際快取容量,使快取中不再會被使用到的資料被新的資料覆蓋;根據資料分發計算的順序,生成片上快取的控制信號和讀數位址,將Conv1~Conv5以及FC1計算所需的輸入資料讀出。
整個系統的計算流程圖見圖21。如圖21所示,在對圖像進行計算之前,需要先將訓練好的權值和偏置,經過修正之後,寫入存算一體單元的存輸入端。之後對整個硬體加速器的除了存輸入端寫入的資料之外,所有的模組進行重置操作。接著上位機開始向硬體加速器傳輸輸入資料,控制系統接收到這些資料,並寫入片上快取中,等CONV1模組進行一次計算所需的所有輸入資料傳輸完畢後,片上快取開始對CONV1模組的存算一體單元分發資料,全部分發完畢後,CONV1模組開始計算。此時上位機的傳送速率,應與整個系統各個模組的計算速度以及片上快取容量相結合考慮。但應確保固定時長T後,CONV1模組下一次計算所需的資料在T時間內已經保存在片上快取上了。
對於每一個卷積層或者全連接層模組,存算一體單元接收算輸入端的輸入信號,所有的存算一體單元的計算結果通過串聯的方式將電流相加,輸入至電流積分比較電路中,在該電路中經過積分、與閾值比較,然後生成輸出脈衝,在緊接著的暫存器中完成與時脈上升邊緣對齊的操作,得到該層的輸出。這些模組都是在同時進行著獨立的運算的。每個模組的連續工作時間以固定時長T為單位,在T個時脈週期內,存算一體單元及電流積分比較電路都在連續不間斷地進行計算。該T個時脈週期結束後,電流積分比較電路收到來自控制系統的控制信號,進行重置歸零操作,等待下一次計算的開始。
對於每一個卷積或者全連接1模組,算輸入端的輸入信號都來自於片上快取,即對於這些模組的每一次時長為T個時脈週期的計算,開始的前提條件是該次計算所需要的全部輸入已經由片上快取讀取出來了。對於全連接2和全連接3模組,其輸入信號來自于上一個全連接層的輸出信號。對於每一個卷積模組,其每一個神經元的輸出信號,都會按照以T為單位大小進行打包,存儲在片上快取中。
計數器組統計最後一層全連接層每個神經元的輸出脈衝中,高電平的個數,當固定時長的計算時間結束後,該結果被控制系統傳送回上位機。上位機改變控制信號,將硬體加速器中,電流積分比較電路及其暫存器和計數器進行重置,並開始傳輸新的圖片。根據系統的具體實現方案,還可以添加10個計數器,記錄每個神經元最早生成高電平的時間,用於分類結果的輔助判斷。
根據上述實施例,對於大規模的網路,通過利用片上快取保存部分資料,用時間換空間的方式將大大減少所需要的硬體資源。
實施例4-4
本實施例在實施例4-3的基礎上,將片上快取改為暫存器,邏輯控制電路也要相應修改,因為暫存器的定位方式與片上快取不同。系統框圖見圖22。
實施例4-5
本實施例在實施例4-3的基礎上,將片上快取改為片外的記憶體,對於硬體加速器部分,就僅包含每一層的存算一體單元和計數器部分,實施例4-3中的片上快取及其邏輯控制電路被移到了片外,由FPGA開發板(現場可程式設計閘陣列)和DDR(雙倍速率同步動態隨機記憶體)代替其功能。系統框圖見圖23。
實施例4-6
本實施例在實施例4-3的基礎上,將片上快取改為片外的雲存儲,對於硬體加速器部分,就僅包含每一層的存算一體單元和計數器部分,實施例4-3中的片上快取及其邏輯控制電路被移到了片外,由上位機和雲存儲代替其功能。系統框圖見圖24。
實施例5
本實施例使用上述實施例中的任意一種作為存算一體單元,進行脈衝卷積神經網路的計算,有如下具體的實施方式:
圖25是實施例5的Alexnet網路結構圖。如圖25所示,資料集以cifar-10為例,資料集大小為10000*32*32*3,其中共10000組測試資料,輸入圖像尺寸為32*32,通道數為3,資料為0-255之間的整數,分類數目為10。
卷積神經網路以Alexnet為例,這裡採用的模型有所變動,在第一層和第二層卷積層後面緊跟著加BN層,池化層可以是最大池化,也可以是平均池化,且所有卷積層的卷積核大小均為3*3。
每一層卷積層的輸出按照如下公式獲得:
Figure 02_image001
其中I為該層的輸入,W為權值,B為偏置,O為輸出,channel為輸入通道數,kernelsize為卷積核尺寸,此處均為3。
每一層全連接層的輸出按照如下公式獲得:
Figure 02_image003
其中I為該層的輸入,W為權值,B為偏置,O為輸出,channel為輸入通道數。
現在上述卷積神經網路的基礎上,生成脈衝卷積神經網路。該脈衝卷積神經網路的最基本計算單元為存算一體單元,負責完成乘法。圖28是實施例5的神經元的結構圖。如圖28所示,一個神經元包括多個存算一體單元,所述存算一體單元與在上述實施例4中的描述類似,在此不再贅述。
對於需要加入BN層的某一層Layer M,在訓練的時候,需要匯出bn.weight(γ)、bn.bias(β)、bn.running_mean(mean)、bn.running_var(var)和bn.eps(eps,給分母加上的小量,默認為1e-5),並按照如下公式修改Layer M的權值和偏置:
Figure 02_image005
Figure 02_image007
這樣就完成了Layer M(卷積層或全連接層)與BN層的合併,在進行推斷任務的時候,僅需保留修正過W和B的Layer M即可,無需多餘的BN層運算。
考慮脈衝卷積神經網路第一層的輸入資料,假設像素值為64,其轉換為二進位為01000000,0-255可由8位二進位數字表示,不足的位元數在高位補零。假設該像素值本應和某個卷積核中的某個權值W相乘。那麼本來的64*W就需要被轉換為128*(0*W+1*W/2+0*W/4+0*W/8+0*W/16+0*W/32+0*W/64+0*W/128),即輸入擴展成原來的8倍,權值也先複製7份,然後分別除以2的不同指數冪,再進行累加。並且該輸入一直保持不變,直到整輪計算結束,整輪計算對應資料集中的一組測試資料,在Cifar-10中,即為32*32*3的圖像。此外,該層若有偏置,如果該層權值保持原始比例,則其偏置值應在上述修正公式的基礎上再乘以2;如果該層權值整體進行了縮放,則偏置值也應隨之進行同比例的縮放。
相比于現有脈衝卷積神經網路演算法中,輸入脈衝由亂數產生,即隨機生成0-1的小數,與像素值/255進行比較,如果亂數比這個數小,則生成脈衝,否則不生成脈衝。但該方法因為具有很大的隨機性,只有計算大量脈衝後才能盡可能貼近原始像素值。而本發明的演算法中,輸入脈衝與原始像素值是完全等價的,不需要大量脈衝。
此外,根據實際需求,還會存在對權值進行量化的情況。即假設權值最多只能由WW位二進位數字表示,對於WW不小於8(0-255所需的8位二進位數字,對於範圍更大的輸入資料即不是8)的情況,輸入資料以及權值複製如上文所述。但如果WW小於8,那麼將權值除以較大2的指數冪的那些份,可能就直接等於0了,輸入對其沒有任何影響,可以直接略去。即輸入取從高位開始的WW位元,複製的權值也取絕對值較大的WW個。
對於每一層的偏置修正,除了由於閾值產生的修正外,此前的各層的權值縮放都將在該層進行累積,比如說第一層的權值經過調整後,最終在積分比較電路中累加的結果,為卷積神經網路模型中理論值的2倍,那麼除了第一層的偏置需要隨之變成2倍外,到了第二層,這個2倍依然會從輸入脈衝的頻率上體現出來,也就是說第二層公式中的I*W+B中的I已經是原來的2倍了,那麼B也應該相應變成原來的2倍。其它層以此類推,總之修正依據就是I*W與B的縮放倍數是一致的。
除了卷積層、全連接層和BN層之外,卷積神經網路中還有池化層,常用最大池化和平均池化兩種,假設池化視窗的尺寸為2*2,則池化的作用是將原始的4個輸入變成1個輸出,將圖像的尺寸減小減少計算量。最大池化就是在這4個輸入中選擇最大值輸出,平均池化就是對這4個輸入計算平均值輸出。
對於平均池化層,需要在下一個卷積層或全連接層中,將需要平均池化的所有輸入直接和相應的神經元連接起來,並將權值複製多份,實現和原來等比例的乘累加,所述處理與在上述實施例4-2中描述的類似,在此不再贅述。
由於在脈衝神經網路演算法中,等比例地將某一層所有的權值和偏置都放大或者縮小,對於最終的輸出結果沒有影響,所以在下一個卷積層或全連接層中,直接計算
Figure 02_image037
即可,若該層有偏置,則將偏置值在前文所述的所有修正的基礎上再放大4倍寫入存算一體單元的存輸入端。
相比於專門添加一個由神經元組成的平均池化層,通過閾值的方法生成的脈衝信號,與理論結果會有一定的誤差。將平均池化層併入下一層後,就可以保證在平均池化的計算上,沒有精度的損失,所得到的Spiking-Alexnet網路結構(平均池化)如圖26所示。
對於最大池化層,不需要在下一個卷積層或全連接層進行操作,而是需要在這相鄰兩層卷積層或全連接層中間,加上額外的判斷條件,即從計算開始算起,每一個池化視窗所對應的輸入信號中,選擇最早為1的那一路,與下一層卷積層或全連接層接通,其餘的輸入信號就可以被忽略了,所得到的Spiking-Alexnet網路結構(最大池化)如圖27所示。
如圖所示,在全連接層3後面,有10或20個計數器一直在統計接收到的脈衝數目(高電平)以及最早接收到脈衝(高電平)的時間。每一個計數器對應一個神經元,也對應著圖像分類的一類結果,
當某時刻,有1類計數器中的脈衝數目,要比別的類多a個,a為設定的超參數,即認為計算可以結束了,輸出脈衝數目最大的該類類別號。建議設置為4。
如果到了設定的最大時長後,還沒有滿足結束判定條件,就強制結束,找出這10類中脈衝數目最多的那一類。
如果有至少2類中,脈衝數目是一致的,那麼就比較誰最先接收到脈衝,輸出該類。
根據上述實施例的脈衝卷積神經網路演算法,通過改變輸入方式、將平均池化層併入下一個卷積層或全連接層、支持帶偏置的卷積層和全連接層的計算、支援在網路中添加BN層、設定計算結束判定條件、加入對特殊情況的輔助判斷等優化改進方法,可以大大節約現有脈衝卷積神經網路演算法的計算時間,並提高圖像分類的準確率。此外,考慮了脈衝卷積神經網路演算法的結束,針對計算時長也作出了改進。
此外,根據本發明上述實施例所述的存算一體單元可以實施於積體電路中,接下來將描述這種積體電路的製造方法,其包括以下步驟:
1)通過熱氧化和澱積形成數位邏輯電路、積分比較電路和存算一體單元中電晶體的介質層和閘極;所述電晶體包括普通邏輯電晶體,高壓電晶體以及浮閘電晶體等,
2)通過澱積MIM介質層以及澱積金屬層,或熱氧化和澱積工藝形成積分比較電路中的電容,所述電容可以為MIM電容也可以是MOS電容;
3)通過離子注入的方式形成數位邏輯電路、積分比較電路和存算一體單元中電晶體的源極和汲極,以及PN接面的P級和N級;
4)通過金屬層工藝、金屬層介質工藝以及通孔工藝形成整體電路的金屬連線和有源區-金屬層以及金屬層-金屬層通孔;
5)通過相應於憶阻器或快閃記憶體的工藝,生成一個CMOS工藝的存算一體單元。
基於脈衝卷積神經網路的積體電路的生產工藝,其中的數位邏輯電路、神經元中的積分比較電路均可使用標準CMOS工藝生產,神經元中的存算一體單元,如果使用光電計算單元或快閃記憶體的話,則同樣可以使用標準CMOS工藝生產,關於標準CMOS工藝對於基於此工藝的裝置如電晶體二極體或電容等半導體裝置的生產流程,在此不詳細敘述,其中光電計算單元使用CIS圖像感測器工藝生產能夠獲得更好的裝置性能。如使用憶阻器作為神經元中的存算一體單元,則需要使用相容此種憶阻器的特殊工藝,其中使用特殊工藝的存算一體裝置和使用標準CMOS工藝的數位邏輯電路和積分比較電路的集成方式,可以通過直接在矽基襯底上使用特殊工藝製作特殊裝置的方式來實現,也可以通過晶圓級集成或片外集成等方式來實現。如中國專利CN110098324A中提到的在矽基襯底上生成高耐久性憶阻器的方法等多種憶阻器製作工藝方法。
本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的裝置及演算法步驟,能夠以電子硬體、或者電腦軟體和電子硬體的結合來實現。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本公開的範圍。
在本公開所提供的幾個實施例中,應該理解到,所揭露的設備和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或元件可以結合或者可以集成到另一個設備,或一些特徵可以忽略,或不執行。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
所述功能如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個電腦可讀取存儲介質中。基於這樣的理解,本公開的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟體產品的形式體現出來,該電腦軟體產品存儲在一個存儲介質中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)執行本公開各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬碟、唯讀記憶體、隨機存取記憶體、磁碟或者光碟等各種可以存儲程式碼的介質。
以上所述,僅為本公開的具體實施方式,但本公開的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本公開揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本公開的保護範圍之內。因此,本公開的保護範圍應所述以請求項的保護範圍為準。
1:發光陣列 2:計算陣列 Conv1~Conv5、CONV1~CONV5:卷積層 FC1~FC3:全連接層 Vd1、Vd2:電壓
圖1是根據實施例的計算單元的多功能區框圖。 圖2是根據實施例的光電計算陣列的結構示意圖。 圖3是實施例1-1計算單元結構的截面圖(a)和立體圖(b)。 圖4是實施例1-2計算單元結構的截面圖(a)和立體圖(b)。 圖5是實施例1-3計算單元的結構示意圖(a)和多功能區示意圖(b)。 圖6是根據實施例的RRAM裝置結構示意圖以及其三端概述。 圖7是根據實施例的快閃記憶體的基本cell單元結構圖。 圖8是實施例4-1的Spiking-Lenet-5的結構示意圖(平均池化)。 圖9是實施例4-1的Spiking-Lenet-5的結構示意圖(最大池化)。 圖10是實施例4-1的由存算一體單元組成的一個神經元示意圖。 圖11是實施例4-1的整個系統的框圖(平均池化)。 圖12是實施例4-1的整個系統的框圖(最大池化)。 圖13是實施例4-1的整個系統的計算流程圖(平均池化)。 圖14是實施例4-1的整個系統的計算流程圖(最大池化)。 圖15是實施例4-2的由存算一體單元組成的一個神經元示意圖(去除暫存器)。 圖16是實施例4-2的整個系統的框圖(平均池化、去除暫存器)。 圖17是實施例4-2的整個系統的框圖(最大池化、去除暫存器)。 圖18是實施例4-3的Spiking-Alexnet的結構示意圖。 圖19是實施例4-3的由存算一體單元組成的一個神經元示意圖。 圖20是實施例4-3的整個系統的框圖。 圖21是實施例4-3的整個系統的計算流程圖。 圖22是實施例4-4的整個系統的框圖。 圖23是實施例4-5的整個系統的框圖。 圖24是實施例4-6的整個系統的框圖。 圖25是實施例5的Alexnet網路結構圖。 圖26是實施例5的Spiking-Alexnet網路結構圖(平均池化)。 圖27是實施例5的Spiking-Alexnet網路結構圖(最大池化)。 圖28是實施例5的神經元的結構圖。

Claims (29)

  1. 一種脈衝卷積神經網路演算法,基於存算一體單元,所述存算一體單元包括至少一個存輸入端,至少一個算輸入端以及一個輸出端,其特徵在於: 將脈衝卷積神經網路的第一層的權值複製至若干份,份數至少為用於表徵待分析物屬性的量所轉換成的二進位數字的位數以及所述存算一體單元的存輸入端的最小值,並且將複製後的所述份數的權值進行處理,使複製後的各個權值在數值上依次縮小兩倍,所得數值被分別輸入到多個所述存算一體單元的存輸入端,所述存算一體單元的個數與所述份數相同; 將所選的、集中用於表徵待分析物屬性的量轉換成二進位數字,並將待輸入的所述二進位數字的每一位元數值,或者根據系統位元寬截位元後的數值作為輸入脈衝,輸入到所述脈衝卷積神經網路的存算一體計算單元中;並且,對於每個表徵待分析物屬性的輸入集合,在對應於所述輸入集合的時間週期內,使所述輸入脈衝保持不變並不間斷地輸入到所述脈衝卷積神經網路中相應的計算單元,直到完成對該被分析物的所述屬性的處理; 對於用於表徵待分析物屬性的、對應於所述一個組中的每個基本的二進位數字,使所述每個存輸入端的輸入量,分別與一個算輸入端的輸入量相對應,並且絕對值較大的存輸入端的輸入量與較高位的算輸入端的輸入量一一對應;以及 在每個所述存算一體單元中,使所述存輸入端的量與所述算輸入端的量進行運算,輸出端得到的電流值代表所述存算一體單元的存輸入端的值與算輸入端的值進行乘法運算的結果。
  2. 如請求項1所述的脈衝卷積神經網路演算法,其特徵在於: 包括所述第一層的運算以及其它層的運算,並且在其中的任意層,在所述存輸入端與所述算輸入端的運算以外,再加一個運算累加項,所述運算累加項為一個經過修正的偏置值,所述經過修正的偏置值正比於其原始值再除以該層之前所有層的正閾值的累乘,所述正比的比例與該偏置所在的層以及之前的層的權值縮放比例有關;以及 所述脈衝卷積神經網路演算法,對所述存算一體單元的輸出持續地進行累加,當所述累加和超過一個設定的正閾值後,對所述累加和進行清零,並且向下一層相應位置的算輸入端釋放一個輸出脈衝;並且當所述累加和小於一個設定的負閾值之後,使該累加和保持在該負閾值上。
  3. 如請求項2所述的脈衝卷積神經網路演算法,其特徵在於,所述脈衝卷積神經網路中包括批標準化層,對該批標準化層之前的一個卷積層或全連接層中的權值和偏置進行線性變換,其中所述線性變換中的參數由前面的訓練過程中得到。
  4. 如請求項1至3中任一項所述的脈衝卷積神經網路演算法,其特徵在於,用多個計數器對所述脈衝卷積神經網路最後一個全連接層中每個神經元的脈衝個數以及最早出現脈衝的時間進行統計,所述計數器個數為所述神經元的數目或其兩倍。
  5. 如請求項4所述的脈衝卷積神經網路演算法,其特徵在於,如果所述多個計數器中至少兩個計數器計數結果均為相同的最大值,則選取最早接收到脈衝的計數器所對應的類別值為最終結果。
  6. 如請求項4所述的脈衝卷積神經網路演算法,其特徵在於,計數器顯著地多,則輸出終止運算,將最終的分類結果作為所述多個計數器計數結果的最大值所對應的類別值進行輸出。
  7. 如請求項1所述的脈衝卷積神經網路演算法,其特徵在於,在所述第一層的運算之後,還進行平均池化、最大池化、卷積層和全連接層運算中的至少一種。
  8. 如請求項1至3,及7中任一項所述的脈衝卷積神經網路演算法,其特徵在於: 設定若干個時脈信號的時長為一個分析週期; 將待分析的標的物分為若干分區; 以所述分析週期為時間單位,逐次分析一個分區的時間序列信號,將代表該分區的運算結果送至一個記憶體; 分析下一個分區的信號,將所述代表該分區的運算結果送至所述記憶體,直到所完成的多個分區的信號聯合地滿足下一層的分析條件;以及 將所述記憶體存儲的各個所述分區的信號送入下一層進行運算。
  9. 如請求項8所述的脈衝卷積神經網路演算法,其特徵在於,所述記憶體為暫存器、片上快取、片外存儲或者雲存儲中的至少一種,或者它們的組合。
  10. 一種基於脈衝卷積神經網路的積體電路,其特徵在於,所述積體電路執行如請求項1-3,及7中任一項所述的脈衝卷積神經網路演算法。
  11. 一種基於脈衝卷積神經網路的積體電路,其特徵在於,所述積體電路執行如請求項8所述的脈衝卷積神經網路演算法。
  12. 一種電腦可讀記錄介質,其上存儲電腦可讀指令,當所述電腦可讀指令由電腦執行時,使得所述電腦執行脈衝卷積神經網路演算法,所述脈衝卷積神經網路演算法的特徵在於: 將脈衝卷積神經網路的第一層的權值複製至若干份,份數至少為用於表徵待分析物屬性的量所轉換成的二進位數字的位數以及所述存算一體單元的存輸入端的最小值,並且將複製後的所述份數的權值進行處理,使複製後的各個權值在數值上依次縮小兩倍,所得數值被分別輸入到多個所述存算一體單元的存輸入端,所述存算一體單元的個數與所述份數相同; 將所選的、集中用於表徵待分析物屬性的量轉換成二進位數字,並將待輸入的所述二進位數字的每一位元數值,或者根據系統位元寬截位元後的數值作為輸入脈衝,輸入到所述脈衝卷積神經網路的存算一體計算單元中;並且,對於每個表徵待分析物屬性的輸入集合,在對應於所述輸入集合的時間週期內,使所述輸入脈衝保持不變並不間斷地輸入到所述脈衝卷積神經網路中相應的計算單元,直到完成對該被分析物的所述屬性的處理; 對於用於表徵待分析物屬性的、對應於所述一個組中的每個基本的二進位數字,使所述每個存輸入端的輸入量,分別與一個算輸入端的輸入量相對應,並且絕對值較大的存輸入端的輸入量與較高位的算輸入端的輸入量一一對應;以及 在每個所述存算一體單元中,使所述存輸入端的量與所述算輸入端的量進行運算,輸出端得到的電流值代表所述存算一體單元的存輸入端的值與算輸入端的值進行乘法運算的結果。
  13. 如請求項12所述的電腦可讀記錄介質,其特徵在於: 所述脈衝卷積神經網路演算法包括所述第一層的運算以及其它層的運算,並且在其中的任意層,在所述存輸入端與所述算輸入端的運算以外,再加一個運算累加項,所述運算累加項為一個經過修正的偏置值,所述經過修正的偏置值正比於其原始值再除以該層之前所有層的正閾值的累乘,所述正比的比例與該偏置所在的層以及之前的層的權值縮放比例有關;以及 所述脈衝卷積神經網路演算法,對所述存算一體單元的輸出持續地進行累加,當所述累加和超過一個設定的正閾值後,對所述累加和進行清零,並且向下一層相應位置的算輸入端釋放一個輸出脈衝;並且當所述累加和小於一個設定的負閾值之後,使該累加和保持在該負閾值上。
  14. 如請求項12所述的電腦可讀記錄介質,其特徵在於,所述脈衝卷積神經網路中包括批標準化層,對該批標準化層之前的一個卷積層或全連接層中的權值和偏置進行線性變換,其中所述線性變換中的參數由前面的訓練過程中得到。
  15. 如請求項12至14中任一項所述的電腦可讀記錄介質,其特徵在於,用多個計數器對所述脈衝卷積神經網路最後一個全連接層中每個神經元的脈衝個數以及最早出現脈衝的時間進行統計,所述計數器個數為所述神經元的數目或其兩倍。
  16. 如請求項15所述的電腦可讀記錄介質,其特徵在於,如果所述多個計數器中至少兩個計數器計數結果均為相同的最大值,則選取最早接收到脈衝的計數器所對應的類別值為最終結果。
  17. 如請求項15所述的電腦可讀記錄介質,其特徵在於,在所述多個計數器進行計數的過程中,一個計數器收集的脈衝數比其他計數器顯著地多,則輸出終止運算,將最終的分類結果作為所述多個計數器計數結果的最大值所對應的類別值進行輸出。
  18. 如請求項12所述的電腦可讀記錄介質,其特徵在於,在所述第一層的運算之後,還進行平均池化、最大池化、卷積層和全連接層運算中的至少一種。
  19. 如請求項12至14,及18中任一項所述的電腦可讀記錄介質,其特徵在於,所述脈衝卷積神經網路演算法包括以下: 設定若干個時脈信號的時長為一個分析週期; 將待分析的標的物分為若干分區; 以所述分析週期為時間單位,逐次分析一個分區的、時間序列信號,將代表該分區的運算結果送至一個記憶體,已分析的信號可以被後續的信號覆蓋; 分析下一個分區的信號,將所述代表該分區的運算結果送至所述記憶體,直到所完成的多個分區的信號聯合地滿足下一層的分析條件;以及 將所述記憶體存儲的各個所述分區的信號送入下一層進行運算。
  20. 如請求項19所述的電腦可讀記錄介質,其特徵在於,所述記憶體為暫存器、片上快取、片外存儲或者雲存儲中的至少一種,或者它們的組合。
  21. 一種基於脈衝卷積神經網路的積體電路,所述脈衝卷積神經網路包括多層神經元,每層神經元包括多個神經元元件,每層神經元中的多個神經元彼此不連接,而連接到後層的神經元; 至少一個所述神經元元件帶有至多一個數位邏輯電路,所述數位邏輯電路被用於操作,所述操作包括資料分發;並且,最後一層的每個神經元元件帶有一個計數器組,統計該神經元元件的輸出脈衝中具有高電平的脈衝個數;其中, 每個神經元包括至少一個存算一體單元和至少一個積分比較電路,所述多個存算一體單元的電流輸出端彼此連接,並且集體地連接到所述積分比較電路上; 每個所述積分比較電路包括至少一個積分器和至少一個比較器,所述積分器用於累加電流輸出端的輸出量,所述比較器用於將積分器中被累加的輸出量與在先設定的閾值進行比較,並且進行比較器的清零和脈衝輸出,所述清零的操作使所述的積分器可以進行下一次的累加操作; 並且,每個所述存算一體單元包括至少一個存輸入端和至少一個算輸入端以及至少一個電流輸出端,所述存輸入端被設置為接收表徵所述上位機所下發的權值的載流子,所述算輸入端被設置為接收表徵外界或所設定的上層輸入脈衝的載流子;以及 所述電流輸出端被設置為以電流的形式輸出被作為權值的載流子和作為輸入脈衝的載流子共同作用後的載流子。
  22. 如請求項21所述的積體電路,其特徵在於,所述存算一體單元為半導體原理的光電計算單元、憶阻器、快閃記憶體中的一種。
  23. 如請求項21或22所述的積體電路,其特徵在於,所述數位邏輯電路的所述操作還包括最大池化、時脈同步和資料快取。
  24. 如請求項21所述的積體電路,其特徵在於,所述數位邏輯電路被設置為從當前池化層的上一層神經元元件中輸出的、數量為池化層尺寸的平方的多個輸出信號中,找出最先出現的高電平脈衝信號;並且, 所述數位邏輯電路還被設置為包括一個多路選擇器的功能裝置,使所述高電平脈衝信號經過所述多路選擇器後,保持該高電平脈衝信號所對應的通路開啟,將所述通路與下一個卷積層或全連接層連通;同時忽略與該高電平脈衝信號所對應的通路相並行的其它通路的信號,或者關閉所述其它通路。
  25. 如請求項21所述的積體電路,其特徵在於,將平均池化運算合併到下一個卷積層或全連接層中進行,包括: 卷積層或全連接層,所述卷積層或全連接層的每個神經元元件中的存算一體單元數量為該層對應演算法的原始尺寸的若干倍,倍數為池化層尺寸的平方,並且所述對應演算法中的每一個權值在所述神經元元件中出現若干次,次數為池化層尺寸的平方, 其中從上一層神經元元件中輸出的、待傳輸到下一個池化層的、數量為池化層尺寸的平方的輸出脈衝信號,直接作為所述卷積層或全連接層中的存算一體單元的算輸入量,所述存算一體單元分別與同樣的權值對應。
  26. 如請求項21所述的積體電路,其特徵在於,每個所述神經元元件包括一個神經元,並且帶有暫存器,所述暫存器用於實現所涉及的資料操作在時間上的同步。
  27. 一種脈衝卷積神經網路運算裝置,用於進行脈衝卷積神經網路運算,包括一個上位機和如請求項21所述的積體電路;其中, 所述上位機被設置為處理並生成第一層的權值,所述生成第一層的權值的過程包括:根據一個訓練得出的初始權值經過若干線性變換生成一組權值,該組權值包括多個權值數,其中後一個權值數值為前一個權值數值的1/2;並且,所述上位機將該組權值發送給所述脈衝卷積神經網路的第一層的各個神經元元件中的存算一體單元中的存輸入端;並且,所述上位機將初始權值經過若干線性變換後發送給所述第一層之後的其它層的存算一體單元的存輸入端中,對於緊接著平均池化層之後的卷積層或全連接層的權值,還根據池化尺寸將權值複製若干份,份數為池化層尺寸的平方。
  28. 如請求項27所述的脈衝卷積神經網路運算裝置,其特徵在於,所述裝置被用於按分區來分析標的物,再將各分區的標的物信號合成,構成完整的標的物資訊,並且 所述脈衝卷積神經網路運算裝置還包括記憶體,所述記憶體用於存儲已分步處理過的、代表所述標的物的至少一個分區的信號,並在所有的分區信號處理完以後,將所有的分區信號進行合成,或將所有的分區信號發送至另一個處理器進行合成;以及 所述記憶體為暫存器、片上快取、片外存儲或者雲存儲中的至少一種。
  29. 一種積體電路的製造方法,其特徵在於,所述積體電路為請求項21所述的積體電路,所述方法包括以下步驟: 通過熱氧化和澱積形成數位邏輯電路、積分比較電路和存算一體單元中電晶體的介質層和閘極;所述電晶體至少包括普通邏輯電晶體,高壓電晶體以及浮閘電晶體; 通過澱積MIM介質層以及澱積金屬層,或熱氧化和澱積工藝形成積分比較電路中的電容; 通過離子注入的方式形成數位邏輯電路、積分比較電路和存算一體單元中電晶體的源極和汲極,以及PN接面的P級和N級; 通過金屬層工藝、金屬層介質工藝以及通孔工藝形成整體電路的金屬連線和有源區-金屬層以及金屬層-金屬層通孔;以及 通過應用於憶阻器或快閃記憶體的工藝,生成一個CMOS工藝的存算一體單元。
TW109142950A 2019-12-09 2020-12-04 脈衝卷積神經網路演算法、積體電路及其製造方法、運算裝置及存儲介質 TWI774147B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201911249006.1 2019-12-09
CN201911249006.1A CN113033759A (zh) 2019-12-09 2019-12-09 脉冲卷积神经网络算法、集成电路、运算装置及存储介质

Publications (2)

Publication Number Publication Date
TW202123032A true TW202123032A (zh) 2021-06-16
TWI774147B TWI774147B (zh) 2022-08-11

Family

ID=76329546

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109142950A TWI774147B (zh) 2019-12-09 2020-12-04 脈衝卷積神經網路演算法、積體電路及其製造方法、運算裝置及存儲介質

Country Status (3)

Country Link
CN (1) CN113033759A (zh)
TW (1) TWI774147B (zh)
WO (1) WO2021115262A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113625963A (zh) * 2021-07-16 2021-11-09 南京大学 基于存算一体器件的卷积神经网络层间的存储装置及方法
CN113642724B (zh) * 2021-08-11 2023-08-01 西安微电子技术研究所 一种高带宽存储的cnn加速器
CN113592081B (zh) * 2021-08-11 2024-08-02 清华大学 数据处理装置及数据处理方法
CN113657580B (zh) * 2021-08-17 2023-11-21 重庆邮电大学 基于微环谐振器和非易失性相变材料的光子卷积神经网络加速器
CN113792010A (zh) * 2021-09-22 2021-12-14 清华大学 存算一体芯片及数据处理方法
CN113837373A (zh) * 2021-09-26 2021-12-24 清华大学 数据处理装置以及数据处理方法
CN113902106B (zh) * 2021-12-06 2022-02-22 成都时识科技有限公司 脉冲事件决策装置、方法、芯片及电子设备
CN114139644A (zh) * 2021-12-07 2022-03-04 清华大学 数据处理装置及方法和数据处理装置的制造方法
CN114723023B (zh) * 2022-03-03 2024-04-23 北京大学 数据通信方法及系统、脉冲神经网络运算系统
CN114692681B (zh) * 2022-03-18 2023-08-15 电子科技大学 基于scnn的分布式光纤振动及声波传感信号识别方法
CN114997388B (zh) * 2022-06-30 2024-05-07 杭州知存算力科技有限公司 存算一体芯片用基于线性规划的神经网络偏置处理方法
CN115545190B (zh) * 2022-12-01 2023-02-03 四川轻化工大学 一种基于概率计算的脉冲神经网络及其实现方法
CN116167424B (zh) * 2023-04-23 2023-07-14 深圳市九天睿芯科技有限公司 基于cim的神经网络加速器、方法、存算处理系统与设备
CN116205274B (zh) * 2023-04-27 2023-07-21 苏州浪潮智能科技有限公司 一种脉冲神经网络的控制方法、装置、设备及存储介质
WO2023160735A2 (zh) * 2023-06-09 2023-08-31 南京大学 一种运算方法和运算单元
CN116663632B (zh) * 2023-08-02 2023-10-10 华中科技大学 感存算一体智能感知系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3025344B1 (fr) * 2014-08-28 2017-11-24 Commissariat Energie Atomique Reseau de neurones convolutionnels
US9646243B1 (en) * 2016-09-12 2017-05-09 International Business Machines Corporation Convolutional neural networks using resistive processing unit array
US10565492B2 (en) * 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
US11354568B2 (en) * 2017-06-30 2022-06-07 Intel Corporation In-memory spiking neural networks for memory array architectures
CN109460817B (zh) * 2018-09-11 2021-08-03 华中科技大学 一种基于非易失存储器的卷积神经网络片上学习系统
CN109800870B (zh) * 2019-01-10 2020-09-18 华中科技大学 一种基于忆阻器的神经网络在线学习系统
CN109871940B (zh) * 2019-01-31 2021-07-27 清华大学 一种脉冲神经网络的多层训练算法
CN110119785B (zh) * 2019-05-17 2020-12-01 电子科技大学 一种基于多层spiking卷积神经网络的图像分类方法
CN110263926B (zh) * 2019-05-18 2023-03-24 南京惟心光电系统有限公司 基于光电计算单元的脉冲神经网络及其系统和运算方法
CN110276047B (zh) * 2019-05-18 2023-01-17 南京惟心光电系统有限公司 一种利用光电计算阵列进行矩阵向量乘运算的方法
CN110334799B (zh) * 2019-07-12 2022-05-24 电子科技大学 基于存算一体的神经网络推理与训练加速器及其运行方法
CN110543933B (zh) * 2019-08-12 2022-10-21 北京大学 基于flash存算阵列的脉冲型卷积神经网络

Also Published As

Publication number Publication date
TWI774147B (zh) 2022-08-11
WO2021115262A1 (zh) 2021-06-17
CN113033759A (zh) 2021-06-25

Similar Documents

Publication Publication Date Title
TWI774147B (zh) 脈衝卷積神經網路演算法、積體電路及其製造方法、運算裝置及存儲介質
Amir et al. 3-D stacked image sensor with deep neural network computation
Bong et al. 14.6 A 0.62 mW ultra-low-power convolutional-neural-network face-recognition processor and a CIS integrated with always-on haar-like face detector
US7098437B2 (en) Semiconductor integrated circuit device having a plurality of photo detectors and processing elements
Abedin et al. Mr-pipa: An integrated multilevel rram (hfo x)-based processing-in-pixel accelerator
Geng et al. An on-chip layer-wise training method for RRAM based computing-in-memory chips
Peng et al. Inference engine benchmarking across technological platforms from CMOS to RRAM
Kaiser et al. Neuromorphic-p2m: processing-in-pixel-in-memory paradigm for neuromorphic image sensors
CN110009102A (zh) 一种基于光电计算阵列的深度残差网络的加速方法
CN110263926B (zh) 基于光电计算单元的脉冲神经网络及其系统和运算方法
CN113052024A (zh) 一种基于忆阻器与传感器的感存算一体电路结构
CN110363287B (zh) 一种面向内存计算和室内是否有人的神经网络设计方法
CN115879530A (zh) 一种面向rram存内计算系统阵列结构优化的方法
CN116110232A (zh) 一种基于分层动态残差图卷积网络的交通流量预测方法
Liu et al. An 1-bit by 1-bit high parallelism in-RRAM macro with co-training mechanism for DCNN applications
CN116049094B (zh) 一种基于光电存算一体单元的多阈值配置装置及其方法
CN110276047A (zh) 一种利用光电计算阵列进行矩阵向量乘运算的方法
Narayanan et al. Neuromorphic technologies for next-generation cognitive computing
CN116881193B (zh) 一种感存算一体宏单元电路、系统及数据处理方法
JP2959279B2 (ja) 電荷積分型二次元アレイ光検出器用信号読み出し回路
US20230289577A1 (en) Neural network system, high density embedded-artificial synaptic element and operating method thereof
US20230292533A1 (en) Neural network system, high efficiency embedded-artificial synaptic element and operating method thereof
CN117672307A (zh) 一种光感存算一体单元的控制方法及应用
WO2023160735A2 (zh) 一种运算方法和运算单元
Cai et al. A Near-array Convolution Computing Scheme Based on WSe 2 Photodiode

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees