TWI834729B - 神經網路處理器及其卷積操作方法 - Google Patents
神經網路處理器及其卷積操作方法 Download PDFInfo
- Publication number
- TWI834729B TWI834729B TW108134606A TW108134606A TWI834729B TW I834729 B TWI834729 B TW I834729B TW 108134606 A TW108134606 A TW 108134606A TW 108134606 A TW108134606 A TW 108134606A TW I834729 B TWI834729 B TW I834729B
- Authority
- TW
- Taiwan
- Prior art keywords
- kernel
- intermediate value
- neural network
- value
- values
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 130
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000015654 memory Effects 0.000 claims abstract description 97
- 239000000543 intermediate Substances 0.000 description 331
- 239000013598 vector Substances 0.000 description 11
- 238000011176 pooling Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 5
- 239000000463 material Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- XEEYBQQBJWHFJM-UHFFFAOYSA-N Iron Chemical compound [Fe] XEEYBQQBJWHFJM-UHFFFAOYSA-N 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910052742 iron Inorganic materials 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/46—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using electromechanical counter-type accumulators
- G06F7/461—Adding; subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
Abstract
一種用於執行神經網路操作的神經網路處理器及其卷積操作方法。所述神經網路處理器可包括:記憶體,儲存電腦可讀指令及內核中間資料,所述內核中間資料包含基於內核資料中所包含的多個權重值而計算的多個內核中間值;以及至少一個處理器,用以執行所述電腦可讀指令,以通過基於輸入特徵圖而在所述多個內核中間值中選擇至少一個內核中間值來執行卷積操作。
Description
本發明概念涉及神經網路處理器及其卷積操作方法,且更具體來說涉及用於執行神經網路操作的神經網路處理器、以及神經網路裝置的卷積操作方法。
[相關專利申請的交叉參考]
本申請主張2018年10月31日在韓國智慧財產權局提出申請的第10-2018-0132559號韓國專利申請的權利,所述韓國專利申請的公開內容全部併入本文中供參考。
神經網路是指類比生物大腦的計算架構。近來,隨著神經網路技術開發,正在積極地執行其中使各種電子系統通過使用神經網路裝置來分析輸入資料並提取有效資訊的研究,所述神經網路裝置使用一個或多個神經網路模型。
關於複雜的輸入資料,神經網路裝置執行數目巨大的操作。因此,將需要更高效地處神經網路操作,以容許神經網路裝置即時分析輸入並提取資訊。
本發明概念提供一種用於在神經網路處理器及所述神經網路處理器的卷積操作方法中減少操作量及/或提高能量效率的方法及設備。
根據本發明概念的方面,提供一種用於執行神經網路操作的神經網路處理器,所述神經網路處理器可包括:記憶體,儲存電腦可讀指令及內核中間資料,所述內核中間資料包含基於內核資料中所包含的多個權重值而計算的多個內核中間值;以及至少一個處理器,被配置以執行所述電腦可讀指令,以通過基於輸入特徵圖而在所述多個內核中間值中選擇至少一個內核中間值來執行卷積操作。
根據本發明概念的另一方面,提供一種用於執行神經網路操作的神經網路處理器的卷積操作方法,所述卷積操作方法可包括:通過使用內核資料中所包含的多個權重值執行操作來產生多個內核中間值;基於輸入特徵圖中所包含的一個或多個輸入特徵值而在所述多個內核中間值中選擇至少一個內核中間值;以及通過使用所述至少一個內核中間值及輸出中間值執行至少一個操作來產生經更新輸出中間值。
根據本發明概念的另一方面,提供一種用於執行神經網路操作的神經網路處理器,所述神經網路處理器可包括:記憶體,儲存電腦可讀指令及多個內核中間值,所述多個內核中間值是基於內核資料中所包含的多個權重值而計算;以及至少一個處理器,被配置以執行所述電腦可讀指令,以基於輸入特徵圖及所述多個內核中間值而執行卷積操作,且基於所述輸入特徵圖中所包含的一個或多個輸入特徵值而從所述多個內核中間值中選擇第一內核中間值。
在下文中,將參照附圖更全面地闡述本發明概念,在附圖中示出本發明概念的示例性實施例。
圖1示出根據本發明概念實施例的電子系統10。電子系統10可基於神經網路而即時分析輸入資料並提取資訊,且基於所提取資訊,可確定上面安裝有電子系統10的電子裝置的情景及/或控制所述電子裝置的元件。舉例來說,電子系統10可應用於無人機、機器人設備(例如高級駕駛員輔助系統(advanced driver assistance system,ADAS))、智慧電視機(television,TV)、智慧型電話、醫療裝置、移動裝置、圖像顯示裝置、測量裝置、物聯網(Internet of Things,IoT)裝置等,且另外,可安裝在各種電子裝置中的一者或多者上。
電子系統10可包括一個或多個智慧財產權(intellectual property,IP)及/或神經網路處理器100(例如,在圖2中,神經網路處理單元(neural network processing unit,NPU)100)。舉例來說,電子系統10可包括第一IP IP1至第三IP IP3及神經網路處理器100。
電子系統10可包括各種IP。舉例來說,所述IP可包括至少一個處理單元(本文中也被稱為所述處理單元)、所述處理單元中所包括的多個核心、多格式編碼器(Multi-Format Codec,MFC)、視頻模組(例如,照相機介面、聯合攝影專家組(Joint Photographic Experts Group,JPEG)處理器、視頻處理器、及/或混頻器)、三維(three-dimensional,3D)圖形核心、音訊系統、驅動器、顯示驅動器、揮發性記憶體、非揮發性記憶體、記憶體控制器、輸入及/或輸出介面塊、及/或高速緩衝記憶體。第一IP IP1至第三IP IP3中的每一者可包括各種IP中的至少一種。
用於連接各IP的技術的實例涉及基於系統匯流排的連接方法。舉例來說,可應用高級精簡指令集電腦機器(Advanced RISC(Reduced Instruction Set Computer)Machine,ARM)的高級微控制器匯流排架構(Advanced Microcontroller Bus Architecture,AMBA)協定來作為標準匯流排規範。AMBA協定的匯流排類型的實例可包括高級高性能匯流排(Advanced High-Performance Bus,AHB)、高級週邊匯流排(Advanced Peripheral Bus,APB)、高級可擴展介面(Advanced eXtensible Interface,AXI)、AXI4、及AXI一致性擴展(AXI Coherency Extensions,ACE)。上述匯流排類型中的AXI是各IP之間的介面協定,且可提供多未確認位址功能(multiple outstanding address function)、資料交錯功能(data interleaving function)等。除以上所述的連接方法之外,其他類型的協議(例如索尼克公司(SONICs Inc.)的uNetwork、IBM的CoreConnect、及/或OCP-IP的開放核心協定(Open Core Protocol))也適用於系統匯流排,且可用於連接各IP。
神經網路處理器100可產生神經網路,可訓練(或學習)所述神經網路,可基於所接收的輸入資料而執行計算並基於所述計算的結果而產生資訊信號,及/或可重新訓練所述神經網路。所述神經網路可包括各種類型的模型,例如卷積神經網路(convolution neural network,CNN)(例如,GoogleNet、AlexNet及VGG網路)、具有卷積神經網路的區域(a region with a convolution neural network,R-CNN)、區域提議網路(region proposal network,RPN)、迴圈神經網路(recurrent neural network,RNN)、基於堆疊的深度神經網路(stacking-based deep neural network,S-DNN)、狀態空間動態神經網路(state-space dynamic neural network,S-SDNN)、解卷積網路、深度信念網路(deep belief network,DBN)、受限玻耳茲曼機(restricted Boltzman machine,RBM)、全卷積網路、長短期記憶(long short-term memory,LSTM)網路、及/或分類網路,但各實施例並非僅限於此。神經網路處理器100可包括用於根據神經網路的模型來執行計算的一個或多個處理器。神經網路處理器100還可包括用於儲存與神經網路的模型對應的程式的專用記憶體。神經網路處理器100可被稱為神經網路處理裝置、神經網路處理器、神經網路處理單元(NPU)等。
神經網路處理器100可經由系統匯流排從所述一個或多個IP接收各種輸入資料,且可基於輸入資料而產生資訊信號。舉例來說,神經網路處理器100可通過對輸入資料執行神經網路操作來產生資訊信號,且神經網路操作可包括卷積操作。稍後將參照圖4A及圖4B來詳細闡述神經網路處理器100的卷積操作。由神經網路處理器100產生的資訊信號可包括例如以下各種識別信號中的一種:話音識別信號、物件識別信號、圖像識別信號、及/或生物資訊識別信號。舉例來說,神經網路處理器100可接收視頻流中所包含的幀資料作為輸入資料,且可依據所述幀資料而產生關於由所述幀資料表示的圖像中所包含的物件的識別信號。然而,各實施例並非僅限於此,並且神經網路處理器100可接收各種輸入資料且可根據所述輸入資料來產生識別信號。
在根據本發明概念實施例的電子系統10中,神經網路處理器100可通過初步使用用於卷積操作的內核資料中所包含的權重值執行操作而產生內核中間資料(kernel intermediate data),並儲存所述內核中間資料。舉例來說,神經網路處理器100可通過預先執行可在卷積操作中對權重值執行的操作的各種組合而產生並儲存內核中間資料。在實施例中,內核中間資料可包含多個內核中間值,且所述多個內核中間值中的每一者可為通過線性組合多個權重值而獲得的值。將參照圖6A、圖6B及圖11A至圖11C更詳細地闡述內核中間資料。神經網路處理器100可通過基於輸入特徵圖中所包含的輸入特徵值而從所述多個內核中間值選擇至少一個內核中間值來執行卷積操作。
如上所述,依據根據本發明概念實施例的電子系統10,在卷積操作之前,可通過預先對在卷積操作中使用的內核資料的權重值執行操作而提供內核中間值,從而減少卷積操作的計算量且另外提高神經網路處理器100的能量效率。
圖2示出根據本發明概念實施例的電子系統10。在實施例中,圖2示出圖1所示電子系統10的實施例。因此,本文不再對電子系統10進行與參照圖1所作說明相同或相似的說明。
電子系統10可包括神經網路處理單元(NPU)100、隨機存取記憶體(random access memory,RAM)200、處理器300、記憶體400及/或感測器模組500。NPU 100可為圖1所示神經網路處理器100。
RAM 200可臨時儲存程式、資料及/或指令。舉例來說,在處理器300的控制下及/或視引導代碼(booting code)而定,記憶體400中所儲存的程式及/或資料可臨時儲存在RAM 200中。可通過使用動態隨機存取記憶體(dynamic random access memory,DRAM)及/或靜態隨機存取記憶體(static random access memory,SRAM)來實作RAM 200。
處理器300可控制電子系統10的總體操作。舉例來說,處理器300可為中央處理單元(central processing unit,CPU)。處理器300可包括單個處理器核心或多個處理器核心。處理器300可處理或執行RAM 200及記憶體400中所儲存的程式及/或資料。舉例來說,處理器300可通過執行記憶體400中所儲存的程式來控制電子系統10的功能。
記憶體400是用於儲存資料的儲存裝置,且可儲存例如作業系統(operating system,OS)、各種程式及/或各種資料。記憶體400可為但不限於DRAM。記憶體400可包括揮發性記憶體及/或非揮發性記憶體中的至少一者。非揮發性記憶體可包括唯讀記憶體(read only memory,ROM)、可程式設計ROM(programmable ROM,PROM)、電可程式設計ROM(electrically programmable ROM,EPROM)、電可擦除可程式設計ROM(electrically erasable and programmable ROM,EEPROM)、快閃記憶體記憶體、相變RAM(phase-change RAM,PRAM)、磁性RAM(magnetic RAM,MRAM)、電阻性RAM(resistive RAM,RRAM)、鐵電性RAM(ferroelectric RAM,FeRAM)等。揮發性記憶體可包括DRAM、SRAM、同步DRAM(synchronous DRAM,SDRAM)、PRAM、MRAM、RRAM、鐵電性RAM(FeRAM)等。根據實施例,記憶體400可包括以下中的至少一者:硬碟驅動器(hard disk drive,HDD)、固態驅動器(solid state drive,SSD)、壓縮快閃記憶體(compact flash,CF)、安全數位(secure digital,SD)卡、微型安全數位(micro-secure digital,Micro-SD)卡、小型安全數位(mini-secure digital,Mini-SD)卡、極速數位(extreme digital,xD)卡、及/或儲存棒。
感測器模組500可收集關於電子系統10的附近的資訊。感測器模組500可從電子系統10以外感測及/或接收圖像信號,並將所感測及/或所接收的圖像信號轉換成圖像資料,即圖像幀。為此,感測器模組500可包括感測設備,即,例如拍攝設備、圖像感測器、光檢測與測距(light detection and ranging,LIDAR)感測器、超聲波感測器及/或紅外感測器等各種感測設備中的至少一者,或者可從感測設備接收感測信號。根據實施例,感測器模組500可將圖像幀提供到神經網路處理器100。舉例來說,感測器模組500可包括圖像感測器,且可拍攝電子系統10的外部環境以產生視頻流,並且可依序將視頻流的連續圖像幀提供到神經網路處理器100。
在根據本發明概念實施例的電子系統10中,NPU 100可使用用於卷積操作的內核資料中所包含的權重值來執行操作,從而產生並儲存內核中間資料。NPU 100可通過基於輸入特徵圖中所包含的輸入特徵值而從多個內核中間值選擇至少一個內核中間值來執行卷積操作。
如上所述,依據根據本發明概念實施例的電子系統10,在卷積操作之前,可通過預先對在卷積操作中所使用的內核資料的權重值執行操作來提供內核中間值,從而減少卷積操作的計算量且另外提高NPU 100的能量效率。
圖3示出卷積神經網路的結構作為神經網路結構的實例。神經網路NN可包括多個層L1至Ln。所述多個層L1至Ln中的每一者可為線性層或非線性層。根據實施例,至少一個線性層耦合到至少一個非線性層,且可通過一個層來表示耦合的結果。舉例來說,線性層可包括卷積層、全連接層,且非線性層可包括池化層及啟動層。
舉例來說,第一層L1可為卷積層,第二層L2可為池化層,且第n層可為作為輸出層的全連接層。神經網路NN可進一步包括啟動層,且可進一步包括被配置以執行另一種類的操作的層。
所述多個層L1至Ln中的每一者可接收從輸入資料(例如,圖像幀)或前一層產生的特徵圖作為輸入特徵圖,並對所述輸入特徵圖執行操作以產生輸出特徵圖或識別信號REC。在實施例中,所述特徵圖表示其中表達了輸入資料各種特徵的資料。第一特徵圖FM1、第二特徵圖FM2、第三特徵圖FM3至第n特徵圖FMn可例如各自具有二維(two-dimensional,2D)矩陣形式或三維(3D)矩陣(或被稱為張量(tensor))形式。第一特徵圖FM1、第二特徵圖FM2、第三特徵圖FM3至第n特徵圖FMn中的每一者可具有寬度W(或被稱為行)、高度H(或被稱為列)、及深度D。這些參數可分別對應於坐標系上的x軸、y軸及z軸。在實施例中,深度D可由通道的數目表示。
第一層L1可對第一特徵圖FM1與權重圖WM執行卷積,以產生第二特徵圖FM2。權重圖WM可對第一特徵圖FM1進行濾波,且可由濾波器或內核表示。權重圖WM的深度(即,權重圖WM的通道的數目)與第一特徵圖FM1的深度(即,通道的數目)相同,且可對權重圖WM與第一特徵圖FM1的相同的通道執行卷積。可利用第一輸入特徵圖FM1作為滑動窗(sliding window)而使權重圖WM以交叉方式移位元。移位量可由“步長(stride length)”或“步幅(stride)”表示。在每次移位期間,可將權重圖WM中所包含的權重與第一特徵圖FM1的與權重圖WM交疊的一部分的所有各條特徵資料相乘,並再進行相加。第一特徵圖FM1的所述一部分的與權重圖WM中所包含的權重值交疊的所述各條特徵資料可被稱為所提取資料。在對第一特徵圖FM1與權重圖WM執行卷積時,可產生第二特徵圖FM2的一個通道。雖然圖3示出一個權重圖WM,但實際上可對多個權重圖與第一特徵圖FM1執行卷積,且因此,可產生第二特徵圖FM2的多個通道。換句話說,第二特徵圖FM2的通道的數目可對應於權重圖WM的數目。
第二層L2可通過利用池化(pooling)來改變第二特徵圖FM2的空間大小而產生第三特徵圖FM3。池化可由採樣或下採樣(down-sampling)表示。可使2D池化窗PW在第二特徵圖FM2上以池化窗PW的大小為單位而移位元,且可選擇第二特徵圖FM2的與池化窗PW交疊的一部分的各條特徵資料中的最大(或上限)值(或作為另一選擇,各條特徵資料的平均值)。因此,可從第二特徵圖FM2產生空間大小已改變的第三特徵圖FM3。第三特徵圖FM3的通道的數目與第二特徵圖FM2的通道的數目相同。
第n層Ln可將第n特徵圖FMn的各特徵組合,以分類出輸入資料的類別(class)CL。第n層可產生與所述類別對應的識別信號REC。根據實施例,輸入資料可對應於視頻流中所包含的幀資料,且第n層Ln可基於從前一幀提供的第n特徵圖FMn來識別由所述幀資料表示的圖像中所包含的物件並通過提取與所述物件對應的類別來產生與所識別物件對應的識別信號REC。
圖4A及圖4B是用於解釋神經網路的卷積操作的示意圖。
參照圖4A,輸入特徵圖201可包含D個通道,且每一通道的輸入特徵圖可具有為H的行大小及為W的列大小(其中D、H及W為自然數)。內核202中的每一者可具有為R的行大小及為S的列大小,且內核202可包含數目與輸入特徵圖201的通道的數目D(或深度)對應的通道,其中R及S是自然數。輸出特徵圖203可通過輸入特徵圖201與內核202之間的3D卷積操作而被產生,且根據所述3D卷積操作而可包含Y個通道。
可參照圖4B來闡述通過一個輸入特徵圖與一個內核之間的2D卷積操作來產生輸出特徵圖的過程,且可對全部通道的輸入特徵圖201與全部通道的內核202執行圖4B所示2D卷積操作,並且因此可產生全部通道的輸出特徵圖203。
參照圖4B,為方便解釋,假設輸入特徵圖210具有6×6大小,原始內核220具有3×3大小,且輸出特徵圖230具有4×4大小,但各實施例並非僅限於此。可利用各種大小的特徵圖及各種大小的內核來實作神經網路。在輸入特徵圖210、原始內核220及輸出特徵圖230中所定義的值均為示例性值,且本發明概念的實施例並非僅限於此。
原始內核220可在以3×3大小的窗為單位而在輸入特徵圖210上滑動的同時執行卷積操作。所述卷積操作可表示通過以下來計算輸出特徵圖230的每一特徵資料的操作:首先將輸入特徵圖210的窗的各條特徵資料乘以原始內核220上與所述各條特徵資料對應的位置處的相應權重值,且接著將乘法的結果相加。輸入特徵圖210的窗中所包含的被乘以權重值的所述各條特徵資料可被稱為從輸入特徵圖210提取的所提取資料。舉例來說,原始內核220可首先與輸入特徵圖210的第一所提取資料211一起經歷卷積。換句話說,可將第一所提取資料211的各條特徵資料1、2、3、4、5、6、7、8及9分別乘以原始內核220的權重值-1、-3、4、7、-2、-1、-5、3及1,且因此,可獲得-1、-6、12、28、-10、-6、-35、24及9。接下來,可將所獲得的值-1、-6、12、28、-10、-6、-35、24及9相加以得到15,且可將輸出特徵圖230的第一列及第一行上的特徵資料231確定為15。輸出特徵圖230的第一列及第一行上的特徵資料231對應於第一所提取資料211。相似地,可對輸入特徵圖210的第二所提取資料212與原始內核220執行卷積,且因此,可將輸出特徵圖230的第一列及第二行上的特徵資料232確定為4。最終,可對第十六所提取資料213(其為輸入特徵圖210的最後一個所提取資料)與原始內核220執行卷積,且因此,可將輸出特徵圖230的第四列及第四行上的特徵資料233確定為11。
換句話說,可通過重複在輸入特徵圖210的所提取資料與原始內核220的權重值之間進行乘法並將乘法的結果相加來實現對單個輸入特徵圖210與單個原始內核220的卷積,且作為卷積的結果,可產生輸出特徵圖230。
如上所述,在卷積操作中,數次將內核中所包含的權重值與輸入特徵圖210中所包含的輸入特徵值相乘。在卷積操作中,隨著乘法操作的數目增加,操作量會增加,這使神經網路處理器100的能量效率降低。
參照圖1、圖4A及圖4B,依據根據本發明概念實施例的神經網路處理器100,在卷積操作之前,神經網路處理器100可使用內核資料中所包含的權重值來產生並儲存內核中間資料。神經網路處理器100可在卷積操作中使用輸入特徵圖及內核中間資料。在實施例中,神經網路處理器100可通過基於輸入特徵圖中所包含的輸入特徵值而從多個內核中間值選擇至少一個內核中間值來執行卷積操作。依據根據本發明概念實施例的神經網路處理器100,可使用權重值來執行先前的操作,且可通過儲存內核中間值來減少卷積操作中的乘法操作量。因此,神經網路處理器100的卷積操作中的操作量可減少,且神經網路處理器100的能量效率可改善。以下將參照附圖更詳細地闡述根據本發明概念實施例的神經網路處理器100的卷積操作方法及用於所述卷積操作方法的裝置。
圖5示出根據本發明概念實施例的神經網路處理器100。神經網路處理器100可包括內部記憶體120、算術電路140及/或至少一個處理器160(在本文中也被稱為處理器160)。本文中不再對圖5所示神經網路處理器100進行與參照圖1及圖2所作說明相同或相似的說明。根據一些示例性實施例,在本文中被闡述為由神經網路處理器100及算術電路140中的任一者或兩者執行的操作可由執行程式碼的至少一個處理器(例如,處理器160)來執行,所述程式碼包括與所述操作對應的指令。所述指令可儲存在神經網路處理器100的記憶體(例如,內部記憶體120)中。在本發明中所使用的用語‘處理器’可例如指代具有電路的由硬體實作的資料處理裝置,所述電路在物理上被結構化成執行例如包括被表示為程式中所包含的代碼及/或指令的操作在內的所需操作。在至少一些示例性實施例中,以上所提及的由硬體實作的資料處理裝置可包括但不限於微處理器、中央處理單元(CPU)、處理器核心、多核心處理器;多處理器、專用積體電路(application-specific integrated circuit,ASIC)及現場可程式設計閘陣列(field programmable gate array,FPGA)。
內部記憶體120可從神經網路處理器100之外接收外部資料。所述外部資料也可被稱為輸入資料。內部記憶體120可儲存外部資料、在計算中使用的各種資料、及/或權重值。為此,內部記憶體120可包括儲存輸入特徵圖IFM的輸入特徵記憶體122、儲存內核資料的內核記憶體124、及/或儲存內核中間資料KID的內核中間資料記憶體126。輸入特徵記憶體122、內核記憶體124及內核中間資料記憶體126可被配置為獨立的硬體,但並非僅限於此。舉例來說,輸入特徵記憶體122、內核記憶體124及/或內核中間資料記憶體126中的兩個或更多個記憶體可表示與單個硬體裝置內的不同區對應的記憶體。可使用各種類型的記憶體(例如DRAM、SRAM及/或SDRAM)來實作輸入特徵記憶體122、內核記憶體124及內核中間資料記憶體126中的每一者。
輸入特徵記憶體122可儲存輸入特徵圖IFM並將輸入特徵圖IFM提供到算術電路140。
內核記憶體124可儲存用於卷積操作的內核資料。所述內核資料可包含多個權重值。
內核中間資料記憶體126可儲存基於內核資料中所包含的所述多個權重值而計算的內核中間資料KID。在實施例中,可在外部計算並向神經網路處理器100傳送(例如,由神經網路處理器100接收)及/或可由內部算術單元(例如處理器160)計算內核中間資料KID。內核中間資料KID可包含多個內核中間值。所述多個內核中間值中的每一者可為通過線性組合所述多個權重值而獲得的值。內核中間資料記憶體126可將內核中間資料KID提供到算術電路140。
算術電路140可從輸入特徵記憶體122接收輸入特徵圖IFM,且從內核中間資料記憶體126接收內核中間資料KID。算術電路140可使用所接收的輸入特徵圖IFM及所接收的內核中間資料KID來執行卷積操作。算術電路140可通過執行卷積操作來產生輸出特徵OF,且通過重複產生輸出特徵OF的過程來產生輸出特徵圖。
由算術電路140接收的輸入特徵圖IFM可包含多個輸入特徵值。算術電路140可基於多個輸入特徵值中用於當前操作的輸入特徵值而從內核中間資料KID中所包含的所述多個內核中間值選擇至少一個內核中間值。在實施例中,當輸入特徵值為1位元資料時,算術電路140可輸出所選的至少一個內核中間值作為輸出特徵OF。在實施例中,當輸入特徵值為位元數目大於或等於2個位的資料時,算術電路140可對通過將內部暫存器中所儲存的輸出中間值移位大於或等於1個位的位元數目而獲得的經移位輸出中間值與所選的至少一個內核中間值進行求和,且通過執行所述求和操作至少一次而產生輸出特徵OF。輸入特徵值的位元數目可根據神經網路處理器100的特定應用而變化。以下將參照附圖更詳細地闡述由算術電路140執行的卷積操作。
處理器160可控制神經網路處理器100的總體操作。舉例來說,處理器160可為中央處理單元(CPU)。處理器160可包括單個處理器核心或多個處理器核心。處理器160可通過執行內部記憶體120中所儲存的程式來控制神經網路處理器100的功能。
圖6A及圖6B示出根據本發明概念實施例的內核中間資料記憶體126。內核中間資料記憶體126可儲存內核中間資料KID。在實施例中,圖6A示出其中用於卷積操作的內核資料包含兩個權重值的實施例,且圖6B示出其中用於卷積操作的內核資料包含三個權重值的實施例。然而,圖6A及圖6B僅是為了方便解釋起見而示出實例,且內核資料中所包含的權重的數目將不僅限於此。
參照圖6A,用於卷積操作的內核資料可包含兩個權重值。舉例來說,內核資料可包含第一權重值w_1及第二權重值w_2。舉例來說,內核資料可為由兩個列及一個行形成的矩陣或者由一個列及兩個行形成的矩陣。
內核中間資料KID可包含多個內核中間值。所述多個內核中間值中的每一者可為通過線性組合多個權重值而獲得的值。舉例來說,可如以下[方程式1]來表達所述多個內核中間值中的每一者。
[方程式1] KIV = a_1 * w_1 + a_2 * w_2
(KIV:內核中間值,w_1:第一權重值,w_2:第二權重值,a_1、a_2:實數)
在實施例中,被乘以權重值的係數a_1及a_2可為由M個位表示的數值(其中M是自然數)。舉例來說,圖6A示出其中a_1及a_2是由1個位表示的數值的實施例。因此,a_1及a_2中的每一者可具有值‘0’或‘1’,且內核中間數據KID可包含從a_1與a_2的組合獲得的四個內核中間值。
舉例來說,當(a_2, a_1)對應於(0, 0)時,第一內核中間值KIV_1可具有值‘0’。相似地,舉例來說,當(a_2, a_1)對應於(0, 1)時,第二內核中間值KIV_2可具有值‘w_1’,且當(a_2, a_1)對應於(1, 0)時,第三內核中間值KIV_3可具有值‘w_2’,且當(a_2, a_1)對應於(1, 1)時,第四內核中間值KIV_4可具有值‘w_1 + w_2’。
當以不同方式表達所述多個內核中間值時,所述多個內核中間值中的每一者可為由通過排列所述多個權重值而形成的向量(w_2, w_1)與通過排列和所述權重值中的每一者相乘的係數而形成的向量(a_2, a_1)的內積產生的值。舉例來說,如圖6A中所繪示,所述多個內核中間值中的每一者可為由通過排列所述多個權重值而形成的向量(w_2, w_1)與由兩個行形成的其中每一元素具有‘0’或‘1’的向量的內積產生的值。
以上所計算的內核中間資料KID可用於圖5中算術電路140的卷積操作。
參照圖6B,卷積操作中所使用的內核資料可包含三個權重值。舉例來說,內核資料可包含第一權重值(w_1)、第二權重值(w_2)及第三權重值(w_3)。舉例來說,內核資料可為由三個列及一個行形成的矩陣或者由一個列及三個行形成的矩陣。
內核中間資料KID可包含多個內核中間值。所述多個內核中間值中的每一者可為通過線性組合所述多個權重值而獲得的值。舉例來說,可如以下[方程式2]來表達所述多個內核中間值中的每一者。
[方程式2] KIV = a_1 * w_1 + a_2 * w_2 + a_3 * w_3
(KIV:內核中間值,w_1:第一權重值,w_2:第二權重值,w_3:第三權重值,a_1、a_2、a_3:實數)
在實施例中,被乘以權重值的係數a_1、a_2及a_3可為由M個位表示的數值。舉例來說,圖6B示出其中a_1、a_2及a_3是由1個位表示的數值的實施例。因此,a_1、a_2及a_3中的每一者可具有值‘0’或‘1’,且內核中間數據KID可包含從a_1、a_2及a_3的組合獲得的八個內核中間值。
舉例來說,當(a_3, a_2, a_1)對應於(0, 0, 0)時,第一內核中間值KIV_1可具有值‘0’。相似地,舉例來說,當(a_3, a_2, a_1)對應於(0, 0, 1)時,第二內核中間值KIV_2可具有值‘w_1’。此後,當(a_3, a_2, a_1)對應於(0, 1, 0)、(0, 1, 1)、(1, 0, 0)、(1, 0, 1)、(1, 1, 0)、及(1, 1, 1)時,第三內核中間值KIV_3至第八內核中間值KIV_8可具有各自的值。
當以不同方式表達所述多個內核中間值時,所述多個內核中間值中的每一者可為由通過排列所述多個權重值而形成的向量(w_3, w_2, w_1)與通過排列和權重值中的每一者相乘的係數而形成的向量(a_3, a_2, a_1)的內積產生的值。舉例來說,如圖6B中所繪示,所述多個內核中間值中的每一者可為由通過排列所述多個權重值而形成的向量(w_3, w_2, w_1)與由三個行形成的其中每一元素具有‘0’或‘1’的向量的內積產生的值。
以上所計算的內核中間資料KID可用於圖5中算術電路140的卷積操作。
圖7示出根據本發明概念實施例的算術電路140。不再對圖7所示算術電路140進行與圖5所示算術電路140重複的說明。
算術電路140可包括選擇控制電路142及/或多工器144。
選擇控制電路142可基於輸入特徵圖IFM而產生選擇控制信號CTRL_SEL。輸入特徵圖IFM可包含多個輸入特徵值。選擇控制電路142可基於所述多個輸入特徵值中用於當前操作的輸入特徵值而產生選擇控制信號CTRL_SEL,以使多工器144選擇內核中間資料KID中所包含的多個內核中間值中的一者。選擇控制電路142可將所產生的選擇控制信號CTRL_SEL提供到多工器144。
可將選擇控制電路142實作成各種形式。根據一些示例性實施例,在本文中被闡述為由選擇控制電路142及多工器144中的任一者或兩者執行的操作可由執行程式碼的至少一個處理器(例如,處理器160)來執行,所述程式碼包括與所述操作對應的指令。所述指令可儲存在神經網路處理器100的記憶體(例如,內部記憶體120)中。舉例來說,可將選擇控制電路142實作成硬體的形式及/或硬體與軟體的組合的形式。具體來說,當將選擇控制電路142實作成硬體的形式時,選擇控制電路142可包括執行在本文中被闡述為由選擇控制電路142執行的操作(例如基於所述多個輸入特徵值而產生選擇控制信號CTRL_SEL)的電路(例如,專用積體電路(ASIC)或現場可程式設計閘陣列(FPGA))。此外,舉例來說,當將選擇控制電路142實作成硬體與軟體的組合的形式時,被載入到神經網路處理器的內部記憶體(例如,內部記憶體120)中的程式及/或指令可由算術電路140中所包括的控制邏輯或者神經網路處理器的處理器(例如,微處理器、中央處理單元(CPU)、處理器核心、多核心處理器;多處理器)執行,且因此,可產生選擇控制信號CTRL_SEL。然而,本發明概念並非僅限於上述實施例。可將選擇控制電路142實作成軟體與硬體的組合的形式,例如韌體(firmware)。
多工器144可基於內核中間資料KID及選擇控制信號CTRL_SEL而產生輸出特徵OF。在實施例中,多工器144可通過基於選擇控制信號CTRL_SEL而選擇內核中間資料KID中所包含的所述多個內核中間值中的一者來產生輸出特徵OF。
作為非限制性實例,輸入特徵圖IFM可與由一個列及三個行形成的內核資料執行卷積操作。參照圖6B及圖7,當輸入特徵圖IFM中將與內核資料相乘的輸入特徵值是‘0’、‘1’及‘1’時,選擇控制電路142可將選擇控制信號CTRL_SEL產生為使得多工器144從內核中間值中選擇第四內核中間值KIV_4,且多工器144可基於選擇控制信號CTRL_SEL而從內核中間值中選擇第四內核中間值KIV_4。多工器144可輸出第四內核中間值KIV_4作為輸出特徵OF。因此,根據本發明概念實施例的算術電路140可通過選擇所述多個內核中間值中的一者而甚至在不執行乘法操作的情況下執行卷積操作。傳統的神經網路處理器基於輸入資料及內核資料中所包含的權重值而執行卷積操作,以產生輸出特徵(例如,用於產生識別信號)。此類卷積操作涉及數目巨大的操作(例如,乘法操作),從而導致高度延遲及資源消耗(例如,處理器、記憶體及能量資源)。然而,一些示例性實施例闡述提供內核中間值的改善型神經網路處理器。在接收到輸入資料後,改善型神經網路處理器通過確定與輸入資料對應的內核中間值並輸出所確定的內核中間值作為輸出特徵來執行卷積操作。通過使用內核中間值,改善型神經網路處理器減少所執行的乘法操作的數目(或完全避免執行此類乘法操作),從而與傳統的神經網路處理器相比減少延遲及資源消耗。延遲及資源消耗的此種減少在涉及其中資源有限的移動裝置的神經網路處理器應用(例如,無人機、機器人設備、ADAS、智慧型電話及/或IoT裝置)及/或其中尤其不期望具有高度延遲的應用(例如,無人機、機器人設備及/或醫療裝置)中可尤其有用。
圖8示出根據本發明概念實施例的算術電路140。不再對圖8所示算術電路140進行與圖5及圖7所示算術電路140重複的說明。圖8尤其示出當輸入特徵圖IFM中所包含的輸入特徵值具有2個位或多於2個位的位元數目時的算術電路140。
算術電路140可包括選擇控制電路142、多工器144、加法器145、暫存器146及/或移位器147。
選擇控制電路142可基於輸入特徵圖IFM中所包含的多個輸入特徵值中用於當前操作的輸入特徵值而產生選擇控制信號CTRL_SEL。選擇控制電路142可基於輸入特徵值的高位(upper bit)(例如,最高有效位及/或較高有效位)的值而產生選擇控制信號CTRL_SEL,且然後基於輸入特徵值的低位(lower bit)(最低有效位及/或較低有效位)的值而產生選擇控制信號CTRL_SEL。
多工器144可通過基於選擇控制信號CTRL_SEL而選擇內核中間資料KID中所包含的多個內核中間值中的一者來產生所選內核中間值KIV_SEL。多工器144可將所選內核中間值KIV_SEL提供到加法器145。
在實施例中,加法器145、暫存器146及移位器147更新輸出中間值,直到對所述多個輸入特徵值的最高有效位的值的操作至最低有效位的值的操作被累加為止。
暫存器146可儲存輸出中間值。暫存器146可將累加至現在的累加輸出中間值OIV_acc提供到移位器147。
移位器147可產生通過將由暫存器146提供的累加輸出中間值OIV_acc移位1個位或多於1個位的位元數目而獲得的輸出中間值OIV_shift,且可將經移位輸出中間值OIV_shift提供到加法器145。
加法器145在對所述多個輸入特徵值的最高有效位的操作中可不對所選內核中間值KIV_SEL執行求和操作。換句話說,在對所述多個輸入特徵值的最高有效位的操作中,加法器145可通過將‘0’加至所選內核中間值KIV_SEL來產生輸出中間值OIV_upd。
加法器145可在對所述多個輸入特徵值的不是最高有效位的位的操作中通過執行對經移位輸出中間值OIV_shift與所選內核中間值KIV_SEL進行求和的操作來產生經更新輸出中間值OIV_upd。加法器145可將經更新輸出中間值OIV_upd提供到暫存器146。暫存器146可儲存經更新輸出中間值OIV_upd。
暫存器146可在對所述多個輸入特徵值的最低有效位的操作中輸出經更新輸出中間值OIV作為輸出特徵OF。根據一些示例性實施例,在本文中被闡述為由加法器145、暫存器146及移位器147中的任一者或全部執行的操作可由執行程式碼的至少一個處理器(例如,處理器160)來執行,所述程式碼包括與所述操作對應的指令。所述指令及由暫存器146儲存的輸出中間值OIV_upd可儲存在神經網路處理器100的記憶體(例如,內部記憶體120)中。
當輸入特徵值具有2個位或多於2個位的位元數目時,將參照圖10更詳細地闡述算術電路140的卷積操作方法。
圖9示出根據本發明概念實施例的神經網路處理器100的卷積操作方法的流程圖。同時參照圖5及圖8來闡述圖9。
神經網路處理器100可基於內核資料中所包含的多個權重值而產生多個內核中間值(Sl00)。在實施例中,神經網路處理器100中所包括的處理器160可通過執行線性組合所述多個權重值的操作來產生所述多個內核中間值。神經網路處理器100的內部記憶體120中所包括的內核中間資料記憶體126可儲存所產生的所述多個內核中間值。
神經網路處理器100中所包括的算術電路140可接收所述多個內核中間值及輸入特徵圖IFM(S200)。算術電路140可從輸入特徵記憶體122接收輸入特徵圖IFM,且從內核中間資料記憶體126接收包含所述多個內核中間值的內核中間資料KID。
神經網路處理器100可基於輸入特徵圖IFM中所包含的多個輸入特徵值中用於當前操作的輸入特徵值而從所述多個內核中間值選擇至少一個內核中間值(S300)。舉例來說,算術電路140中所包括的選擇控制電路142可基於輸入特徵值而產生選擇控制信號CTRL_SEL,且算術電路140中所包括的多工器144可基於選擇控制信號CTRL_SEL而選擇所述多個內核中間值中的至少一者。
神經網路處理器100可通過使用所選內核中間值KIV_SEL及輸出中間值執行操作來更新輸出中間值(S400)。在實施例中,算術電路140中所包括的暫存器146可儲存輸出中間值,且可將累加輸出中間值OIV_acc提供到移位器147。移位器147可通過將累加輸出中間值OIV_acc移位1個位而將經移位輸出中間值OIV_shift提供到加法器145。加法器145可通過對經移位輸出中間值OIV_shift與所選內核中間值KIV_SEL進行求和來產生經更新輸出中間值OIV_upd。
圖10示出根據本發明概念實施例的輸入特徵值IF_1、IF_2及IF_3以及神經網路處理器的卷積操作方法的流程圖。圖10示出其中神經網路處理器在卷積操作中將內核資料與輸入特徵圖IFM中所包含的第一輸入特徵值IF_1、第二輸入特徵值IF_2及第三輸入特徵值IF_3相乘的過程、以及其中多個輸入特徵值為4位元資料的實施例。所述多個輸入特徵值的位元數目僅為用於方便說明的實例,且不應被視為僅限於此。同時參照圖8來闡述圖10。
算術電路140首先對輸入特徵值的最高有效位IF_1 [4]、IF_2 [4]及IF_3 [4]執行操作。選擇控制電路142可基於IF_1 [4]、IF_2 [4]及IF_3 [4]而產生選擇控制信號CTRL_SEL,且多工器144可基於選擇控制信號CTRL_SEL而選擇多個內核中間值中的一者(S1120)。在下文中,為方便解釋起見,選擇控制電路142及多工器144的操作(例如操作S1120)將被稱為內核中間值選擇操作。加法器145可將‘0’加至所選內核中間值KIV_SEL(S1140)。換句話說,加法器145可在不對所選內核中間值KIV_SEL執行求和操作的情況下產生所選內核中間值KIV_SEL作為經更新輸出中間值OIV_upd。暫存器146可儲存經更新輸出中間值OIV_upd(S1160)。暫存器146可將所儲存輸出中間值作為累加輸出中間值OIV_acc提供到移位器147,且移位器147可通過將累加輸出中間值OIV_acc移位1個位來產生經移位輸出中間值OIV_shift(S1180)。
選擇控制電路142及多工器144可對輸入特徵值的作為次最高有效位的IF_1 [3]、IF_2 [3]及IF_3 [3]執行內核中間值選擇操作(S1220)。加法器145可通過對經移位輸出中間值OIV_shift與所選內核中間值KIV_SEL進行求和來產生經更新輸出中間值OIV_upd(S1240)。暫存器146可儲存經更新輸出中間值OIV_upd(S1260)。暫存器146可將所儲存輸出中間值作為累加輸出中間值OIV_acc提供到移位器147,且移位器147可通過將累加輸出中間值OIV_acc移位1個位來產生經移位輸出中間值OIV_shift(S1280)。
選擇控制電路142及多工器144可以與對IF_1 [3]、IF_2 [3]及IF_3 [3]的操作相同的方式或相似的方式對輸入特徵值的作為次最高有效位的IF_1 [2]、IF_2 [2]及IF_3[2]執行內核中間值選擇操作S1320、加法操作S1340、暫存器儲存操作S1360及移位操作S1380。
選擇控制電路142及多工器144可對輸入特徵值的作為最低有效位的IF_1 [1]、IF_2 [1]及IF_3 [1]執行內核中間值選擇操作(S1420)。加法器145可通過對經移位輸出中間值OIV_shift與所選內核中間值KIV_SEL進行求和來產生經更新輸出中間值OIV_upd(S1440)。暫存器146可儲存經更新輸出中間值OIV_upd(S1460)。暫存器146還可在對輸入特徵值的最低有效位的操作中輸出經更新輸出中間值OIV_upd作為輸出特徵OF。
圖11A至圖11C示出根據本發明概念實施例的內核中間資料記憶體126a、126b及126c。圖11A至圖11C示出其中內核資料包含三個權重值的實施例,但這僅是為了方便說明起見且內核資料並非僅限於此。換句話說,根據神經網路處理器100的特定應用,權重值的數目可依據內核資料而變化。
參照圖11A,內核中間資料記憶體126a可儲存包含多個內核中間值的內核中間資料KID。圖11A中所示的內核中間資料KID可與圖6B實質上相同或相似。第一內核中間值KIV_1至第八內核中間值KIV_8中的每一者可為通過線性組合第一權重值w_1、第二權重值w_2及所述第三權重值w_3而獲得的值,且在線性組合中所使用的係數可為‘0’及‘1’。
參照圖11B,內核中間資料記憶體126b可儲存包含所述多個內核中間值的內核中間資料KID。第一內核中間值KIV_1至第八內核中間值KIV_8中的每一者可為通過線性組合第一權重值w_1、第二權重值w_2及第三權重值w_3而獲得的值,且在線性組合中所使用的係數可為‘-1’及‘1’。換句話說,在將圖11B與圖11A進行比較後,將在圖11A所示內核中間資料KID中所使用的係數‘0’替換成‘-1’的結果可與圖11B所示內核中間資料KID相同。
從圖11B所示內核中間資料KID可看出,第一內核中間值KIV_1至第四內核中間值KIV_4與第五內核中間值KIV_5至第八內核中間值KIV_8具有對稱關係。舉例來說,第一內核中間值KIV_1與第八內核中間值KIV_8具有相同的大小但相反的正負號。第二內核中間值KIV_2與第七內核中間值KIV_7之間的關係也相同。第三內核中間值KIV_3與第六內核中間值KIV_6之間的關係也相同。第四內核中間值KIV_4與第五內核中間值KIV_5之間的關係也相同。因內核中間值的對稱特性,內核中間數據KID中所包含的內核中間值的數目與圖11B相比可減少一半,且圖11C中示出其中內核中間值的數目減少的實施例。
參照圖11C,內核中間資料記憶體126c可儲存經修改內核中間資料MKID。經修改內核中間資料MKID可包含多個經修改內核中間值。所述多個經修改內核中間值MKID中的每一者可為通過線性組合第一權重值w_1、第二權重值w_2及第三權重值w_3而獲得的值。在線性組合中所使用的係數可為‘-1’及‘1’。在將圖11C與圖11B進行比較後,圖11B所示內核中間資料KID中所包含的第一內核中間值KIV_1至第四內核中間值KIV_4分別對應於圖11C所示經修改內核中間資料MKID中所包含的第一經修改內核中間值MKIV_1至第四經修改內核中間值MKIV_4。換句話說,當內核數據中所包含的權重值的數目是N(N為自然數)時,經修改內核中間資料MKID的數量可包括2^ (N-1)個經修改內核中間值。
如參照圖11B所述,因圖11B所示內核中間值的對稱特性,圖11C所示內核中間資料記憶體126c可儲存與圖11B所示內核中間資料記憶體126b的量的一半對應的資料。
可存在其他實施例。舉例來說,第一經修改內核中間值MKIV_1可對應於圖11B所示第一內核中間值KIV_1及第八內核中間值KIV_8中的一者,第二經修改內核中間值MKIV_2可對應於圖11B中的第二內核中間值KIV_2及第七內核中間值KIV_7中的一者,第三經修改內核中間值MKIV_3可對應於圖11B中的第三內核中間值KIV_3及第六內核中間值KIV_6中的一者,且第四經修改內核中間值MKIV_4可對應於圖11B中的第四內核中間值KIV_4及第五內核中間值KIV_5中的一者。
在實施例中,在圖11B及圖11C中所繪示的內核中間資料記憶體126b及126c中,與圖11A中所繪示的內核中間資料記憶體126a相比,‘0’被替換成‘-1’。因此,在卷積操作中,將在選擇內核中間值之後對值進行校準。為此,算術電路可進一步包括偏移校準電路,如在下圖中所述。
圖12示出根據本發明概念實施例的算術電路140。算術電路140可包括選擇控制電路142、多工器144、操作符(operator)145、暫存器146、移位器147及/或偏移校準電路148。根據一些示例性實施例,操作符145可被實作為加法器145、第二操作符145及/或減法器。圖12例如示出與其中如圖11C中所示內核中間資料記憶體儲存經修改內核中間資料MKID的實施例對應的算術電路140。參照圖12,不再進行與圖8重複的說明,且將主要闡述與圖8的差異。
多工器144可基於由選擇控制電路142提供的選擇控制信號CTRL_SEL而選擇從內核中間資料記憶體接收的經修改內核中間資料MKID中所包含的多個經修改內核中間值中的至少一者。由多工器144選擇的值被稱為所選修改內核中間值MKIV_SEL。
操作符145可使用經移位輸出中間值OIV_shift及所選修改內核中間值MKIV_SEL來執行操作。可基於由選擇控制電路142提供的操作選擇信號OP_SEL而確定由操作符145執行的操作的種類。在實施例中,操作符145可基於操作選擇信號OP_SEL而執行求和操作(summation operation)(例如,與加法器145相似)或減法操作。
舉例來說,參照圖8、圖11C及圖12,當與輸入特徵圖IFM中所包含的多個輸入特徵值中用於當前操作的輸入特徵值的特定位對應的值(例如,最高有效位、次最高有效位或最低有效位等)是(0, 0, 0)時,多工器144可基於選擇控制信號CTRL_SEL從所述多個經修改內核中間值中選擇第一經修改內核中間值MKIV_1,且操作符145可基於操作選擇信號OP_SEL而將所選修改內核中間值MKIV_SEL加至經移位輸出中間值OIV_shift。
此外,作為另一實例,當與輸入特徵圖IFM中所包含的所述多個輸入特徵值中用於當前操作的輸入特徵值的特定位對應的值(例如,最高有效位、次最高有效位或最低有效位等)是(1, 1, 0)時,多工器144可基於選擇控制信號CTRL_SEL而從所述多個經修改內核中間值中選擇第二經修改內核中間值MKIV_2,且操作符145可基於操作選擇信號OP_SEL而從經移位輸出中間值OIV_shift減去所選修改內核中間值MKIV_SEL。
暫存器146可在對所述多個輸入特徵值的最低有效位的操作中將經更新輸出中間值OIV_upd作為輸出中間值OIV提供到偏移校準電路148。
偏移校準電路148可對輸出中間值OIV校準與經修改內核中間資料MKID中被替換成‘-1’的‘0’的量對應的值。為此,可如圖13中所示將偏移校準電路148實作為加法器。在實施例中,偏移校準電路148可通過對偏移值與輸出中間值OIV進行求和而輸出輸出特徵OF。根據一些示例性實施例,在本文中被闡述為由操作符145及偏移校準電路148中的任一者或兩者執行的操作可由執行程式碼的至少一個處理器(例如,處理器160)來執行,所述程式碼包括與所述操作對應的指令。所述指令可儲存在神經網路處理器100的記憶體(例如,內部記憶體120)中。
圖13示出根據本發明概念實施例的偏移校準電路148。將不再對圖13所示偏移校準電路148進行與圖12所示偏移校準電路148重複的說明。
偏移校準電路148可基於輸出中間值OIV而產生輸出特徵OF。舉例來說,可將偏移校準電路148實作為加法器,且偏移校準電路148可通過對偏移值OFS與輸出中間值OIV進行求和來產生輸出特徵OF。在實施例中,偏移值OFS可等於在當前操作中所使用的內核資料中所包含的多個權重值之和。如圖11C中所繪示,偏移值OFS可等於通過如以下[方程式3]中所示將第一權重值w_1、第二權重值w_2及第三權重值w_3之和除以‘2’而獲得的值。根據一些示例性實施例,在本文中被闡述為由加法器執行的操作可由執行程式碼的至少一個處理器(例如,處理器160)來執行,所述程式碼包括與所述操作對應的指令。所述指令可儲存在神經網路處理器100的記憶體(例如,內部記憶體120)中。
[方程式3] OFS = (w_1 + w_2 + w_3)/2
圖14示出根據本發明概念實施例的算術電路140。關於圖14所示算術電路140,將不再進行與圖8所示算術電路140重複的說明,且將主要闡述與圖8的差異。
雖然在[方程式1]及[方程式2]中將a_1及a_2闡述為由1個位表示的值,然而在一些示例性實施例中,a_1及a_2可為由2個位或更多個位表示的值。
當a_1及a_2為由2位值表示的值時,算術電路140可通過相對於a_1及a_2的高位選擇內核中間值且然後對所選內核中間值執行操作來獲得所需結果。換句話說,算術電路140可通過與a_1及a_2的高位對應的選擇操作而獲得第一所選內核中間值KIV_SEL_1,且通過與a_1及a_2的低位對應的選擇操作而獲得第二所選內核中間值KIV_SEL_2,且然後獲得通過以下所示[方程式4]的操作而計算的內核中間值KIV_OP。
[方程式4] KIV_OP = KIV_SEL_1 * 2 + KIV_SEL_2
對於以上操作,算術電路140可包括多工電路141及/或操作符143。多工電路141可包括第一多工器144_1及/或第二多工器144_2。根據一些示例性實施例,在本文中被闡述為由多工電路141、第一乘法器144_1、第二乘法器144_2及操作符143中的任一者或全部執行的操作可由執行程式碼的至少一個處理器(例如,處理器160)來執行,所述程式碼包括與所述操作對應的指令。所述指令可儲存在神經網路處理器100的記憶體(例如,內部記憶體120)中。
選擇控制信號CTRL_SEL可包括第一選擇控制信號CTRL_SEL_1及第二選擇控制信號CTRL_SEL_2。第一多工器144_1可基於第一選擇控制信號CTRL_SEL_1而從內核中間資料KID中所包含的多個內核中間值中選擇至少一個內核中間值,且將第一所選內核中間值KIV_SEL_1提供到操作符143。第二多工器144_2可基於第二選擇控制信號CTRL_SEL_2而從內核中間資料KID中所包含的所述多個內核中間值中選擇至少一個內核中間值,且將第二所選內核中間值KIV_SEL_2提供到操作符143。
操作符143可產生通過使用第一所選內核中間值KIV_SEL_1及第二所選內核中間值KIV_SEL_2執行操作而計算的內核中間值KIV_OP。在實施例中,操作符143可執行例如[方程式4]等的操作。將參照圖15來闡述操作符143的實施例。
圖15示出根據本發明概念實施例的操作符143。將不再對操作符143進行與圖14所示操作符143重複的說明。
操作符143可包括補零電路(zero padding circuit)143_1及/或加法器143_2。根據一些示例性實施例,在本文中被闡述為由補零電路143_1及加法器143_2中的任一者或兩者執行的操作可由執行程式碼的至少一個處理器(例如,處理器160)來執行,所述程式碼包括與所述操作對應的指令。所述指令可儲存在神經網路處理器100的記憶體(例如,內部記憶體120)中。
補零電路143_1可將‘0’加至第一所選內核中間值KIV_SEL_1的最低有效位,且將被加上‘0’的第一所選內核中間值KIV_SEL_1提供到加法器143_2。在實施例中,可將補零電路143_1實作為移位器(例如,此移位器將第一所選內核中間值KIV_SEL_1朝向更高有效位位置逐位地移位)。
加法器143_2可產生通過將被加上‘0’的第一所選內核中間值KIV_SEL_1與第二所選內核中間值KIV_SEL_2相加而計算的內核中間值KIV_OP。
通過如上所述的操作符143的操作,操作符143可執行例如[方程式4]等的操作。
圖16示出根據本發明概念實施例的算術電路140。將不再對圖16所示算術電路140進行與圖8所示算術電路140重複的說明,且將主要闡述與圖8的差異。圖16尤其示出與其中a_1及a_2為由4個位表示的值的實施例對應的算術電路140。
當a_1及a_2由4位值表示時,算術電路140可通過與a_1及a_2的最高有效位對應的選擇操作而獲得第一所選內核中間值KIV_SEL_1,通過與a_1及a_2的次最高有效位對應的選擇操作而獲得第二所選內核中間值KIV_SEL_2,通過與a_1及a_2的次最高有效位對應的選擇操作而獲得第三所選內核中間值KIV_SEL_3,通過與a_1及a_2的最低有效位對應的選擇操作而獲得第四所選內核中間值KIV_SEL_4,且然後獲得通過如下所示[方程式5]的操作而計算的內核中間值KIV_OP。
[方程式5] KIV_OP = KIV_SEL_1 * 8 + KIV_SEL_2 * 4 + KIV_SEL_3 * 2 + KIV_SEL_4
對於以上操作,算術電路140可包括多工電路141及/或操作符143。多工電路141可包括第一多工器144_1、第二多工器144_2、第三多工器144_3及/或第四多工器144_4。根據一些示例性實施例,在本文中被闡述為由多工電路141、操作符143、第一多工器144_1、第二多工器144_2、第三多工器144_3及第四多工器144_4中的任一者或全部執行的操作可由執行程式碼的至少一個處理器(例如,處理器160)來執行,所述程式碼包括與所述操作對應的指令。所述指令可儲存在神經網路處理器100的記憶體(例如,內部記憶體120)中。
選擇控制信號CTRL_SEL可包括第一選擇控制信號CTRL_SEL_1至第四選擇控制信號CTRL_SEL_4。第一多工器144_1可基於第一選擇控制信號CTRL_SEL_1而從內核中間資料KID中所包含的多個內核中間值選擇至少一個內核中間值,且將第一所選內核中間值KIV_SEL_1提供到操作符143。以相似方式,第二多工器144_2至第四多工器144_4可各自分別基於第二選擇控制信號CTRL_SEL_2至第四選擇控制信號CTRL_SEL_4而從內核中間資料KID中所包含的所述多個內核中間值中選擇至少一個內核中間值,且將第二所選內核中間值KIV_SEL_2至第四所選內核中間值KIV_SEL_4提供到操作符143。
操作符143可產生通過使用第一所選內核中間值KIV_SEL_1至第四所選內核中間值KIV_SEL_4執行操作而計算的內核中間值KIV_OP。在實施例中,操作符143可執行例如[方程式5]等的操作。參照圖17來闡述操作符143的實施例。
圖17示出根據本發明概念實施例的操作符143。不再對操作符143進行與圖16所示操作符143重複的說明。
操作符143可包括第一補零電路143_1、第一加法器143_2、第二補零電路143_3、第二加法器143_4、第三補零電路143_5及/或第三加法器143_6。根據一些示例性實施例,在本文中被闡述為由第一補零電路143_1、第一加法器143_2、第二補零電路143_3、第二加法器143_4、第三補零電路143_5及第三加法器143_6中的任一者或全部執行的操作可由執行程式碼的至少一個處理器(例如,處理器160)來執行,所述程式碼包括與所述操作對應的指令。所述指令可儲存在神經網路處理器100的記憶體(例如,內部記憶體120)中。
第一補零電路143_1可將‘0’加至第一所選內核中間值KIV_SEL_1的最低有效位,且將被加上‘0’的第一所選內核中間值KIV_SEL_1提供到第一加法器143_2。在實施例中,可將第一補零電路143_1實作為移位器。
第一加法器143_2可將通過將被加上‘0’的第一所選內核中間值KIV_SEL_1加至第二所選內核中間值KIV_SEL_2而獲得的值提供到第三補零電路143_5。
第二補零電路143_3可將‘0’加至第三所選內核中間值KIV_SEL_3的最低有效位,且將被加上‘0’的第三所選內核中間值KIV_SEL_3提供到第二加法器143_4。在實施例中,可將第二補零電路143_3實作為移位器。
第二加法器143_4可將通過將被加上‘0’的第三所選內核中間值KIV_SEL_3加至第四所選內核中間值KIV_SEL_4而獲得的值提供到第三加法器143_6。
第三補零電路143_5可將‘00’加至從第一加法器143_2提供的值的最低有效位,且將被加上‘00’的值提供到第三加法器143_6。在實施例中,可將第三補零電路143_5實作為移位器。
第三加法器143_6可輸出通過對從第二加法器143_4與第三補零電路143_5提供的值進行求和而計算的內核中間值KIV_OP。
通過操作符143的以上操作,操作符143可執行例如[方程式5]等的操作。
圖18示出根據本發明概念實施例的算術電路140。圖18可尤其示出其中對應於圖12的算術電路140與對應於圖14的算術電路140相組合的實施例。
算術電路140可包括多工電路141、選擇控制電路142、第一操作符143、第二操作符145、暫存器146、移位器147及/或偏移校準電路148。圖18所示第一操作符143可對應於圖14所示操作符143,且圖18所示第二操作符145可對應於圖12所示操作符145。
第一多工器144_1可基於第一選擇控制信號CTRL_SEL_1而從經修改內核中間資料MKID中所包含的多個經修改內核中間值中選擇第一所選修改內核中間值MKIV_SEL_1。第二多工器144_2可基於第二選擇控制信號CTRL_SEL_2而從所述多個經修改內核中間值中選擇第二所選修改內核中間值MKIV_SEL_2。
第一操作符143可獲得通過使用例如[方程式4]等的操作而從第一所選修改內核中間值MKIV_SEL_1及第二所選修改內核中間值MKIV_SEL_2計算的修改內核中間值MKIV_OP。
第二操作符145可對修改內核中間值MKIV_OP及經移位輸出中間值OIV_shift執行算術操作。可基於操作選擇信號OP_SEL而確定算術操作的種類。
可由第二操作符145、暫存器146及移位器147更新輸出中間值OIV。偏移校準電路148可通過對偏移值與由暫存器146提供的輸出中間值OIV進行求和而輸出輸出特徵OF。
除上述實施例以外,還可存在各種示例性實施例,例如其中對應於圖12的算術電路140與對應於圖16的算術電路140相組合的實施例。
以上所述的方法的各種操作可由能夠執行所述操作的任何適合裝置(例如各種硬體及/或以某種形式的硬體(例如,處理器)實作的軟體)執行。
軟體可包括用於實作邏輯功能的可執行指令的有序列表,且可實施在任何“處理器可讀媒體”中以供指令執行系統、設備或裝置(例如單核心或多核心處理器或者含處理器的系統)使用或結合所述指令執行系統、設備或裝置而使用。
結合本文中所公開的示例性實施例所述的方法或演算法及功能的方框或操作可被直接實施為硬體、被實施為由處理器執行的軟體模組、或者被實施為這兩者的組合。如果實作成軟體,則所述功能可作為一個或多個指令或代碼而儲存在有形非暫時性電腦可讀媒體上或者經由有形非暫時性電腦可讀媒體被傳送。軟體模組可駐存在隨機存取記憶體(RAM)、快閃記憶體記憶體、唯讀記憶體(ROM)、電可程式設計ROM(EPROM)、電可擦除可程式設計ROM(EEPROM)、暫存器、硬碟、可裝卸磁片、CD ROM、或者此項技術中已知的任何其他形式的儲存媒體中。
已參照本發明概念的示例性實施例具體示出並闡述了本發明概念。本文所使用的術語僅用於闡述示例性實施例而非旨在限制本發明概念。因此,應理解,可在不背離由所附申請專利範圍書界定的本發明概念的精神及範圍的條件下在形式及細節上對所述實施例作出各種改變。
儘管已參照本發明概念的示例性實施例具體示出並闡述了本發明概念,然而應理解,可在不背離以上申請專利範圍書的精神及範圍的條件下對所述示例性實施例作出形式及細節上的各種改變。
10:電子系統
100:神經網路處理器
120:內部記憶體
122:輸入特徵記憶體
124:內核記憶體
126、126a、126b、126c:內核中間資料記憶體
140:算術電路
141:多工電路
142:選擇控制電路
143:操作符
143_1、143_3、143_5:補零電路
143_2、143_4、143_6:加法器
144、144_1~144_4:多工器
145:加法器、操作符
146:暫存器
147:移位器
148:偏移校準電路
160:處理器
200:隨機存取記憶體
201、210:輸入特徵圖
202:內核
203、230:輸出特徵圖
211、212、213:所提取資料
220:原始內核
231、232、233:特徵資料
300:處理器
400:記憶體
500:感測器模組
CL:類別
CTRL_SEL、CTRL_SEL_1~CTRL_SEL_4:選擇控制信號
FM1~FMn:特徵圖
H:行大小
IFM:輸入特徵圖
IF_1~IF_3:輸入特徵值
KIV_1~KIV_8:內核中間值
KIV_SEL、KIV_SEL_1~KIV_SEL_4:所選內核中間值
KIV_OP:內核中間值
KID:內核中間資料
L1~Ln:層
MKID:經修改內核中間資料
MKIV_SEL:所選修改內核中間值
MKIV_1~MKIV_4:經修改內核中間值
NN:神經網路
OIV:輸出中間值
OFS:偏移值
OIV_upd:輸出中間值
OIV_shift:經移位輸出中間值
OIV_acc:累加輸出中間值
OP_SEL:操作選擇信號
OF:輸出特徵
PW:池化窗
REC:識別信號
S100~S400、S1120、S1140、S1160、S1180、S1220、S1240、S1260、S1280、S1320、S1340、S1360、S1380、S1420、S1440、S1460:操作
w_1、w_2、w_3:權重值
WM:權重圖
W:列大小
結合附圖閱讀以下詳細說明,將更清晰地理解本發明概念的示例性實施例,附圖中:
圖1示出根據本發明概念實施例的電子系統。
圖2示出根據本發明概念實施例的電子系統。
圖3示出卷積神經網路的結構作為神經網路結構的實例。
圖4A及圖4B是用於解釋神經網路的卷積操作的示意圖。
圖5示出根據本發明概念實施例的神經網路處理器。
圖6A及圖6B示出根據本發明概念實施例的內核中間資料記憶體。
圖7示出根據本發明概念實施例的算術電路。
圖8示出根據本發明概念實施例的算術電路。
圖9示出根據本發明概念實施例的神經網路處理器的卷積操作方法的流程圖。
圖10示出根據本發明概念實施例的神經網路處理器的輸入特徵值及卷積操作方法的流程圖。
圖11A至圖11C示出根據本發明概念實施例的內核中間資料記憶體。
圖12示出根據本發明概念實施例的算術電路。
圖13示出根據本發明概念實施例的偏移校準電路。
圖14示出根據本發明概念實施例的算術電路。
圖15示出根據本發明概念實施例的操作符。
圖16示出根據本發明概念實施例的算術電路。
圖17示出根據本發明概念實施例的操作符。
圖18示出根據本發明概念實施例的算術電路。
126:內核中間資料記憶體
KIV_1~KIV_4:內核中間值
w_1、w_2:權重值
Claims (9)
- 一種用於執行神經網路操作的神經網路處理器,所述神經網路處理器包括:記憶體,儲存電腦可讀指令及內核中間資料,所述內核中間資料包含基於內核資料中所包含的多個權重值而計算的多個內核中間值,所述多個內核中間值中的每一者是通過線性組合所述多個權重值而獲得的值;以及至少一個處理器,被配置以執行所述電腦可讀指令,以通過基於輸入特徵圖中所包含的一個或多個輸入特徵值而在所述多個內核中間值中選擇至少一個內核中間值來執行卷積操作。
- 如申請專利範圍第1項所述的神經網路處理器,其中在所述線性組合中所使用的多個係數中的每一者具有值0或1。
- 如申請專利範圍第1項所述的神經網路處理器,其中在所述線性組合中所使用的多個係數中的每一者具有值-1或1。
- 如申請專利範圍第1項所述的神經網路處理器,其中所述至少一個處理器被配置以執行所述電腦可讀指令,以儲存輸出中間值,將所述輸出中間值移位1個位,以產生經移位輸出中間值,且回應於確定應執行求和操作而通過對所述至少一個內核中間值與所述經移位輸出中間值進行求和來產生經更新輸出中間值。
- 如申請專利範圍第1項所述的神經網路處理器,其中 所述至少一個處理器被配置以執行所述電腦可讀指令,以儲存輸出中間值,將所述輸出中間值移位1個位,以產生經移位輸出中間值,且通過對所述至少一個內核中間值及所述經移位輸出中間值執行確定類型的操作來產生經更新輸出中間值。
- 如申請專利範圍第5項所述的神經網路處理器,其中所述至少一個處理器被配置以執行所述電腦可讀指令,以基於所述經更新輸出中間值而補償通過對偏移值與最終輸出中間值進行求和而產生的輸出值。
- 如申請專利範圍第1項所述的神經網路處理器,其中所述至少一個處理器被配置以執行所述電腦可讀指令,以基於所述輸入特徵圖中所包含的多個輸入特徵值而從所述多個內核中間值中選擇內核中間值群組,所述內核中間值群組包含所述至少一個內核中間值,且使用所述內核中間值群組來執行算術操作。
- 一種用於執行神經網路操作的神經網路處理器的卷積操作方法,所述卷積操作方法由所述神經網路處理器來執行,所述卷積操作方法包括:通過使用內核資料中所包含的多個權重值執行操作來產生多個內核中間值; 基於輸入特徵圖中所包含的一個或多個輸入特徵值而在所述多個內核中間值中選擇至少一個內核中間值;以及通過使用所述至少一個內核中間值及輸出中間值執行至少一個操作來產生經更新輸出中間值。
- 如申請專利範圍第8項所述的卷積操作方法,其中所述產生所述經更新輸出中間值包括:將前一輸出中間值移位一個或多個位,以產生經移位輸出中間值,以及對所述經移位輸出中間值與所述至少一個內核中間值進行求和。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180132559A KR102637733B1 (ko) | 2018-10-31 | 2018-10-31 | 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법 |
KR10-2018-0132559 | 2018-10-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202018598A TW202018598A (zh) | 2020-05-16 |
TWI834729B true TWI834729B (zh) | 2024-03-11 |
Family
ID=70328695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108134606A TWI834729B (zh) | 2018-10-31 | 2019-09-25 | 神經網路處理器及其卷積操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11244028B2 (zh) |
KR (1) | KR102637733B1 (zh) |
CN (1) | CN111126559A (zh) |
TW (1) | TWI834729B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687762B2 (en) | 2018-02-27 | 2023-06-27 | Stmicroelectronics S.R.L. | Acceleration unit for a deep learning engine |
US10977854B2 (en) | 2018-02-27 | 2021-04-13 | Stmicroelectronics International N.V. | Data volume sculptor for deep learning acceleration |
US11586907B2 (en) | 2018-02-27 | 2023-02-21 | Stmicroelectronics S.R.L. | Arithmetic unit for deep learning acceleration |
US12075618B2 (en) | 2018-10-16 | 2024-08-27 | Silicon Storage Technology, Inc. | Input and digital output mechanisms for analog neural memory in a deep learning artificial neural network |
US10741568B2 (en) | 2018-10-16 | 2020-08-11 | Silicon Storage Technology, Inc. | Precision tuning for the programming of analog neural memory in a deep learning artificial neural network |
JP2024504003A (ja) * | 2020-12-23 | 2024-01-30 | シリコン ストーリッジ テクノロージー インコーポレイテッド | 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用の入力及びデジタル出力機構 |
US11961392B2 (en) * | 2021-03-04 | 2024-04-16 | The University Of North Carolina At Charlotte | Worker-in-the-loop real time safety system for short-duration highway workzones |
WO2022193074A1 (zh) * | 2021-03-15 | 2022-09-22 | 深圳市大疆创新科技有限公司 | Rpn网络的后处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160358068A1 (en) * | 2015-06-04 | 2016-12-08 | Samsung Electronics Co., Ltd. | Reducing computations in a neural network |
TW201824096A (zh) * | 2016-12-20 | 2018-07-01 | 聯發科技股份有限公司 | 執行卷積計算的系統及方法 |
US20180260711A1 (en) * | 2016-01-20 | 2018-09-13 | Cambricon Technologies Corporation Limited | Calculating device and method for a sparsely connected artificial neural network |
CN108629406A (zh) * | 2017-03-24 | 2018-10-09 | 展讯通信(上海)有限公司 | 用于卷积神经网络的运算装置 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4612435B2 (ja) | 2005-02-25 | 2011-01-12 | 日本電信電話株式会社 | 音響モデル学習装置および音声認識装置 |
JP4801107B2 (ja) | 2008-03-06 | 2011-10-26 | 日本電信電話株式会社 | 音声認識装置、方法、プログラム及びその記録媒体 |
US20160026912A1 (en) | 2014-07-22 | 2016-01-28 | Intel Corporation | Weight-shifting mechanism for convolutional neural networks |
US9563825B2 (en) | 2014-11-20 | 2017-02-07 | Adobe Systems Incorporated | Convolutional neural network using a binarized convolution layer |
US10049322B2 (en) | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
US10438117B1 (en) | 2015-05-21 | 2019-10-08 | Google Llc | Computing convolutions using a neural network processor |
US10192162B2 (en) | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US20180046898A1 (en) | 2016-08-11 | 2018-02-15 | Vivante Corporation | Zero Coefficient Skipping Convolution Neural Network Engine |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US9959498B1 (en) | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
KR101827779B1 (ko) | 2016-12-05 | 2018-02-09 | 포항공과대학교 산학협력단 | 디지털-아날로그 변환기와 아날로그-디지털 변환기를 이용한 비트 직렬 곱셈누적 연산기 |
CN108334944B (zh) * | 2016-12-23 | 2020-04-17 | 中科寒武纪科技股份有限公司 | 一种人工神经网络运算的装置及方法 |
US11379688B2 (en) | 2017-03-16 | 2022-07-05 | Packsize Llc | Systems and methods for keypoint detection with convolutional neural networks |
US10691975B2 (en) * | 2017-07-19 | 2020-06-23 | XNOR.ai, Inc. | Lookup-based convolutional neural network |
KR102434729B1 (ko) * | 2017-10-20 | 2022-08-19 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 처리방법 및 장치 |
CN107832842B (zh) * | 2017-11-28 | 2020-05-22 | 南京地平线机器人技术有限公司 | 针对折叠特征数据执行卷积运算的方法和装置 |
CN107729994B (zh) * | 2017-11-28 | 2020-05-26 | 南京地平线机器人技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
GB201801639D0 (en) * | 2018-02-01 | 2018-03-21 | Ruff Brendan Patrick | Low precision efficient multiplication free convolutional filter bank device |
US11941501B2 (en) * | 2018-05-30 | 2024-03-26 | Samsung Electronics Co., Ltd. | Electronic apparatus and control method thereof |
US11204976B2 (en) * | 2018-11-19 | 2021-12-21 | Groq, Inc. | Expanded kernel generation |
US12079592B2 (en) * | 2018-11-20 | 2024-09-03 | Samsung Electronics Co., Ltd. | Deep neural network accelerator including lookup table based bit-serial processing elements |
US20190149134A1 (en) * | 2019-01-14 | 2019-05-16 | Intel Corporation | Filter optimization to improve computational efficiency of convolution operations |
-
2018
- 2018-10-31 KR KR1020180132559A patent/KR102637733B1/ko active IP Right Grant
-
2019
- 2019-07-29 US US16/524,717 patent/US11244028B2/en active Active
- 2019-08-21 CN CN201910773855.0A patent/CN111126559A/zh active Pending
- 2019-09-25 TW TW108134606A patent/TWI834729B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160358068A1 (en) * | 2015-06-04 | 2016-12-08 | Samsung Electronics Co., Ltd. | Reducing computations in a neural network |
US20180260711A1 (en) * | 2016-01-20 | 2018-09-13 | Cambricon Technologies Corporation Limited | Calculating device and method for a sparsely connected artificial neural network |
TW201824096A (zh) * | 2016-12-20 | 2018-07-01 | 聯發科技股份有限公司 | 執行卷積計算的系統及方法 |
CN108629406A (zh) * | 2017-03-24 | 2018-10-09 | 展讯通信(上海)有限公司 | 用于卷积神经网络的运算装置 |
Also Published As
Publication number | Publication date |
---|---|
US11244028B2 (en) | 2022-02-08 |
KR20200049366A (ko) | 2020-05-08 |
KR102637733B1 (ko) | 2024-02-19 |
US20200133989A1 (en) | 2020-04-30 |
TW202018598A (zh) | 2020-05-16 |
CN111126559A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI834729B (zh) | 神經網路處理器及其卷積操作方法 | |
US20200234124A1 (en) | Winograd transform convolution operations for neural networks | |
US11822898B2 (en) | Semiconductor memory device employing processing in memory (PIM) and method of operating the semiconductor memory device | |
JP6987860B2 (ja) | ハードウェアにおけるカーネルストライドの実行 | |
TWI811486B (zh) | 應用處理器、神經網路器件及操作神經網路器件的方法 | |
JP7304148B2 (ja) | ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置 | |
US20200364567A1 (en) | Neural network device for selecting action corresponding to current state based on gaussian value distribution and action selecting method using the neural network device | |
US11562046B2 (en) | Neural network processor using dyadic weight matrix and operation method thereof | |
US20200118249A1 (en) | Device configured to perform neural network operation and method of operating same | |
US12079591B2 (en) | Neural network device, method of operating the neural network device, and application processor including the neural network device | |
US20230289601A1 (en) | Integrated circuit that extracts data, neural network processor including the integrated circuit, and neural network | |
US20200159495A1 (en) | Processing apparatus and method of processing add operation therein | |
US20210311703A1 (en) | Neural network device for neural network operation, operating method of the neural network device, and application processor including the same | |
KR20210124888A (ko) | 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서 | |
KR20200129957A (ko) | 피처맵 데이터에 대한 압축을 수행하는 뉴럴 네트워크 프로세서 및 이를 포함하는 컴퓨팅 시스템 | |
KR20200062014A (ko) | 다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법 | |
US20220188612A1 (en) | Npu device performing convolution operation based on the number of channels and operating method thereof | |
KR20210124894A (ko) | 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서 | |
KR20200056898A (ko) | 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법 | |
TWI853832B (zh) | 積體電路、神經網路處理器與裝置以及資料處理方法 | |
KR20210124883A (ko) | 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서 | |
CN112200309A (zh) | 选择对应于当前状态的动作的神经网络设备及其方法 |