TWI840715B - Computing circuit and data processing method based on convolution neural network and computer readable storage medium - Google Patents
Computing circuit and data processing method based on convolution neural network and computer readable storage medium Download PDFInfo
- Publication number
- TWI840715B TWI840715B TW110140625A TW110140625A TWI840715B TW I840715 B TWI840715 B TW I840715B TW 110140625 A TW110140625 A TW 110140625A TW 110140625 A TW110140625 A TW 110140625A TW I840715 B TWI840715 B TW I840715B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- output data
- output
- filter
- operator
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 10
- 230000015654 memory Effects 0.000 claims abstract description 124
- 239000000872 buffer Substances 0.000 claims abstract description 14
- 238000013527 convolutional neural network Methods 0.000 claims description 24
- 230000003068 static effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 48
- 238000000034 method Methods 0.000 description 9
- 238000010801 machine learning Methods 0.000 description 6
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 3
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 3
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 2
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 2
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 2
- 101100233916 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR5 gene Proteins 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 210000004958 brain cell Anatomy 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Abstract
Description
本發明是有關於一種機器學習(Machine Learning,ML)技術,且特別是有關於一種基於卷積神經網路(Conventional Neural Network,CNN)的運算電路、資料處理方法及電腦可讀取儲存媒體。 The present invention relates to a machine learning (ML) technology, and in particular to an operation circuit, a data processing method and a computer-readable storage medium based on a convolutional neural network (CNN).
機器學習是人工智慧(Artificial Intelligence,AI)中的一個重要主題,並可分析訓練樣本以自中獲得規律,從而透過規律對未知資料預測。而經學習後所建構出的機器學習模型即是用以對待評估資料推論。 Machine learning is an important topic in artificial intelligence (AI). It can analyze training samples to obtain patterns and predict unknown data through patterns. The machine learning model constructed after learning is used to evaluate data inference.
機器學習的演算法有很多種。例如,神經網路可透過模擬人類腦細胞的運作來進行決策。其中,卷積神經網路在影像及語音辨識方面提供較佳的結果,並逐漸成為廣泛應用及主力研發的機 器學習架構之一。 There are many machine learning algorithms. For example, neural networks can make decisions by simulating the operation of human brain cells. Among them, convolutional neural networks provide better results in image and speech recognition, and have gradually become one of the most widely used and researched machine learning architectures.
值得注意的是,在卷積神經網路架構的卷積層中,處理元件對輸入資料滑動卷積核(kernel)或過濾器(filter)並執行特定運算。處理元件需要反覆地自記憶體讀取輸入資料及權重值並輸出運算結果至記憶體。甚至,若不同卷積層採用不同大小的卷積核或不同卷積運算,則將大幅提升記憶體的存取次數。例如,MobileNet模型結合卷積運算及深度可分離卷積(Depthwise Separable Convolution)運算。因此,這些運算都需要分別對記憶體存取。 It is worth noting that in the convolution layer of the convolutional neural network architecture, the processing element slides the convolution kernel or filter on the input data and performs specific operations. The processing element needs to repeatedly read the input data and weight values from the memory and output the operation results to the memory. Even if different convolution layers use convolution kernels of different sizes or different convolution operations, the number of memory accesses will be greatly increased. For example, the MobileNet model combines convolution operations and depthwise separable convolution operations. Therefore, these operations need to access the memory separately.
有鑑於此,本發明實施例提供一種基於卷積神經網路的運算電路、資料處理方法及電腦可讀取儲存媒體,融合多個卷積層,並據以減少記憶體的存取次數。 In view of this, the present invention provides an operation circuit, a data processing method and a computer-readable storage medium based on a convolutional neural network, which integrates multiple convolutional layers and reduces the number of memory accesses.
本發明實施例的基於卷積神經網路的資料處理方法包括(但不僅限於)下列步驟:自記憶體讀取輸入資料。對輸入資料中的第一部分資料進行第一運算,以取得第一輸出資料。第一運算設有第一過濾器,第一輸出資料的大小相關於第一運算的第一過濾器的大小及第一部分資料的大小。暫存第一輸出資料於第一暫存區。當第一暫存區所暫存的第一輸出資料大於第一預定資料量時,對第一輸出資料進行第二運算,以取得第二輸出資料。第二運算設有第二過濾器,第二輸出資料的大小相關於第二運算的第二過濾器大小。暫存第二輸出資料於第二暫存器。對第二輸出資料進行第三 運算所得出的第三輸出資料輸出至記憶體。對第一輸出資料進行第二運算時,持續對輸入資料進行第一運算。 The data processing method based on the convolutional neural network of the embodiment of the present invention includes (but is not limited to) the following steps: reading input data from the memory. Performing a first operation on the first part of the input data to obtain first output data. The first operation is provided with a first filter, and the size of the first output data is related to the size of the first filter of the first operation and the size of the first part of the data. The first output data is temporarily stored in a first buffer area. When the first output data temporarily stored in the first buffer area is greater than the first predetermined data amount, performing a second operation on the first output data to obtain second output data. The second operation is provided with a second filter, and the size of the second output data is related to the size of the second filter of the second operation. The second output data is temporarily stored in a second buffer. The third output data obtained by performing the third operation on the second output data is output to the memory. When performing the second operation on the first output data, the first operation on the input data continues.
本發明實施例的基於卷積神經網路的運算電路包括(但不僅限於)記憶體及處理元件。記憶體用以儲存輸入資料。處理元件耦接記憶體,並包括第一、第二及第三運算器、第一暫存記憶體及第二暫存記憶體。第一運算器用以對輸入資料中的第一部分資料進行第一運算以取得第一輸出資料,並暫存第一輸出資料至處理元件的第一暫存記憶體。第一輸出資料的大小相關於第一運算的第一過濾器大小及第一部分資料的大小。第二運算器用以當第一暫存記憶體所暫存的第一輸出資料符合第二運算所需的大小時,對第二輸入資料進行第二運算,以取得第二輸出資料,並暫存第二輸出資料至處理元件的第三記憶體。第二運算設有第二過濾器,且第二輸出資料的大小相關於第二運算的第二過濾器的大小。第三運算器用以將對第二輸出資料進行第三運算所得出的第三輸出資料輸出至記憶體。第二運算器進行第二運算時,第一運算器持續進行第一運算。 The convolution neural network-based computing circuit of the embodiment of the present invention includes (but is not limited to) a memory and a processing element. The memory is used to store input data. The processing element is coupled to the memory and includes a first, a second and a third operator, a first temporary memory and a second temporary memory. The first operator is used to perform a first operation on a first portion of the input data to obtain first output data, and temporarily store the first output data in the first temporary memory of the processing element. The size of the first output data is related to the size of the first filter of the first operation and the size of the first portion of the data. The second operator is used to perform a second operation on the second input data to obtain the second output data when the first output data temporarily stored in the first temporary memory meets the size required by the second operation, and temporarily store the second output data in the third memory of the processing element. The second operation is provided with a second filter, and the size of the second output data is related to the size of the second filter of the second operation. The third operator is used to output the third output data obtained by performing the third operation on the second output data to the memory. When the second operator performs the second operation, the first operator continues to perform the first operation.
本發明實施例的電腦可讀取儲存媒體用於儲存程式碼,且處理器載入程式碼以執行前述基於卷積神經網路的資料處理方法。 The computer of the embodiment of the present invention can read the storage medium for storing program code, and the processor loads the program code to execute the aforementioned data processing method based on the convolutional neural network.
基於上述,依據本發明實施例的基於卷積神經網路的運算電路、資料處理方法及電腦可讀取儲存媒體,暫存輸出資料於處理元件中的記憶體,並依據下一個運算器(即,下一運算層)的啟動 條件觸發其運算。藉此,下一運算層不用等到上一運算層對所有輸入資料運算後即可提前觸發運算。此外,本發明實施例可減少自記憶體中存取輸入資料的次數。 Based on the above, according to the convolutional neural network-based computing circuit, data processing method and computer-readable storage medium of the embodiment of the present invention, the output data is temporarily stored in the memory of the processing element, and the operation of the next operator (i.e., the next computing layer) is triggered according to the activation condition. In this way, the next computing layer can trigger the operation in advance without waiting for the previous computing layer to operate on all input data. In addition, the embodiment of the present invention can reduce the number of times the input data is accessed from the memory.
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。 In order to make the above features and advantages of the present invention more clearly understood, the following is a detailed description of the embodiments with the accompanying drawings.
100:運算電路 100: Operational circuit
110:記憶體 110: Memory
120:處理元件 120: Processing element
131:特徵暫存記憶體 131: Feature temporary memory
151:第一暫存記憶體 151: First temporary memory
171:第二暫存記憶體 171: Second temporary memory
132:第一先入先出單元 132: First FIFO unit
172:第二先入先出單元 172: Second first-in-first-out unit
133:第一權重緩衝器 133: First weight buffer
153:第二權重緩衝器 153: Second weight buffer
173:第三權重緩衝器 173: Third weight buffer
135:第一運算器 135: First calculator
155:第二運算器 155: Second calculator
175:第三運算器 175: The third operator
S210~S290、S111~S113、S1501~S1560:步驟 S210~S290, S111~S113, S1501~S1560: Steps
F:輸入資料 F: Input data
H、Hfi1、Hkd、Hf1o、Ha1o、Ha2o、Ha1i、Ha2i、Ha3o、Hs1o:高 H, H fi1 , H kd , H f1o , H a1o , H a2o , H a1i , H a2i , H a3o , H s1o : high
W、Wfi1、Wkd、Wf1o、Wa1o、Wa2o、Wa1i、Wa2i、Wa3o、Wa4o、Wa5o、Wtfo1、Wtfo2、Ws1o、Wso21、Wso22、Wso3、Wto1:寬 W、W fi1 、W kd 、W f1o 、W a1o 、W a2o 、W a1i 、W a2i 、W a3o 、W a4o 、W a5o 、W tfo1 、W tfo2 、W s1o 、W so21 、W so22 、W so3 、W to1 : width
C、Cfi1、Cf1o、Ca1o、Ca2o、Ca1i、Ca2i、Ca3o、Ctfo、Cs1o、Cso2、Cto1:通道數 C, C fi1 , C f1o , Ca1o , Ca2o , Ca1i , Ca2i , Ca3o , C tfo , C s1o , C so2 , C to1 : Number of channels
Ffi1、Ffi2、Ffi3、Ffi4、Ffi6:第一部分資料 F fi1 , F fi2 , F fi3 , F fi4 , F fi6 : The first part of the data
Kn、Fd、Fp:過濾器 Kn , Fd , Fp : Filter
Ffo1、Ffo2、Ffo3、Ffo4、Ftfo:第一輸出資料 F fo1 , F fo2 , F fo3 , F fo4 , F tfo : first output data
SA1i、SA2i:脈動陣列輸入 SA 1i , SA 2i : Pulse array input
SA1o、SA2o、SA3o、SA4o、SA5o、SA6o、SA7o、SA8o:脈動陣列輸出 SA 1o , SA 2o , SA 3o , SA 4o , SA 5o , SA 6o , SA 7o , SA 8o : Pulse array output
601、703、903、141:已完成輸出 601, 703, 903, 141: Output completed
602、704、904、142:當前處理輸出 602, 704, 904, 142: Current processing output
D1、D2:方向 D1, D2: Direction
701、901:已完成輸入 701, 901: Input completed
702、902:當前處理輸入 702, 902: Currently processing input
i4:高位置 i4: high position
j4:寬位置 j4: wide position
n4:通道位置 n4: Channel location
I(,,,)、A(,,,):值 I(,,,), A(,,,): value
Fdn4(,,):權重 F dn4 (,,):weight
Fsi1:第二部份資料 F si1 : The second part of the data
Fso1、Fso2、Fso3、Ftso:第二輸出資料 F so1 , F so2 , F so3 , F tso : Second output data
Fti:第三部份資料 F ti : The third part of the data
Fto:第三輸出資料 F to : The third output data
圖1是依據本發明一實施例的基於卷積神經網路的運算電路的元件方塊圖。 FIG1 is a block diagram of components of an operation circuit based on a convolutional neural network according to an embodiment of the present invention.
圖2是依據本發明一實施例的基於卷積神經網路的資料處理方法的流程圖。 Figure 2 is a flow chart of a data processing method based on a convolutional neural network according to an embodiment of the present invention.
圖3是依據本發明一實施例的輸入資料的示意圖。 Figure 3 is a schematic diagram of input data according to an embodiment of the present invention.
圖4是依據本發明一實施例的第一運算的示意圖。 Figure 4 is a schematic diagram of the first operation according to an embodiment of the present invention.
圖5A及圖5B是依據本發明一實施例的脈動陣列輸入及輸出的示意圖。 Figures 5A and 5B are schematic diagrams of the pulse array input and output according to an embodiment of the present invention.
圖6A~圖6C是依據本發明一實施例的脈動陣列輸出的示意圖。 Figures 6A to 6C are schematic diagrams of the pulse array output according to an embodiment of the present invention.
圖7A是依據本發明一實施例說明讀取輸入資料的示意圖。 FIG. 7A is a schematic diagram illustrating reading input data according to an embodiment of the present invention.
圖7B是依據本發明一實施例的第一輸出資料的示意圖。 Figure 7B is a schematic diagram of the first output data according to an embodiment of the present invention.
圖7C是依據本發明一實施例說明讀取輸入資料的示意圖。 FIG. 7C is a schematic diagram illustrating reading input data according to an embodiment of the present invention.
圖7D是依據本發明一實施例的第一輸出資料的示意圖。 Figure 7D is a schematic diagram of the first output data according to an embodiment of the present invention.
圖7E是依據本發明一實施例說明讀取輸入資料的示意圖。 FIG. 7E is a schematic diagram illustrating reading input data according to an embodiment of the present invention.
圖7F是依據本發明一實施例的第一輸出資料的示意圖。 Figure 7F is a schematic diagram of the first output data according to an embodiment of the present invention.
圖8是依據本發明一實施例說明讀取輸入資料的示意圖。 FIG8 is a schematic diagram illustrating reading input data according to an embodiment of the present invention.
圖9A是依據本發明一實施例說明第二運算的觸發條件的示意圖。 FIG9A is a schematic diagram illustrating the triggering conditions of the second operation according to an embodiment of the present invention.
圖9B是依據本發明一實施例的暫存的第一輸出資料的示意圖。 FIG9B is a schematic diagram of the temporarily stored first output data according to an embodiment of the present invention.
圖10A是依據本發明一實施例的第二運算的示意圖。 Figure 10A is a schematic diagram of the second operation according to an embodiment of the present invention.
圖10B~圖10D是依據本發明一實施例的第二輸出資料的示意圖。 Figures 10B to 10D are schematic diagrams of the second output data according to an embodiment of the present invention.
圖11是依據本發明一實施例的基於卷積神經網路的資料處理方法的流程圖。 Figure 11 is a flow chart of a data processing method based on a convolutional neural network according to an embodiment of the present invention.
圖12A是依據本發明一實施例的暫存的第一輸出資料的示意圖。 FIG12A is a schematic diagram of the temporarily stored first output data according to an embodiment of the present invention.
圖12B是依據本發明一實施例的暫存的第二輸出資料的示意圖。 FIG12B is a schematic diagram of the temporarily stored second output data according to an embodiment of the present invention.
圖13A是依據本發明一實施例的第三運算的示意圖。 Figure 13A is a schematic diagram of the third operation according to an embodiment of the present invention.
圖13B是依據本發明一實施例的第三輸出資料的示意圖。 Figure 13B is a schematic diagram of the third output data according to an embodiment of the present invention.
圖14A~圖14C是依據本發明一實施例的脈動陣列輸出的示意圖。 Figures 14A to 14C are schematic diagrams of the pulse array output according to an embodiment of the present invention.
圖15是依據本發明一實施例的MobileNet架構的資料處理方法的流程圖。 Figure 15 is a flow chart of a data processing method of a MobileNet architecture according to an embodiment of the present invention.
圖1是依據本發明一實施例的基於卷積神經網路的運算電路100的元件方塊圖。請參照圖1,運算電路100包括(但不僅限於)記憶體110及一個或更多個處理元件(Processing Element,PE)120。
FIG1 is a block diagram of a convolutional neural network-based
記憶體110可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、快閃記憶體(Flash Memory)、寄存器(Register)、組合邏輯電路(Combinational Circuit)或上述元件的組合。
The
處理元件120耦接記憶體110。處理元件120包括(但不僅限於)特徵暫存憶體131、先入先出(First Input First Output,FIFO)單元132、第一權重暫存記憶體133、第一運算器135、第一暫存記憶體151、第二權重暫存記憶體153、第二運算器155、第二暫存記憶體171、第二先入先出單元172、第三權重暫存記憶體173及第三運算器175。
The
在一實施例中,特徵暫存憶體131、先入先出單元132、第一權重暫存記憶體133、第一運算器135對應於一層卷積層/運算層。此外,第一運算器135設有第一運算所用的第一過濾器。
In one embodiment, the feature
在一實施例中,特徵暫存記憶體131用以儲存來自記憶體110的輸入資料中的部分或全部,第一先入先出單元132用以依據先入先出規則輸入且/或輸出特徵暫存記憶體131中的資料,
第一權重暫存記憶體133用以儲存來自記憶體110的權重(形成第一卷積核/過濾器),且第一運算器135用以進行第一運算。在一實施例中,第一運算是卷積運算,並待後續實施例詳述。在另一實施例中,第一運算也可能是深度可分離卷積運算或其他類型的卷積運算。
In one embodiment, the feature
在一實施例中,第一暫存記憶體151、第二權重暫存記憶體153、第二運算器155對應於一層卷積層/運算層。此外,第二運算器155設有第二運算所用的第二過濾器。
In one embodiment, the first
在一實施例中,第一暫存記憶體151用以儲存來自第一運算器135所輸出的輸入資料中的部分或全部,第二權重暫存記憶體153用以儲存來自記憶體110的權重(形成第二卷積核/過濾器),且第二運算器155用以進行第二運算。在一實施例中,第二運算是逐深度(depthwise)卷積運算,並待後續實施例詳述。在另一實施例中,第二運算也可能是卷積運算或其他類型的卷積運算。
In one embodiment, the first
在一實施例中,第二暫存記憶體171、第二先入先出單元172、第三權重暫存記憶體173及第三運算器175對應於一層卷積層/運算層。此外,第三運算器175設有第三運算所用的第三過濾器。
In one embodiment, the second
在一實施例中,第二暫存記憶體171用以儲存來自第二運算器155所輸出的輸入資料中的部分或全部,第二先入先出單元172用以依據先入先出規則輸入且/或輸出第二暫存記憶體171中的資料,第三權重暫存記憶體173用以儲存來自記憶體110的
權重(形成第三卷積核/過濾器),且第三運算器175用以進行第三運算。在一實施例中,第三運算是逐點(pointwise)卷積運算,並待後續實施例詳述。在另一實施例中,第三運算也可能是卷積運算或其他類型的卷積運算。
In one embodiment, the second
在一實施例中,前述特徵暫存記憶體131、第一暫存記憶體、第二暫存記憶體、第一權重暫存記憶體133、第二權重暫存記憶體153及第三權重暫存記憶體173可以是靜態隨機存取記憶體(Static Random Access Memory,SRAM)、快閃記憶體、寄存器、各類型緩衝器或上述元件的組合。
In one embodiment, the aforementioned feature
在一實施例中,運算電路100中的部分或全部元件可形成神經網路處理元件(Network Processing Unit,NPU)、片上系統(System on Chip,SoC)或積體電路(Integrated Circuit,IC)。
In one embodiment, some or all of the components in the
在一實施例中,第一運算器135在單位時間內具有第一最大運算量,第二運算器155在相同單位時間內具有第二最大運算量,且第三運算器175在相同單位時間內具有第三最大運算量。第一最大運算量大於第二最大運算量,且第一最大運算量大於第三最大運算量。
In one embodiment, the
下文中,將搭配運算電路100中的各項裝置、元件及模組說明本發明實施例所述之方法。本方法的各個流程可依照實施情形而隨之調整,且並不僅限於此。
In the following, the method described in the embodiment of the present invention will be described with various devices, components and modules in the
圖2是依據本發明一實施例的基於卷積神經網路的資料處理方法的流程圖。請參照圖2,處理元件120自記憶體110讀取
輸入資料(步驟S210)。具體而言,輸入資料可以是影像中部份或全部畫素的資料(例如,色階、亮度、或灰階度)。或者,輸入資料也可以是相關於語音、文字、圖案或其他態樣所形成的資料集合。
FIG2 is a flow chart of a data processing method based on a convolutional neural network according to an embodiment of the present invention. Referring to FIG2, the
讀取輸入資料的方法有很多種。在一實施例中,處理元件120讀取全部的輸入資料,並作為第一部分資料。在另一實施例中,處理元件120依據第一運算所需的資料量或特徵暫存記憶體131的容量每次讀取輸入資料中的一部分,並作為第一部分資料。
There are many ways to read input data. In one embodiment, the
圖3是依據本發明一實施例的輸入資料F的示意圖。請參照圖3,假設輸入資料F的大小為(高H,寬W,通道數C),且處理元件120所讀取的第一部分資料Ffi1的大小為(高Hfi1,寬Wfi1,通道數C)。高Hfi1可小於或等於高H,且寬Wfi1可小於或等於寬W。
FIG3 is a schematic diagram of input data F according to an embodiment of the present invention. Referring to FIG3 , it is assumed that the size of the input data F is (height H, width W, number of channels C), and the size of the first portion of data F fi1 read by the
須說明的是,輸入資料可能儲存在記憶體110中的特定區塊或位置,但本發明實施例不加以限制輸入資料中的各元素在記憶體110中的儲存位置。
It should be noted that the input data may be stored in a specific block or location in the
特徵暫存記憶體131儲存來自記憶體110的輸入資料中的部分或全部。即,特徵暫存記憶體131儲存第一部分資料。第一運算器135對輸入資料中的第一部分資料進行第一運算,以取得第一輸出資料(步驟S230)。具體而言,第一運算是將第一部分資料與對應權重進行第一運算(例如,卷積運算)。第一輸出資料的大小相關於第一運算的第一過濾器大小及第一部分資料的大小。
The feature
例如,圖4是依據本發明一實施例的第一運算的示意圖。
請參照圖4,第一運算以卷積運算為例。第一部分資料Ffi1(大小為高Hfi1,寬Wfi1,通道數Cfi1)與第一過濾器Kn(大小為高Hkd,寬Wkd)。若高Hfi1大於或等於高Hkd且寬Wfi1大於或等於寬Wkd,則第一運算器135可觸發第一運算。而第一運算的結果(即,第一輸出資料Ffo1)的高Hf1o為高Hfi1-Hkd+1,寬Wf1o為寬Wfi1-Wkd+1,且通道數Cf1o相同於通道數Cfi1。
For example, FIG4 is a schematic diagram of a first operation according to an embodiment of the present invention. Referring to FIG4 , the first operation is a convolution operation as an example. The first part of data F fi1 (size is height H fi1 , width W fi1 , number of channels C fi1 ) and the first filter K n (size is height H kd , width W kd ). If the height H fi1 is greater than or equal to the height H kd and the width W fi1 is greater than or equal to the width W kd , the
又例如,若第一部分資料Ffi1的大小(高,寬,通道數)為(3,32,16),且第一過濾器Kn的大小(高,寬)為(3,3),則第一輸出資料Ffo1的大小(高,寬,通道數)為(1,30,16)。 For another example, if the size (height, width, number of channels) of the first part of the data F fi1 is (3, 32, 16), and the size (height, width) of the first filter K n is (3, 3), then the size (height, width, number of channels) of the first output data F fo1 is (1, 30, 16).
在一實施例中,第一運算器135採用脈動陣列(systolic array)結構。第一運算器135將第一部分資料區分成多個第一脈動陣列輸入,並分別對這些第一脈動陣列輸入進行第一運算,以取得多個第一脈動陣列輸出。各第一脈動陣列輸出的大小將受限於脈動陣列的大小。例如,第一脈動陣列輸出的元素量小於或等於脈動陣列的容量。此外,基於相同第一部分資料的這些第一脈動陣列輸出組成第一輸出資料。
In one embodiment, the
例如,圖5A及圖5B是依據本發明一實施例的脈動陣列輸入及輸出的示意圖。請參照圖5A及圖5B,假設脈動陣列的大小為(數量Msa×數量Nsa)。脈動陣列輸出SA1o的高Ha1o為1,其寬Wa1o可為數量Msa,且其通道數Ca1o可為數量Nsa。因此,第一運算器135將第一部分資料區分成脈動陣列輸入SA1i(其大小為高Ha1i,寬Wa1i,通道數Ca1i)及脈動陣列輸入SA2i(其大小為高Ha2i,
寬Wa2i,通道數Ca2i)。這兩個脈動陣列輸入SA1i,SA2i分別與過濾器Kn的各通道的權重進行卷積運算,並據以得出脈動陣列輸出SA1o,SA2o。而脈動陣列輸出SA2o的高Ha2o為1,其寬Wa2o可小於或等於數量Msa,且其通道數Ca2o可小於或等於數量Nsa。
For example, FIG. 5A and FIG. 5B are schematic diagrams of a pulse array input and output according to an embodiment of the present invention. Referring to FIG. 5A and FIG. 5B , it is assumed that the size of the pulse array is (number M sa × number N sa ). The height Ha1o of the pulse array output SA1o is 1, its width W a1o may be the number M sa , and its number of channels Ca1o may be the number N sa . Therefore, the
又例如,第一部分資料的大小(高,寬,通道數)為(3,32,16),脈動陣列的大小為16×16,且過濾器Kn的大小為3×3。脈動陣列輸出SA1o的高Ha1o為1,其寬Wa1o可為16,且其通道數Ca1o可為16。此外,脈動陣列輸入SA1i的高Ha1i為3,其寬Wa1i為18,且其通道數Ca1i為16。另一方面,第一運算器135自第一部分資料區分出脈動陣列輸入SA1i之後,可得出脈動陣列輸入SA2i。脈動陣列輸入SA2i的高Ha2i為3,其寬Wa2i為16,且其通道數Ca2i為16。此外,脈動陣列輸出SA2o的高Ha2o為1,其寬Wa2o為14(即,寬Wa2i-過濾器Kn的寬+1),且其通道數Ca2o為16。
For another example, the size (height, width, number of channels) of the first portion of data is (3, 32, 16), the size of the pulse array is 16×16, and the size of the filter Kn is 3×3. The height Ha1o of the pulse array output SA1o is 1, its width W a1o can be 16, and its number of channels Ca1o can be 16. In addition, the height Ha1i of the pulse array input SA1i is 3, its width W a1i is 18, and its number of channels Ca1i is 16. On the other hand, after the
再例如,表(1)~表(3)是儲存在特徵暫存記憶體131的第一筆、第二筆及第十五筆第一部分資料的資料(其餘筆資料可依此類推):
I(i1,j1,n1)代表所讀取的輸入資料在位置(高位置i1,寬位置j1,通道位置n1)的值。而第一先入先出單元132由右至左且由上至下依序輸入那些資料至第一運算器135。
I(i1,j1,n1) represents the value of the input data read at the position (high position i1, wide position j1, channel position n1). The
表(4)為卷積運算所用16個通道的3×3過濾器的資料:
Fdn(i2,j2,n2)代表所讀取的第n過濾器在位置(高位置i2,寬位置j2,通道位置n2)的值。 F dn (i2, j2, n2) represents the value read by the nth filter at position (high position i2, wide position j2, channel position n2).
表(5)為脈動陣列輸出:
A(i3,j3,n3)代表脈動陣列輸出在位置(高位置i3,寬位置j3,通道位置n3)的值,且其數學表示式為:A(i3,j3,n3)=I(i3,j3,0)×Fdn3(0,0,0)+I(i3,j3,1)×Fdn3(0,0,1)+…+I(i3,j3,15)×Fdn3(0,0,15)+I(i3,j3+1,0)×Fdn3(0,1,0)+I(i3,j3+1,1)×Fdn3(0,1,1)+…+I(i3,j3+1,15)×Fdn3(0,1,15)+I(i3,j3+2,0)×Fdn3(0,2,0)+I(i3,j3+2,1)×Fdn3(0,2,1)+…+I(i3,j3+2,15)×Fdn3(0,2,15)+I(i3+1,j3,0)×Fdn3(1,0,0)+I(i3+1,j3,1)×Fdn3(1,0,1)+…+I(i3+1,j3,15)×Fdn3(1,0,15)+I(i3+1,j3+1,0)×Fdn3(1,1,0)+I(i3+1,j3+1,1)×Fdn3(1,1,1)+…+I(i3+1,j3+1,15)×Fdn3(1,1,15)+I(i3+1,j3+2,0)×Fdn3(1,2,0)+I(i3+1,j3+2,1)×Fdn3(1,2,1)+…+I(i3+1,j3+2,15)×Fdn3(1,2,15)+I(i3+2,j3,0)×Fdn3(2,0,0)+I(i3+2,j3,1)×Fdn3(2,0,1)+…+I(i3+2,j3,15)×Fdn3(2,0,15) +I(i3+2,j3+1,0)×Fdn3(2,1,0)+I(i3+2,j3+1,1)×Fdn3(2,1,1)+…+I(i3+2,j3+1,15)×Fdn3(2,1,15)+I(i3+2,j3+2,0)×Fdn3(2,2,0)+I(i3+2,j3+2,1)×Fdn3(2,2,1)+…+I(i3+2,j3+2,15)×Fdn3(2,2,15)...(1)。 A(i3,j3,n3) represents the value of the pulse array output at the position (high position i3, wide position j3, channel position n3), and its mathematical expression is: A(i3,j3,n3)=I(i3,j3,0)×F dn3 (0,0,0)+I(i3,j3,1)×F dn3 (0,0,1)+…+I(i3,j3,15)×F dn3 (0,0,15)+I(i3,j3+1,0)×F dn3 (0,1,0)+I(i3,j3+1,1)×F dn3 (0,1,1)+…+I(i3,j3+1,15)×F dn3 (0,1,15)+I(i3,j3+2,0)×F dn3 (0,2,0)+I(i3,j3+2,1)×F dn3 (0,2,1)+…+I(i3,j3+2,15)×F dn3 (0,2,15)+I(i3+1,j3,0)×F dn3 (1,0,0)+I(i3+1,j3,1)×F dn3 (1,0,1)+…+I(i3+1,j3,15)×F dn3 (1,0,15)+I(i3+1,j3+1,0)×F dn3 (1,1,0)+I(i3+1,j3+1,1)×F dn3 (1,1,1)+…+I(i3+1,j3+1,15)×F dn3 (1,1,15)+I(i3+1,j3+2,0)×F +I(i3+2,j3+1,0)×F dn3 (2,0,0)+I(i3+2,j3,1)×F dn3 (2,0,1)+…+I(i3+2,j3,15 )×F dn3 (2,0,15) +I(i3+2,j3+1,0)×F dn3 ( 2,1,0 )+I(i3+2,j3+1,1)×F dn3 ( 2,1,1)+… + I(i3+2, j3 +1,15)×F (2,1,15)+I(i3+2,j3+2,0)× Fdn3 (2,2,0)+I(i3+2,j3+2,1)× Fdn3 (2,2,1)+…+I(i3+2,j3+2,15)× Fdn3 (2,2,15)…(1).
圖6A是依據本發明一實施例的脈動陣列輸出SA3o的示意圖。請參照圖6A,脈動陣列輸出SA3o的高Ha3o為1,其寬Wa3o為16,且其通道數Ca3o為16。而在數學表示式(1)中,代表高的i30,代表寬的j30~15且代表過濾器輸出通道的n30~15。 FIG6A is a schematic diagram of a pulse array output SA 3o according to an embodiment of the present invention. Referring to FIG6A , the pulse array output SA 3o has a height H a3o of 1, a width W a3o of 16, and a channel number C a3o of 16. In the mathematical expression (1), the height i3 0, represents wide j3 0~15 and represents the filter output channel n3 0~15.
圖6B是依據本發明一實施例的脈動陣列輸出SA4o的示意圖。請參照圖6B,脈動陣列輸出SA4o的高Ha3o為1,其寬Wa4o為14,且其通道數Ca3o為16。而在數學表示式(1)中,代表高的i30,代表寬的j316~29且代表過濾器輸出通道的n30~15。此外,已完成輸出601為圖6A的脈動陣列輸出SA3o,且當前處理輸出602為脈動陣列輸出SA4o。
FIG6B is a schematic diagram of a pulse array output SA 4o according to an embodiment of the present invention. Referring to FIG6B , the pulse array output SA 4o has a height H a3o of 1, a width W a4o of 14, and a channel number C a3o of 16. In the mathematical expression (1), the height i3 0, represents wide j3 16~29 and represents the filter output channel n3 0~15. In addition, the completed
依此類推,圖6C是依據本發明一實施例的脈動陣列輸出SA4o的示意圖。請參照圖6C,脈動陣列輸出SA5o的高Ha3o為1,其寬Wa5o為14,且其通道數Ca3o為16。而在數學表示式(1)中,代表高的i34,代表寬的j316~29且代表過濾器輸出通道的n30~15。此外,當前處理輸出602為脈動陣列輸出SA5o。這些脈動陣列輸出SA3o~SA5o可形成一筆或更多筆第一輸出資料。
Similarly, FIG. 6C is a schematic diagram of a pulse array output SA 4o according to an embodiment of the present invention. Referring to FIG. 6C , the height H a3o of the pulse array output SA 5o is 1, its width W a5o is 14, and its number of channels C a3o is 16. In the mathematical expression (1), the height i3 4, represents wide j3 16~29 and represents the filter output channel n3 0~15. In addition, the
在一實施例中,第一運算為卷積運算,且第一運算器135對記憶體110所儲存的輸入資料往第一滑動方向讀取第一部分資
料。第一運算器135將輸入資料區分成多個區段,並以平行於輸入資料的高的第一滑動方向接續讀取下一區段,並據以作為第一部分資料。
In one embodiment, the first operation is a convolution operation, and the
例如,圖7A是依據本發明一實施例說明讀取輸入資料Ffi1,Ffi2的示意圖。請參照圖7A,若已完成第一部分資料Ffi1的第一運算,則第一運算器135將這第一部分資料Ffi1視為已完成輸入701,並進一步往方向D1(例如,圖面下方)讀取輸入資料F中的下一區段的第一部分資料Ffi2並作為當前處理輸入702。
For example, FIG7A is a schematic diagram illustrating reading input data F fi1 , F fi2 according to an embodiment of the present invention. Referring to FIG7A , if the first operation of the first portion of data F fi1 has been completed, the
圖7B是依據本發明一實施例的第一輸出資料Ffo1,Ffo2的示意圖。請參照圖7B,第一輸出資料Ffo1是對圖7A的第一部分資料Ffi1進行卷積運算的輸出並作為已完成輸出703。此外,第一輸出資料Ffo2是對圖7A的第一部分資料Ffi2進行卷積運算的輸出並作為當前處理輸出704。第一輸出資料Ffo2也是依據圖7A的方向D1排列在第一輸出資料Ffo1的下方。
FIG7B is a schematic diagram of the first output data F fo1 , F fo2 according to an embodiment of the present invention. Referring to FIG7B , the first output data F fo1 is the output of the convolution operation performed on the first part of the data F fi1 of FIG7A and is used as the completed
圖7C是依據本發明一實施例說明讀取輸入資料Ffi3的示意圖。請參照圖7C,若已完成輸入701已到達輸入資料F底部,則第一運算器135往方向D2(例如,圖面右方)並由上至下(對應於圖7A的方向D1)讀取輸入資料F中的下一區段的第一部分資料Ffi3並作為當前處理輸入702。
FIG7C is a schematic diagram illustrating the reading of input data F fi3 according to an embodiment of the present invention. Referring to FIG7C , if the
圖7D是依據本發明一實施例的第一輸出資料Ffo3的示意圖。請參照圖7D,第一輸出資料Ffo3是對圖7C的第一部分資料Ffi3進行卷積運算的輸出並作為當前處理輸出704。相似地,當前
處理輸出704排列在已完成輸出703的右方。
FIG7D is a schematic diagram of the first output data F fo3 according to an embodiment of the present invention. Referring to FIG7D , the first output data F fo3 is the output of the convolution operation on the first part of the data F fi3 in FIG7C and serves as the
圖7E是依據本發明一實施例說明讀取輸入資料Ffi4的示意圖。請參照圖7E,作為當前處理輸入702的第一部分資料Ffi4為輸入資料中的最後一個區段。
FIG7E is a schematic diagram illustrating reading input data Ffi4 according to an embodiment of the present invention. Referring to FIG7E, the first portion of data Ffi4 currently processed as
圖7F是依據本發明一實施例的第一輸出資料Ffo4的示意圖。請參照圖7F,第一輸出資料Ffo4是對圖7E的第一部分資料Ffi4進行卷積運算的輸出並作為當前處理輸出704。相似地,當前處理輸出704排列在已完成輸出703的下方,並據以完成對輸入資料F的卷積運算。
FIG7F is a schematic diagram of the first output data F fo4 according to an embodiment of the present invention. Referring to FIG7F , the first output data F fo4 is the output of the convolution operation on the first part of the data F fi4 in FIG7E and serves as the
在另一實施例中,第一運算器135對記憶體110所儲存的輸入資料往(不同於第一滑動方向的)第二滑動方向讀取第一部分資料。相似地,第一運算器135將輸入資料區分成多個區段,並以平行於輸入資料的寬的第二滑動方向接續讀取下一區段,並據以作為第一部分資料。
In another embodiment, the
例如,圖8是依據本發明一實施例說明讀取輸入資料的示意圖。請參照圖8,若已完成第一部分資料Ffi1的第一運算,則第一運算器135將這第一部分資料Ffi1視為已完成輸入701,並進一步往方向D2(例如,圖面右方)讀取輸入資料F中的下一區段的第一部分資料Ffi6並作為當前處理輸入702。相似地,若往方向D2已讀取到同行的最後一區段,則第一運算器135會讀取第一部分資料Ffi1下方的區段。此外,第一部分資料Ffi1及其他第一部分資料(圖未示)的排列可參照前述說明,於此不再贅述。
For example, FIG8 is a schematic diagram illustrating reading input data according to an embodiment of the present invention. Referring to FIG8 , if the first operation of the first partial data F fi1 has been completed, the
請參照圖2,第一運算器135暫存一個或更多個第一輸出資料至第一暫存記憶體151的第一暫存區(步驟S250)。具體而言,不同於現有技術將第一輸出資料輸出至記憶體110,本發明實施例的第一輸出資料輸出至第二運算器155的暫存第一暫存記憶體151,從而降低記憶體110的存取次數。
Referring to FIG. 2 , the
而第一暫存記憶體151(或第一暫存區)所暫存的第一輸出資料大於第一預定資料量時,第二運算器155對第一輸出資料進行第二運算,以取得第二輸出資料(步驟S270)。具體而言,現有多卷積層的架構中,下一個卷積層需要等到上一個卷積層對其所有輸入資料運算並輸出至主記憶體之後,才會自主記憶體讀取上一個卷積層所輸出的輸入資料。不同於現有技術,除了暫存至記憶體110以外的儲存媒體(例如,第一暫存記憶體151或第二暫存記憶體171),本發明實施例更在每當滿足下一個卷積層所需的輸入資料的大小(即,第一預定資料量)的情況下,即可觸發下一個卷積層的卷積運算。同時,若上一個卷積層對所有輸入資料的運算尚未完成,這兩個卷積層的運算可一併同時進行。換句而言,第二運算器155對第一輸出資料進行第二運算時,第一運算器135持續對輸入資料進行第一運算。
When the first output data temporarily stored in the first temporary storage memory 151 (or the first temporary storage area) is greater than the first predetermined data amount, the
值得注意的是,第二運算所輸入的第二部份資料包括第一暫存記憶體151所暫存的第一輸出資料,且第二輸出資料的大小相關於第二運算的第二過濾器大小。假設第二運算是逐深度(depthwise)卷積運算。逐深度卷積運算的各過濾器分別僅對應於第
二部分資料中的一個通道的資料。即,逐深度卷積運算的任一過濾器僅對一個通道的資料卷積運算。因此,逐深度卷積運算的過濾器的數量通常等於第二部份資料的通道數。然而,卷積運算的各過濾器是對所有通道的資料進行卷積運算。此外,只要暫存的那些第一輸出資料的高增加至過濾器的高且第一輸出資料的寬增加至過濾器的寬,過濾器即可與這些暫存的第一輸出資料(作為第二部份資料)進行逐深度卷積運算。
It is worth noting that the second part of data input by the second operation includes the first output data temporarily stored in the first
在一實施例中,假設逐深度卷積運算所用的各過濾器的高為Hkd,且其過濾器的寬(width)為Wkd。每一區段的第一輸出資料的高為Hf1o,且第一輸出資料的寬為Wf1o。當第一暫存記憶體151或第一暫存區所暫存的第一輸出資料大於Wkd×Hkd時,第二運算器155可進行第二運算。當第一暫存記憶體151或第一暫存區所暫存的第一輸出資料大於第一預定資料量時,第一暫存記憶體151或第一暫存區所暫存的第一輸出資料所組成的高為MH×Hf1o且所組成的寬為MW×Wf1o。MH及MW為倍數且為正整數,MH×Hf1o未小於Hkd,且MW×Wf1o未小於Wkd。換句而言,在所暫存的第一輸出資料的高MH×Hf1o小於過濾器的高Hkd且所暫存的第一輸出資料的寬MW×Wf1o小於過濾器的寬Wkd的情況下,第二運算器155會繼續等待下一筆第一輸出資料或脈動陣列輸出,直到至所暫存的第一輸出資料的高MH×Hf1o大於或等於過濾器的高Hkd且所暫存的第一輸出資料的寬MW×Wf1o大於或等於過濾器的寬Wkd。
In one embodiment, it is assumed that the height of each filter used in the depthwise convolution operation is H kd and the width of the filter is W kd . The height of the first output data of each segment is H f1o and the width of the first output data is W f1o . When the first output data temporarily stored in the first
舉例而言,圖9A是依據本發明一實施例說明第二運算的
觸發條件的示意圖,且圖9B是依據本發明一實施例的暫存的第一輸出資料的示意圖。請參照圖9A,輸入資料中的已完成輸入901對應於第一輸出資料的已完成輸出903。若當前處理輸入902對應的當前處理輸出904與已完成輸出903的大小符合第二運算所需的大小,則可觸發第二運算。
For example, FIG. 9A is a schematic diagram illustrating a triggering condition of the second operation according to an embodiment of the present invention, and FIG. 9B is a schematic diagram of the temporarily stored first output data according to an embodiment of the present invention. Referring to FIG. 9A , the completed
請參照圖9B,假設圖9A的已完成輸出903與當前處理輸出904形成暫存的第一輸出資料Ftfo。第一運算器135所用脈動陣列的大小為16×16,其中脈動陣列輸出的寬Wtfo1可為16或寬Wtfo2可為14。假設逐深度卷積運算所用的各過濾器的高為3,且其過濾器的寬為3。寬Wtfo1,Wtfo2皆已大於3。若第五筆脈動陣列輸出暫存於第一暫存記憶體151,則第一筆至第五筆脈動陣列輸出的大小(高,寬,通道數)為(1,16,16)或(1,14,16),即通道數Ctfo為16)輸出所形成的大小已滿足3×3的大小。即,高度為1的脈動陣列輸出堆疊三層,使堆疊後的高度為3。此時,這些脈動陣列輸出可作為第二部份資料,並可供第二運算使用。
Please refer to FIG9B , assuming that the completed
須說明的是,圖9A及圖9B是只要堆疊的層數等於過濾器的高即觸發第二運算。然而,在其他實施例中,也可能是堆疊層數大於過濾器的高。 It should be noted that FIG. 9A and FIG. 9B trigger the second operation as long as the number of stacked layers is equal to the height of the filter. However, in other embodiments, the number of stacked layers may be greater than the height of the filter.
針對逐深度卷積運算,圖10A是依據本發明一實施例的第二運算的示意圖。請參照圖10A,假設第二部份資料Fsi1的大小(高,寬,通道數)為(5,30,16),且逐深度卷積運算所用過濾器Fd的大小3×3。I(i4,j4,n4)代表第二部份資料在位置(高位置i4,寬位置j4, 通道位置n4)的值。Fdn4(i5,j5,n5)代表所讀取的第n4過濾器在位置(高位置i5,寬位置j5)的值。A(i4,j4,n4)代表第二輸出資料或脈動陣列輸出在位置(高位置i4,寬位置j4,通道位置n4)的值,且其數學表示式為:A(i4,j4,n4)=I(i4,j4,n4)×Fdn4(0,0)+I(i4,j4+1,n4)×Fdn4(0,1)+I(i4,j4+2,n4)×Fdn4(0,2)+I(i4+1,j4,n4)×Fdn4(1,0)+I(i4+1,j4+1,n4)×Fdn4(1,1)+I(i4+1,j4+2,n4)×Fdn4(1,2)+I(i4+2,j4,n)×Fdn4(2,0)+I(i4+2,j4+1,n4)×Fdn4(2,1)+I(i4+2,j4+2,n4)×Fdn4(2,2)...(2)。 FIG10A is a schematic diagram of the second operation according to an embodiment of the present invention for depth-wise convolution operation. Referring to FIG10A , it is assumed that the size (height, width, number of channels) of the second part data F si1 is (5, 30, 16), and the size of the filter F d used in the depth-wise convolution operation is 3×3. I(i4, j4, n4) represents the value of the second part data at the position (height position i4, width position j4, channel position n4). F dn4 (i5, j5, n5) represents the value of the read n4th filter at the position (height position i5, width position j5). A(i4,j4,n4) represents the value of the second output data or pulse array output at the position (high position i4, wide position j4, channel position n4), and its mathematical expression is: A(i4,j4,n4)=I(i4,j4,n4)×F dn4 (0,0)+I(i4,j4+1,n4)×F dn4 (0,1)+I(i4,j4+2,n4)×F dn4 (0,2)+I(i4+1,j4,n4)×F dn4 (1,0)+I(i4+1,j4+1,n4)×F dn4 (1,1)+I(i4+1,j4+2,n4)×F dn4 (1,2)+I(i4+2,j4,n)×F dn4 (2,0)+I(i4+2,j4+1,n4)× Fdn4 (2,1)+I(i4+2,j4+2,n4)× Fdn4 (2,2)…(2).
圖10B是依據本發明一實施例的第二輸出資料Fso1的示意圖。請參照圖10B,假設當前處理的第二輸出資料Fso1的大小(高Hso1,寬Wso1,通道數Cso1)為(1,28,16)。其中,第二輸出資料Fso1中的各值為:A(0,0,n4)=I(0,0,n4)×Fdn4(0,0)+I(0,1,n4)×Fdn4(0,1)+I(0,2,n4)×Fdn4(0,2)+I(1,0,n4)×Fdn4(1,0)+I(1,1,n4)×Fdn4(1,1)+I(1,2,n4)×Fdn4(1,2)+I(2,0,n)×Fdn4(2,0)+I(2,1,n4)×Fdn4(2,1)+I(2,2,n4)×Fdn4(2,2)...(3) FIG10B is a schematic diagram of the second output data F so1 according to an embodiment of the present invention. Referring to FIG10B , it is assumed that the size (height H so1 , width W so1 , number of channels C so1 ) of the second output data F so1 currently being processed is (1, 28, 16). The values in the second output data F so1 are: A(0,0,n4)=I(0,0,n4)×F dn4 (0,0)+I(0,1,n4)×F dn4 (0,1)+I(0,2,n4)×F dn4 (0,2)+I(1,0,n4)×F dn4 (1,0)+I(1,1,n4)×F dn4 (1,1)+I(1,2,n4)×F dn4 (1,2)+I(2,0,n)×F dn4 (2,0)+I(2,1,n4)×F dn4 (2,1)+I(2,2,n4)×F dn4 (2,2)...(3)
A(0,1,n4)=I(0,1,n4)×Fdn4(0,0)+I(0,2,n4)×Fdn4(0,1)+I(0,3,n4)×Fdn4(0,2)+I(1,1,n4)×Fdn4(1,0)+I(1,2,n4)×Fdn4(1,1)+ I(1,3,n4)×Fdn4(1,2)+I(2,1,n)×Fdn4(2,0)+I(2,2,n4)×Fdn4(2,1)+I(2,3,n4)×Fdn4(2,2)...(4) A(0,1,n4)=I(0,1,n4)×F dn4 (0,0)+I(0,2,n4)×F dn4 (0,1)+I(0,3,n4)×F dn4 (0,2)+I(1,1,n4)×F dn4 (1,0)+I(1,2,n4)×F dn4 (1,1)+ I(1,3,n4)×F dn4 (1,2)+I(2,1,n)×F dn4 (2,0)+I(2,2,n4)×F dn4 (2,1)+I(2,3,n4)×F dn4 (2,2)…(4)
A(0,27,n4)=I(0,27,n4)×Fdn4(0,0)+I(0,28,n4)×Fdn4(0,1)+I(0,29,n4)×Fdn4(0,2)+I(1,27,n4)×Fdn4(1,0)+I(1,28,n4)×Fdn4(1,1)+I(1,29,n4)×Fdn4(1,2)+I(2,27,n)×Fdn4(2,0)+I(2,28,n4)×Fdn4(2,1)+I(2,29,n4)×Fdn4(2,2)...(5)其餘依此類推,於此不再贅述。 A(0,27,n4)=I(0,27,n4)×F dn4 (0,0)+I(0,28,n4)×F dn4 (0,1)+I(0,29,n4)×F dn4 (0,2)+I(1,27,n4)×F dn4 (1,0)+I(1,28,n4)×F dn4 (1,1)+I(1,29,n4)×F dn4 (1,2)+I(2,27,n)×F dn4 (2,0)+I(2,28,n4)×F dn4 (2,1)+I(2,29,n4)×F dn4 (2,2)…(5) The rest can be deduced from this formula and will not be elaborated here.
圖10C是依據本發明一實施例的第二輸出資料Fso2的示意圖。請參照圖10C,已完成輸出101為圖10B的第二輸出資料Fso1。第二輸出資料Fso2為當前處理輸出102,且其大小可相同於圖10B的第二輸出資料Fso1。其中,第二輸出資料Fso2中的各值為:A(1,0,n4)=I(1,0,n4)×Fdn4(0,0)+I(1,1,n4)×Fdn4(0,1)+I(1,2,n4)×Fdn4(0,2)+I(2,0,n4)×Fdn4(1,0)+I(2,1,n4)×Fdn4(1,1)+I(2,2,n4)×Fdn4(1,2)+I(3,0,n)×Fdn4(2,0)+I(3,1,n4)×Fdn4(2,1)+I(3,2,n4)×Fdn4(2,2)...(6)
FIG10C is a schematic diagram of the second output data F so2 according to an embodiment of the present invention. Referring to FIG10C , the completed
A(1,1,n4)=I(1,1,n4)×Fdn4(0,0)+I(1,2,n4)×Fdn4(0,1)+I(1,3,n4)×Fdn4(0,2) +I(2,1,n4)×Fdn4(1,0)+I(2,2,n4)×Fdn4(1,1)+I(2,3,n4)×Fdn4(1,2)+I(3,1,n)×Fdn4(2,0)+I(3,2,n4)×Fdn4(2,1)+I(3,3,n4)×Fdn4(2,2)...(7) A(1,1,n4)=I(1,1,n4)×F dn4 (0,0)+I(1,2,n4)×F dn4 (0,1)+I(1,3,n4)×F dn4 (0,2)+I(2,1,n4)×F dn4 (1,0)+I(2,2,n4)×F dn4 (1,1)+I(2,3,n4)×F dn4 (1,2)+I(3,1,n)×F dn4 (2,0)+I(3,2,n4)×F dn4 (2,1)+I(3,3,n4)×F dn4 (2,2)…(7)
A(1,27,n4)=I(1,27,n4)×Fdn4(0,0)+I(1,28,n4)×Fdn4(0,1)+I(1,29,n4)×Fdn4(0,2)+I(2,27,n4)×Fdn4(1,0)+I(2,28,n4)×Fdn4(1,1)+I(2,29,n4)×Fdn4(1,2)+I(3,27,n)×Fdn4(2,0)+I(3,28,n4)×Fdn4(2,1)+I(3,29,n4)×Fdn4(2,2)...(8)其餘依此類推,於此不再贅述。 A(1,27,n4)=I(1,27,n4)×F dn4 (0,0)+I(1,28,n4)×F dn4 (0,1)+I(1,29,n4)×F dn4 (0,2)+I(2,27,n4)×F dn4 (1,0)+I(2,28,n4)×F dn4 (1,1)+I(2,29,n4)×F dn4 (1,2)+I(3,27,n)×F dn4 (2,0)+I(3,28,n4)×F dn4 (2,1)+I(3,29,n4)×F dn4 (2,2)…(8)The rest can be deduced from this formula and will not be elaborated here.
圖10D是依據本發明一實施例的第二輸出資料Fso3的示意圖。請參照圖10C,第二輸出資料Fso3為當前處理輸出102,且其大小可相同於圖10B的第二輸出資料Fso1。其中,第二輸出資料Fso3中的各值為:A(2,0,n4)=I(2,0,n4)×Fdn4(0,0)+I(2,1,n4)×Fdn4(0,1)+I(2,2,n4)×Fdn4(0,2)+I(3,0,n4)×Fdn4(1,0)+I(3,1,n4)×Fdn4(1,1)+I(3,2,n4)×Fdn4(1,2)+I(4,0,n)×Fdn4(2,0)+I(4,1,n4)×Fdn4(2,1)+I(4,2,n4)×Fdn4(2,2)...(9)
FIG10D is a schematic diagram of the second output data F so3 according to an embodiment of the present invention. Referring to FIG10C , the second output data F so3 is the
A(2,1,n4)=I(2,1,n4)×Fdn4(0,0)+I(2,2,n4)×Fdn4(0,1)+I(2,3,n4)×Fdn4(0,2) +I(3,1,n4)×Fdn4(1,0)+I(3,2,n4)×Fdn4(1,1)+I(3,3,n4)×Fdn4(1,2)+I(4,1,n)×Fdn4(2,0)+I(4,2,n4)×Fdn4(2,1)+I(4,3,n4)×Fdn4(2,2)...(10) A(2,1,n4)=I(2,1,n4)×F dn4 (0,0)+I(2,2,n4)×F dn4 (0,1)+I(2,3,n4)×F dn4 (0,2)+I(3,1,n4)×F dn4 (1,0)+I(3,2,n4)×F dn4 (1,1)+I(3,3,n4)×F dn4 (1,2)+I(4,1,n)×F dn4 (2,0)+I(4,2,n4)×F dn4 (2,1)+I(4,3,n4)×F dn4 (2,2)…(10)
A(2,27,n4)=I(2,27,n4)×Fdn4(0,0)+I(2,28,n4)×Fdn4(0,1)+I(2,29,n4)×Fdn4(0,2)+I(3,27,n4)×Fdn4(1,0)+I(3,28,n4)×Fdn4(1,1)+I(3,29,n4)×Fdn4(1,2)+I(4,27,n)×Fdn4(2,0)+I(4,28,n4)×Fdn4(2,1)+I(4,29,n4)×Fdn4(2,2)...(11)其餘依此類推,於此不再贅述。 A(2,27,n4)=I(2,27,n4)×F dn4 (0,0)+I(2,28,n4)×F dn4 (0,1)+I(2,29,n4)×F dn4 (0,2)+I(3,27,n4)×F dn4 (1,0)+I(3,28,n4)×F dn4 (1,1)+I(3,29,n4)×F dn4 (1,2)+I(4,27,n)×F dn4 (2,0)+I(4,28,n4)×F dn4 (2,1)+I(4,29,n4)×F dn4 (2,2)…(11)The rest can be deduced from this formula and will not be elaborated here.
在一實施例中,第二運算器155採用脈動陣列結構。第二運算器155將第二部分資料(即,部份暫存的第一輸出資料)區分成多個第二脈動陣列輸入,並分別對這些第二脈動陣列輸入進行第二運算,以取得多個第二脈動陣列輸出。各第二脈動陣列輸出的大小將受限於脈動陣列的大小。例如,第二脈動陣列輸出的元素量小於或等於脈動陣列的容量。此外,基於相同第二部份資料的這些第二脈動陣列輸出組成第二輸出資料。以圖10B為例,若脈動陣列的大小為16×16,則第二輸出資料Fso1包括1×16×16及1×12×16的第二脈動陣列輸出。
In one embodiment, the
針對下一個卷積層,圖11是依據本發明一實施例的基於卷積神經網路的資料處理方法的流程圖。請參照圖11,在一實施例中,第二運算器155可暫存一個或更多個第二輸出資料在第二
暫存記憶體171的第二暫存區(步驟S111)(步驟S280)。具體而言,相似地,本發明實施例將上一個卷積層的輸出暫存在下一個卷積層的緩衝器中,而不是將輸出資料直接輸出到記憶體110。
For the next convolution layer, FIG11 is a flow chart of a data processing method based on a convolution neural network according to an embodiment of the present invention. Referring to FIG11, in one embodiment, the
當第一暫存記憶體171或第二暫存區所暫存的第二輸出資料大於第二預定資料量時,第三運算器175可對第二輸出資料進行第三運算,以取得第三輸出資料(步驟S113)。具體而言,第三運算所輸入的第三部份資料包括第二暫存記憶體171所暫存的第二輸出資料,且第三部份資料的大小相關於第三運算的過濾器大小。假設第三運算是逐點(pointwise)卷積運算。逐點卷積運算的各過濾器的大小僅為1×1。相似於卷積運算,逐點卷積運算的各過濾器也是對所有通道的資料進行卷積運算。此外,只要暫存的那些第二輸出資料的高增加至過濾器的高(為1)且第二輸出資料的寬增加至過濾器的寬(為1),過濾器即可與這些暫存的第二輸出資料(作為第三部份資料)進行逐深度卷積運算。
When the second output data temporarily stored in the first
在一實施例中,依據圖10B~圖10D所示,每一筆的第二輸出資料皆可滿足逐點卷積運算所需的大小。因此,第二先入先出單元172可依序輸入每一筆第二輸出資料至第三運算器175。第三運算器175可對各暫存的第二輸出資料進行第三運算。
In one embodiment, as shown in FIG. 10B to FIG. 10D , each second output data can satisfy the size required for the point-by-point convolution operation. Therefore, the second first-in first-out
例如,圖12A是依據本發明一實施例的暫存的第一輸出資料Ftfo的示意圖,且圖12B是依據本發明一實施例的暫存的第二輸出資料Ftso的示意圖。請參照圖12A及圖12B,若第二運算器155已完成對所暫存的多個第一輸出資料中的一部分的卷積運
算,則第一暫存記憶體151可暫存大小(高,寬,通道數)為(1,Wso21,Cso2)的第二脈動陣列輸出或(1,Wso21+ Wso21,Cso2)的第二輸出資料,並據以成為暫存的第二輸出資料Ftso。其中,通道數Cso2相同於通道數Ctf2。
For example, FIG. 12A is a schematic diagram of the first temporarily stored output data F tfo according to an embodiment of the present invention, and FIG. 12B is a schematic diagram of the second temporarily stored output data F tso according to an embodiment of the present invention. Referring to FIG. 12A and FIG. 12B, if the
圖13A是依據本發明一實施例的第三運算的示意圖。請參照圖13A,第三運算器175將圖12B的暫存的第二輸出資料Ftso作為第三部份資料Fti(其寬Wso3為Wso21+Wso21),並對第三部份資料Fti與逐點卷積運算所用的過濾器Fp進行第三運算。
FIG13A is a schematic diagram of a third operation according to an embodiment of the present invention. Referring to FIG13A, the
圖13B是依據本發明一實施例的第三輸出資料Fto的示意圖。請參照圖13A及圖13B,第三輸出資料Fto大小等同於第三部份資料Fti。即,寬Wto1相同於寬Wso3,且通道數Cto1相同於通道數Cso2。 FIG13B is a schematic diagram of the third output data F to according to an embodiment of the present invention. Referring to FIG13A and FIG13B , the third output data F to is equal to the third partial data F ti . That is, the width W to1 is equal to the width W so3 , and the number of channels C to1 is equal to the number of channels C so2 .
在一實施例中,第三運算器175採用脈動陣列結構。第三運算器175將第三部分資料區分成多個第三脈動陣列輸入,並分別對這些第三脈動陣列輸入進行第三運算,以取得多個第三脈動陣列輸出。各第三脈動陣列輸出的大小將受限於脈動陣列的大小。例如,第三脈動陣列輸出的元素量小於或等於脈動陣列的容量。此外,基於相同第三部份資料(即,部份暫存的第二輸出資料)的這些第三脈動陣列輸出組成第三輸出資料。例如,若第三部份資料的大小為1×28×16,且脈動陣列的大小為16×16,則第三輸出資料包括1×16×16及1×12×16的第三脈動陣列輸出。
In one embodiment, the
例如,圖14A是依據本發明一實施例的脈動陣列輸出
SA6o的示意圖。請參照圖14A,表(6)是儲存在第二暫存記憶體171的第二輸出資料的資料:
I(i6,j6,n6)代表所讀取的輸入資料在位置(高位置i6,寬位置j6,通道位置n6)的值。而第二先入先出單元172由右至左且由上至下依序輸入那些資料至第三運算器175。
I(i6,j6,n6) represents the value of the input data read at the position (high position i6, wide position j6, channel position n6). The
表(7)為逐點卷積運算所用16個通道的1×1過濾器的資料:
Fdn(i7,j7,n7)代表所讀取的第n過濾器在位置(高位置i7,寬位置j7,通道位置n7)的值。 F dn (i7, j7, n7) represents the value read from the nth filter at position (high position i7, wide position j7, channel position n7).
表(9)為脈動陣列輸出:表(9)
A(i6,j6,n6)代表脈動陣列輸出在位置(高位置i6,寬位置j6,通道位置n6)的值,且其數學表示式為:A(i6,j3,n6)=I(i6,j6,0)×Fdn6(0,0,0)+I(i6,j6,1)×Fdn6(0,0,1)+…+I(i6,j6,15)×Fdn6(0,0,15)...(12)。 A(i6,j6,n6) represents the value of the pulse array output at the position (high position i6, wide position j6, channel position n6), and its mathematical expression is: A(i6,j3,n6)=I(i6,j6,0)×F dn6 (0,0,0)+I(i6,j6,1)×F dn6 (0,0,1)+…+I(i6,j6,15)×F dn6 (0,0,15)...(12).
因此,脈動陣列輸出SA6o的各值為(n60~15):A(0,0,n6)=I(0,0,0)×Fdn6(0,0,0)+I(0,0,1)×Fdn6(0,0,1)+…+I(0,0,15)×Fdn6(0,0,15)...(13);A(0,1,n6)=I(0,1,0)×Fdn6(0,0,0)+I(0,1,1)×Fdn6(0,0,1)+…+I(0,1,15)×Fdn6(0,0,15)...(14)。 Therefore, the values of the pulse array output SA 6o are ( n 6 0~15): A(0,0,n6)=I(0,0,0)× Fdn6 (0,0,0)+I(0,0,1)× Fdn6 (0,0,1)+…+I(0,0,15)× Fdn6 (0,0,15)...(13); A(0,1,n6)=I(0,1,0)× Fdn6 (0,0,0)+I(0,1,1)× Fdn6 (0,0,1)+…+I(0,1,15)× Fdn6 (0,0,15)...(14).
A(0,15,n6)=I(0,15,0)×Fdn6(0,0,0)+I(0,15,1)×Fdn6(0,0,1)+…+I(0,15,15)×Fdn6(0,0,15)...(15),其餘依此類推且不再贅述。 A(0,15,n6)=I(0,15,0)×F dn6 (0,0,0)+I(0,15,1)×F dn6 (0,0,1)+…+I(0,15,15)×F dn6 (0,0,15)…(15), and the rest can be deduced in the same way and will not be elaborated on.
又例如,圖14B是依據本發明一實施例的脈動陣列輸出SA7o的示意圖。請參照圖14A,表(10)是儲存在第二暫存記憶體171的第二輸出資料的資料:
表(11)為脈動陣列輸出:
因此,脈動陣列輸出SA7o的各值為(n60~15):A(0,16,n6)=I(0,16,0)×Fdn6(0,0,0)+I(0,16,1)×Fdn6(0,0,1)+…+I(0,16,15)×Fdn6(0,0,15)...(16);A(0,17,n6)=I(0,17,0)×Fdn6(0,0,0)+I(0,17,1)×Fdn6(0,0,1)+…+I(0,17,15)×Fdn6(0,0,15)...(17)。 Therefore, the values of the pulse array output SA 7o are ( n 6 (0~15): A(0,16,n6)=I(0,16,0)× Fdn6 (0,0,0)+I(0,16,1)× Fdn6 (0,0,1)+…+I(0,16,15)× Fdn6 (0,0,15)…(16); A(0,17,n6)=I(0,17,0)× Fdn6 (0,0,0)+I(0,17,1)× Fdn6 (0,0,1)+…+I(0,17,15)× Fdn6 (0,0,15)…(17).
A(0,27,n6)=I(0,27,0)×Fdn6(0,0,0)+I(0,27,1)×Fdn6(0,0,1)+…+I(0,27,15)×Fdn6(0,0,15)...(18),其餘依此類推且不再贅述。此外,圖14A的脈動陣列輸出SA6o為已完成輸出141,脈動陣列輸出SA7o為當前處理輸出142。
A(0,27,n6)=I(0,27,0)×F dn6 (0,0,0)+I(0,27,1)×F dn6 (0,0,1)+…+I(0,27,15)×F dn6 (0,0,15)…(18), and the rest is similar and will not be repeated. In addition, the pulse array output SA 6o of FIG. 14A is the completed
再例如,圖14C是依據本發明一實施例的脈動陣列輸出
SA8o的示意圖。請參照圖14A,表(12)是儲存在第二暫存記憶體171的第二輸出資料的資料:
表(13)為脈動陣列輸出:
因此,最後一筆當前處理輸出142的脈動陣列輸出SA8o的各值為(n60~15):A(2,16,n6)=I(2,16,0)×Fdn6(0,0,0)+I(2,16,1)×Fdn6(0,0,1)+…+I(2,16,15)×Fdn6(0,0,15)...(19);A(2,17,n6)=I(2,17,0)×Fdn6(0,0,0)+I(2,17,1)×Fdn6(0,0,1)+…+I(2,17,15)×Fdn6(0,0,15)...(20)。
Therefore, the values of the pulse array output SA 8o of the last
A(2,27,n6)= I(2,27,0)×Fdn6(0,0,0)+I(2,27,1)×Fdn6(0,0,1)+…+I(2,27,15)×Fdn6(0,0,15)...(21),其餘依此類推且不再贅述。 A(2,27,n6)= I(2,27,0)×F dn6 (0,0,0)+I(2,27,1)×F dn6 (0,0,1)+…+I(2,27,15)×F dn6 (0,0,15)…(21), and the rest can be deduced in the same way and will not be elaborated on here.
在一實施例中,第三運算器175運行第三運算時,第一運算器135及第二運算器155持續分別運行第一運算及第二運算。也就是說,若第一運算器135及第二運算器155對所有輸入資料的運算尚未完成,這第一運算器135、第二運算器155及第三運算器175的運算可一併進行。
In one embodiment, when the
請參照圖2,最後,第三運算器175將第三運算所得出的第三輸出資料輸出至記憶體110(步驟S290)。
Please refer to Figure 2. Finally, the
為了方便理解完整流程,以下再舉一實施例說明。圖15是依據本發明一實施例的MobileNet架構的資料處理方法的流程圖。請參照圖15,第一運算器135自記憶體110中的輸入資料讀取已定義區段的寬的資料以做作第一部分資料(步驟S1501)。第一運算器135判斷當前處理的條數是否大於或等於(第一過濾器的大小-1)且這條數與第一運算所用的第一跨步(stride)相除所得的餘數是否為1(步驟S1503)。若符合步驟S1503的條件,則第一先入先出單元132依序將第一部分資料輸出至第一運算器135(步驟S1505)。第一運算器135自記憶體110讀取卷積運算所用的第一過濾器中的權重(步驟S1511),進行卷積運算(步驟S1513),並將所得的第一輸出資料輸出至第一暫存記憶體151(步驟S1515)。第一運算器135判斷當前區段中的當前條(其大小相同於過濾器的大小)的所有資料是否皆已進行卷積運算(步驟S1517)。若這些資料
尚未完成卷積運算,則第一先入先出單元132繼續將第一部分資料輸出至第一運算器135(步驟S1505)。若這條的所有資料皆已進行卷積運算,則第一運算器135判斷當前區段中的所有條的所有資料是否皆已進行卷積運算(步驟S1518)。若當前區段中的一條或更多條的資料尚未完成卷積運算或步驟S1503的條件為符合,則第一運算器135自記憶體110中的輸入資料繼續處理下一條的資料(步驟S1507)。若當前區段中的每一條的所有資料皆已進行卷積運算,則第一運算器135判斷所有區段的所有資料是否皆已進行卷積運算(步驟S1519)。若尚有區段的資料未完成卷積運算,則第一運算器135繼續處理下一個區段的資料(步驟S1509)。此外,第一運算器135將當前處理的條數歸零,並設定當前處理的寬數設為:原寬數+區段的寬-(第一運算所用的第一跨步-1+第二運算所用的第二跨步-1)。若所有區段的所有資料皆已進行卷積運算,則第一運算器135完成對輸入資料的所有卷積運算(步驟S1520)。
In order to facilitate understanding of the complete process, another embodiment is given below for illustration. Figure 15 is a flow chart of a data processing method of a MobileNet architecture according to an embodiment of the present invention. Referring to Figure 15, the
第二運算器155判斷第一暫存記憶體151所暫存的第一輸出資料是否大於第一預定資料量(步驟S1521)。第二過濾器的大小以3×3為例,則第二運算器155判斷所暫存的第一輸出資料是否已有三條。第二運算器155判斷在第一運算已處理的條數與第二運算所用的第二跨步所得的餘數是否等於零(步驟S1523)。若於數為零,則第二運算器155讀取暫存的第一輸出資料並作為第二部分資料(步驟S1525)。
The
若步驟S1521及步驟S1523未符合條件,則第二運算器
155判斷目前處理的資料是否為第一筆第一部分資料(步驟S1531)。若步驟S1531未符合條件,則結束所有第二運算(步驟S1540)。另一方面,第二運算器155自記憶體110讀取逐深度卷積運算所用的第二過濾器中的權重(步驟S1533),進行逐深度卷積運算(步驟S1535),並將所得的第二輸出資料輸出至第二暫存記憶體171(步驟S1537)。第二運算器155判斷當前區段中的所有條的所有資料是否皆已進行逐深度卷積運算(步驟S1538)。若當前區段中的一條或更多條的資料尚未完成卷積運算,則第二運算器155位移至下一個點索引(例如,相隔第二跨步)(步驟S1527)並處理下一筆的資料。直到第一暫存記憶體151中的所有條的所有資料皆已進行逐深度卷積運算,則第二運算器155將當前處理的條數設為:原條數+1,且將當前處理的寬數歸零(步驟S1539)。接著,第二運算器155完成對第二輸入資料的所有逐深度卷積運算(步驟S1540)。
If step S1521 and step S1523 do not meet the conditions, the
第三運算器175判斷第二暫存記憶體171所暫存的第二輸出資料是否已達到一條第二輸出資料(步驟S1541)。第三運算器175讀取暫存的第二輸出資料並作為第三部份資料(步驟S1543)。第三運算器175自記憶體110讀取逐點卷積運算所用的第三過濾器中的權重(步驟S1551),進行逐點卷積運算(步驟S1553),並將所得的第三輸出資料輸出至記憶體110(步驟S1555)。第三運算器175判斷第二暫存記憶體171中的所有條的所有資料是否皆已進行逐點卷積運算。若這些資料尚未完成逐點卷積運算,則第二先入先出單元172繼續將第三部份資料輸出至第三運算器175。若第二
暫存記憶體171中的所有條的所有資料皆已完成逐點卷積運算,則第三運算器175完成對第三部份資料的所有逐點卷積運算(步驟S1560)。
The
本發明實施例更提供一種電腦可讀取儲存媒體(例如,硬碟、光碟、快閃記憶體、固態硬碟(Solid State Disk,SSD)等儲存媒體),並用以儲存程式碼。運算電路100或其他處理器可載入程式碼,並據以執行本發明實施例的一個或更多個資料處理方法的相應流程。這些流程可參酌上文說明,且於此不再贅述。
The present invention further provides a computer-readable storage medium (e.g., a hard disk, an optical disk, a flash memory, a solid state disk (SSD), etc.) for storing program code. The
綜上所述,在本發明實施例的基於卷積神經網路的運算電路、資料處理方法及電腦可讀取儲存媒體中,暫存第一輸出資料及/或第二輸出資料而不輸出至記憶體,並可在暫存的資料符合第二運算及/或第三運算所需的大小的情況下,開始第二運算及/或第三運算。藉此,可減少記憶體的存取次數,並提升運算效率。 In summary, in the computing circuit, data processing method and computer-readable storage medium based on the convolutional neural network of the embodiment of the present invention, the first output data and/or the second output data are temporarily stored without being output to the memory, and the second operation and/or the third operation can be started when the temporarily stored data meets the size required by the second operation and/or the third operation. In this way, the number of memory accesses can be reduced and the computing efficiency can be improved.
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。 Although the present invention has been disclosed as above by the embodiments, it is not intended to limit the present invention. Anyone with ordinary knowledge in the relevant technical field can make some changes and modifications without departing from the spirit and scope of the present invention. Therefore, the protection scope of the present invention shall be subject to the scope defined by the attached patent application.
S210~S290:步驟 S210~S290: Steps
Claims (13)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210055056.1A CN114781626A (en) | 2021-01-21 | 2022-01-18 | Arithmetic circuit, data processing method, and computer-readable storage medium |
US17/578,416 US20220230055A1 (en) | 2021-01-21 | 2022-01-18 | Computing circuit and data processing method based on convolutional neural network and computer readable storage medium |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163139809P | 2021-01-21 | 2021-01-21 | |
US63/139,809 | 2021-01-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202230229A TW202230229A (en) | 2022-08-01 |
TWI840715B true TWI840715B (en) | 2024-05-01 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190147318A1 (en) | 2017-11-14 | 2019-05-16 | Google Llc | Highly Efficient Convolutional Neural Networks |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190147318A1 (en) | 2017-11-14 | 2019-05-16 | Google Llc | Highly Efficient Convolutional Neural Networks |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11948070B2 (en) | Hardware implementation of a convolutional neural network | |
US10942673B2 (en) | Data processing using resistive memory arrays | |
CN105117351B (en) | To the method and device of buffering write data | |
CN108717571B (en) | Acceleration method and device for artificial intelligence | |
TWI836132B (en) | Storage system and method for dynamically scaling sort operation for storage system | |
CN112668708B (en) | Convolution operation device for improving data utilization rate | |
WO2022206556A1 (en) | Matrix operation method and apparatus for image data, device, and storage medium | |
CN108804973B (en) | Hardware architecture of target detection algorithm based on deep learning and execution method thereof | |
KR20210070369A (en) | Data reading/writing method and system, storage medium and terminal during 3D image processing | |
TWI648640B (en) | A parallel hardware searching system for building artificial intelligent computer | |
TWI840715B (en) | Computing circuit and data processing method based on convolution neural network and computer readable storage medium | |
CN109902821B (en) | Data processing method and device and related components | |
WO2022179023A1 (en) | Sorting device and method | |
CN108764182B (en) | Optimized acceleration method and device for artificial intelligence | |
KR20210024751A (en) | Graph processing system including different kind memory device and an operation method thereof | |
CN114781626A (en) | Arithmetic circuit, data processing method, and computer-readable storage medium | |
TW202230229A (en) | Computing circuit and data processing method based on convolution neural network and computer readable storage medium | |
CN109800867B (en) | Data calling method based on FPGA off-chip memory | |
CN111047026B (en) | Memory chip capable of executing artificial intelligent operation and operation method thereof | |
Xiao et al. | A mobilenet accelerator with high processing-element-efficiency on fpga | |
TWI788257B (en) | Method and non-transitory computer readable medium for compute-in-memory macro arrangement, and electronic device applying the same | |
Chu et al. | RECOIN: A low-power processing-in-ReRAM architecture for deformable convolution | |
Okafor et al. | Fusing in-storage and near-storage acceleration of convolutional neural networks | |
JP2024516514A (en) | Memory mapping of activations for implementing convolutional neural networks | |
CN114816322A (en) | External sorting method and device of SSD and SSD memory |