TWI768326B - 卷積運算模組及方法以及其適用之卷積神經網路系統 - Google Patents
卷積運算模組及方法以及其適用之卷積神經網路系統 Download PDFInfo
- Publication number
- TWI768326B TWI768326B TW109113187A TW109113187A TWI768326B TW I768326 B TWI768326 B TW I768326B TW 109113187 A TW109113187 A TW 109113187A TW 109113187 A TW109113187 A TW 109113187A TW I768326 B TWI768326 B TW I768326B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- memory
- matrix
- row
- convolution
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 24
- 238000013527 convolutional neural network Methods 0.000 title claims description 12
- 239000011159 matrix material Substances 0.000 claims description 127
- 230000010354 integration Effects 0.000 claims description 23
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000011176 pooling Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007877 drug screening Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000011664 nicotinic acid Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
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/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
Abstract
本發明提供一種卷積運算模組包含第一記憶元件、第二記憶元件以及第一運算元件。第一記憶元件用以儲存陣列資料的第一列資料的第一部分。第二記憶元件用以儲存陣列資料的第二列資料的第二部分。其中第二列資料與第一列資料於陣列資料中相鄰且第一部份的數量與第二部分的數量相同。第一運算元件耦接於第一記憶元件與第二記憶元件。其中第一運算元件讀取第一部分與第二部分並整合為第一運算矩陣。其中第一運算元件將第一運算矩陣與第一卷積核進行卷積運算而得第一特徵值。
Description
本發明是關於一種卷積運算模組及方法以及其適用之卷積神經網路系統,特別是關於一種具有整合元件及選擇器切換的卷積運算模組及方法。
近年來,透過深度學習(Deep learning)優化準確性或效能的人工智慧(Artificial Intelligence,AI)技術已廣泛地應用在日常生活中,藉此節省人力與資源。受到仿生技術的啟發,深度學習技術可以透過人工神經網路(Artificial Neural Network,ANN)來實現能學習、能總結歸納的系統。
卷積神經網路(Convolution Neural Network,CNN)因其可避免複雜的預處理步驟以及可直接輸入原始數據使其成為人工神經網路較為主流的方法。然而,因為卷積運算時需要巨量的運算而非常消耗硬體的運算資源,且因為資料讀取反覆讀取以及暫存器填滿的時間等因素而導致卷積運算的時間過長。
有鑑於此,一種卷積運算模組與方法來減少卷積運算時所消耗的運算資源以及縮短運算時間,便是當前卷積神經網路技術上所必須克服的最大課題。
本發明之一目的在於提供一種卷積運算模組與方法,以減少卷積運算時所消耗的運算資源以及縮短運算時間。
本發明提供一種卷積運算模組包含第一記憶元件、第二記憶元件以及第一運算單元。第一記憶元件用以儲存陣列資料的第一列資料的第一部分。第二記憶元件用以儲存陣列資料的第二列資料的第二部分。其中第二列資料與第一列資料於陣列資料中相鄰且第一部份的數量與第二部分的數量相同。第一運算單元耦接於第一記憶元件與第二記憶元件。其中第一運算單元讀取第一部分與第二部分並整合為第一運算矩陣。其中第一運算單元將第一運算矩陣與第一卷積核進行卷積運算而得第一特徵值。
本發明提供一種卷積運算模組包含第一記憶元件、第二記憶元件、整合元件以及第一運算元件。第一記憶元件儲存陣列資料的第一列資料的至少一部分作為第一記憶資料。第二記憶元件儲存陣列資料的第二列資料的至少一部分作為第二記憶資料。其中第二列資料與第一列資料於陣列資料中相鄰。整合元件讀取第一記憶資料與第二記憶資料並整合為第一運算矩陣。第一運算元件讀取第一運算矩陣且將第一運算矩陣與第一卷積核進行卷積運算而得第一特徵值。當第一特徵值計算完成後,第一記憶元件儲存陣列資料的第三列資料的至少一部分且更新第一記憶資料,其中第三列資料與第二列資料於陣列資料中相鄰。整合元件讀取更新後的第一記憶資料與第二記憶資料並整合為第二運算矩陣後,第一運算元件將第二運算矩陣與第一卷積核進行卷積運算而得第二特徵值。
本發明提供一種卷積神經網路系統包含上述任一卷積運算模組、池化(Pooling)模組以及全連結(fully connected)模組。
本發明提供一種卷積運算方法包含:儲存陣列資料的第一列資料的第一部分作為第一記憶資料;儲存陣列資料的第二列資料的第二部分作為第二記憶資料,其中第二列資料與第一列資料於陣列資料中相鄰且第一部份的數量與第二部分的數量相同;讀取第一記憶資料與第二記憶資料並整合為第一運算矩陣;以及透過第一運算元件將第一運算矩陣與第一卷積核進行卷積運算而得第一特徵值。
本發明提供一種卷積運算方法包含:儲存陣列資料的第一列資料的至少一部分作為第一記憶資料;儲存陣列資料的第二列資料的至少一部分作為第二記憶資料,其中第二列資料與第一列資料於陣列資料中相鄰;讀取第一記憶資料與第二記憶資料並整合為第一運算矩陣;透過第一運算元件將第一運算矩陣與第一卷積核(Kernel map)進行卷積運算而得第一特徵值;儲存陣列資料的第三列資料的至少一部分並更新第一記憶資料,其中第三列資料與第二列資料於陣列資料中相鄰;讀取第一記憶資料與第二記憶資料並整合為第二運算矩陣;以及透過第一運算元件將第二運算矩陣與第一卷積核進行卷積運算而得第二特徵值。
如上所述,透過記憶元件交替儲存或讀取資料陣列的部分列資料,減少儲存或讀取的時間,並透過整合元件減少一次所需儲存或讀取的列資料數目。如此可以減少卷積運算時所消耗的運算資源以及縮短運算時間。
10:卷積神經網路系統
R1-Rn:列資料
12,100,200,300:卷積運算模組
OA1-OA9:運算矩陣
14:池化模組
L1,L2,L3,L4:子矩陣
16:全聯結模組
KM1-KM9:卷積核
20:外部儲存空間
F1-F11:特徵值
110,120,140,210,220:記憶元件
FM1,FM2:特徵矩陣
310,320:記憶元件
B1,B2,B3:區塊
130,150:運算單元
d1,d2:方向
131,132,151,240:運算元件
S1-1,S1-2,S1-3,S1-4:步驟
340,370:運算元件
S2-1,S2-2,S2-3,S2-4,S2-5,S2-6,
133,153,230,330:整合元件
S2-7:步驟
250,260,350,360:選擇器
A:資料陣列
圖1為本發明一實施例中卷積神經網路系統的架構示意圖。
圖2為本發明一實施例卷積運算模組計算的示意圖。
圖3為本發明卷積運算模組具有兩組運算元件的示意圖。
圖4A至4C為本發明卷積運算模組運算步伐的示意圖。
圖5為本發明的卷積運算模組產出特徵矩陣的示意圖。
圖6與圖7為本發明的卷積運算模組具有三組以上記憶元件的運作示意圖。
圖8A及圖8B為本發明的卷積運算模組具有選擇器切換讀取記憶資料的運作示意圖。
圖9A及9B為本發明的卷積運算模組應用於複數列資料讀取以及選擇器切換的運作示意圖。
圖10及圖11為本發明的卷積運算方法的流程圖。
以下將以圖式及詳細敘述清楚說明本揭示內容之精神,任何所屬技術領域中具有通常知識者在瞭解本揭示內容之實施例後,當可由本揭示內容所教示之技術,加以改變及修飾,其並不脫離本揭示內容之精神與範圍。
關於本文中所使用之『第一』、『第二』、...等,並非特別指稱次序或順位的意思,亦非用以限定本發明,其僅為了區別以相同技術用語描述的元件或操作。
關於本文中所使用之『包含』、『包括』、『具有』、『含有』等等,均為開放性的用語,即意指包含但不限於。
關於本文中所使用之用詞(terms),除有特別註明外,通常具有每個用詞使用在此領域中、在此揭露之內容中與特殊內容中的平常意義。某些用以
描述本揭露之用詞將於下或在此說明書的別處討論,以提供本領域技術人員在有關本揭露之描述上額外的引導。
請參照圖1,本發明提供一種卷積神經網路系統10包含任一下述卷積運算模組12、池化(Pooling)模組14以及全連結(Fully connected)模組16。具體來說,卷積神經網路系統10例如可用於影像辨識、語言處理或藥物篩選(Drug Screening)等需要比對的運算處理,但本發明並不限制於卷積神經網路系統10的應用範圍。池化模組14連接至卷積運算模組12,池化模組14利用降採樣等方式降低卷積運算模組12計算後的結果資料量。然而本發明並不受限於池化模組14降採樣的方法。降採樣後的數據可經由卷積運算模組12再次進行卷積運算或是傳送到全連結模組16,全連結模組16將數據分類並透過非線性轉換例如Sigmoid,Tanh或ReLU等方法分類資料數據並輸出,藉此得知計算或比對結果,但全連結模組16的轉換或分類方法並不限於此。需說明的是,卷積運算模組12、池化模組14與全連結模組16例如可以軟體或是硬體的方式來實現。此外,卷積神經網路系統10並不限於此架構,任何本領域的通常知識者,可藉由本發明所提出的卷積運算模組12而完成的卷積神經網路系統10皆屬於本發明的技術範疇。
圖2為本發明第一實施例中所提出的卷積運算模組100。請參照圖2,卷積運算模組100包含第一記憶元件110、第二記憶元件120以及第一運算單元130。第一記憶元件110與第二記憶元件120例如是磁碟、快閃記憶體、DRAM或其他暫存器。第一記憶元件110用以儲存陣列資料A的第一列資料R1的第一部分R1P。第二記憶元件120用以儲存陣列資料A的第二列資料R2的第二部分R2P。需說明的是,陣列資料A例如影像、圖片、音訊等資料,但不限與於此。陣列資料
例如可儲存於外部儲存空間20中。陣列資料A具有多個依第二方向d2排序而成的列資料,例如有n個列資料R1-Rn。然而本實施例中僅為簡化說明而採用第二方向d2,列資料的排列方向亦可依第一方向d1排列,本發明並不受限於列資料的排列方向。第一方向d1與第二方向d2為例如為平面上正交的兩個方向,於陣列中可分別表示行方向與列方向。其中第二列資料R2與第一列資料R1於陣列資料A中相鄰且第一部份R1P的數量與第二部分R2P的數量相同。舉例來說,第一列資料R1有m個資料A11-A1m,且以第一方向d1排列,m為任意正整數。第一部分R1P與第二部分R2P的資料量可為x個資料,其中x為大於1且小於m的任意正整數。第一運算單元130耦接於第一記憶元件110與第二記憶元件120。第一運算單元130包括第一運算元件131以及整合元件133。第一運算元件131例如為卷積器。其中第一運算單元130讀取第一部分R1P與第二部分R2P並整合為第一運算矩陣OA1。具體來說,第一運算單元130中的整合單元133將第一列訊號1R的第一部分R1P與第二列訊號R2的第二部分R2P整合為一個第一運算矩陣OA1。第一運算矩陣OA1的大小,舉例來說,第一運算矩陣OA1的大小為2×x。較佳而言,第一運算矩陣OA1為方陣,例如大小為2×2的方陣,但不限於此。其中第一運算元件131將第一運算矩陣OA1與第一卷積核(Kernel map)KM1進行卷積運算而得第一特徵值F1。特徵值例如為第一運算矩陣OA1與第一卷積核KM1的相關程度或相似程度。較佳而言,第一卷積核KM1的大小與第一運算矩陣OA1相同,但不限於此。
於一實施例中,可以透過多個運算元件同時針對另一個卷積核或卷積核計算而得特徵值。請參照圖3,第一運算單元130還可包含第二運算元件132,耦接於整合元件133,其中第二運算元件132將第一運算矩陣OA1與第二卷積核KM2進行卷積運算而得第二特徵值F2。具體來說,第二卷積核KM2與第一
卷積核KM1分別對應兩個不同的比對特徵,藉此透過一次儲存步驟可以完成複數特徵比對。
請參照圖4A至4C,當矩陣資料A中對應第一運算矩陣OA1的第一區塊B1完成第一區塊特徵值F11的計算後,卷積運算模組100所要計算的區塊將會例如以第一方向d1移動至第二區塊B2(如圖4B所示)並計算第二區塊特徵值F12;或是以第二方向d2移動至第三區塊B3(如圖4C所示)並計算第三區塊特徵值F21。區塊定義為矩陣資料A中即將進行卷積運算的部份。卷積計算的順序詳細來說,當矩陣資料A中的被計算區塊由第一區塊B1以第一方向d1移動至第二區塊B2時,第一記憶元件110儲存第一列資料R1中與第一部分R1P部分重疊或是相鄰的第一更新部分R1P’。舉例來說,當第一部分R1P為資料A11與資料A12時,則第一更新部分R1P’所對應的資料可以為資料A12與資料A13或是資料A13與資料A14,但不限於此。第二記憶元件120儲存第二列資料中R2與第二部分R2P部分重疊或是相鄰的第二更新部分R2P’。舉例來說,當二部分R2P為資料A21與資料A22時,則第二更新部分R2P’所對應的資料可以為資料A22與資料A23或是資料A23與資料A24,但不限於此。矩陣資料A中的被計算區塊以第二方向d2由第一區塊B1移動至第三區塊B3時,第一記憶元件110與第二記憶元件120其中之一者儲存第二列資料R2的第二部分R2P,另一者儲存與第二列資料R2相鄰的第三列資料R3的第三部分R3P。其中第二部份R2P的數量與第三部分R3P的數量相同。需說明的是,所移動的步伐(Stride)並不限於1,此處因簡化說明而以步伐為1來說明,然而區塊移動的步伐可以大於1,較佳而言,區塊移動的步伐範圍為1至x-1之間。其後,透過第一運算單元130整合且計算特徵值的方式與上述類似,此處並不贅述。接續,請參照圖5,卷積運算模組100計算資料陣列A的第一區塊B1產
生出的第一區塊特徵值F11後將依序完成至資料陣列A內最後一個區塊Bf的卷積運算而產生對應的特徵值Ff。且第一特徵值F1至最後的特徵值Ff將依照運算順序與步伐方向整合而成為第一特徵矩陣FM1。此外,當同時針對兩個以上不同的卷積核KM1,KM2時,可分別產生第一特徵矩陣FM1與第二特徵矩陣FM2或更多。
於一實施例中,本發明的記憶元件的數量可以大於兩個,且分別對應儲存陣列資料的列資料的一部分。舉例而言,請參照圖6,本發明的卷積運算模組100可包含第三記憶元件140,用以儲存陣列資料A的第三列資料R3的第三部分R3P。其中第三列資料R3與第二列資料R2相鄰且第二部份R2P的數量與第三部分R3P的數量相同。舉例來說,第二列資料R2與第三列資料R3分別有m個資料,m為任意正整數。第二部分R2與第三部分R3的資料量為x個資料,其中x為大於1且小於m的任意正整數。第一運算單元130的整合元件133讀取第一部分R1P、第二部分R2P以及第三部分R3P並整合為第三運算矩陣OA3。此時第三運算矩陣OA3與第三卷積核KM3皆為3×x的矩陣,較佳而言,為3×3的方陣。此外,於一實施例中,請參照圖7,卷積運算模組100還可包含第二運算單元150,耦接於第二記憶元件120以及第三記憶元件140。其中第一部分R1P與第二部分R2P由第一運算單元130的整合元件133讀取並整合為第四運算矩陣OA4。此外,第二部分R2P與第三部分R3P由第二運算單元150的整合元件153讀取並整合為第五運算矩陣OA5。需說明的是,第四運算矩陣OA4與第五運算矩陣OA5為2×x的矩陣,較佳而言,為2×2的方陣。第一運算單元150將第四運算矩陣OA4與第四卷積核KM4進行卷積運算而得第四特徵值F4。同時地,第二運算單元150將第五運算矩陣OA5與第五卷積核KM5進行卷積運算而得第五特徵值F5。藉此,可透過較少的存取列資料的方式,來提升卷積運算的結果量。
另一方面,請參照圖8A至8B,本發明提供一種卷積運算模組200包含第一記憶元件210、第二記憶元件220、整合元件230以及第一運算元件240。第一記憶元件210儲存陣列資料A的第一列資料R1的至少一部分作為第一記憶資料MD1。第二記憶元件220儲存陣列資料A的第二列資料R2的至少一部分作為第二記憶資料MD2。需說明的是,本實施例中並不限定於儲存列資料的資料數量,例如第一列資料與第二列資料具有m個資料,m為任意正整數。則第一列資料至少一部分的資料量x代表為1至m範圍中任意正整數。其中第二列資料R2與第一列資料R1於陣列資料A中相鄰。整合元件230讀取第一記憶資料MD1與第二記憶資料MD2並整合為第六運算矩陣OA6。第一運算元件240讀取第六運算矩陣OA6且將第六運算矩陣OA6與第六卷積核KM6進行卷積運算而得第六特徵值F6。接續請參照圖8B,當第六特徵值F6計算完成後,第一記憶元件210儲存陣列資料A的第三列資料R3的至少一部分且更新第一記憶資料MD1,其中第三列資料R3與第二列資料R2於陣列資料A中相鄰。需說明的是,本實施例中,並不限定於第三列資料R3的儲存位置。換句話說,第三列資料R3的至少一部分可儲存於第一記憶元件210且更新第一記憶資料MD1亦可儲存於第二記憶元件220且更新第二記憶資料MD2。整合元件230讀取更新後的第一記憶資料MD1與第二記憶資料MD2並整合為第七運算矩陣OA7後,第一運算元件240將第七運算矩陣OA7與第六卷積KM6核進行卷積運算而得第七特徵值F7。透過上述卷積運算模組200,在計算資料陣列不同區塊所對應的特徵值時,僅需存取一個列資料,來減少卷積運算所需花費的時間。然而本發明並不受限於存取的列資料數目,以及卷積核的大小。
於一實施例中,卷積運算模組200還可包含第一選擇器250以及第二選擇器260。第一選擇器250的輸入端耦接於第一記憶元件210及第二記憶元件220且輸出端耦接於整合元件230。第二選擇器260的輸入端耦接於第一記憶元件210及第二記憶元件220且輸出端耦接於整合元件230。選擇器例如為多工器(Multiplexer)或切換器(Switcher)等可選擇輸入來源作為輸出內容之元件,較佳為多工器,且根據輸入數量例如可為二對一多工器。當第一運算元件240計算第六特徵值F6時(如圖8A所示),第一選擇器250輸出第一記憶資料MD1至整合元件230作為第六運算矩陣OA6的第一部分P1且第二選擇器260輸出第二記憶資料MD2至整合元件230作為第六運算矩陣OA6的第二部分P2,其中第一部分P1優先於第二部分P2。詳細來說,優先的定義例如為第六運算矩陣OA6中的第一部分P1與第二部分P2依第二方向d2依序排列。第一運算元件240計算第七特徵值F7時,第一選擇器250輸出第二記憶資料MD2至該整合元件230作為第七運算矩陣OA7的第三部分P3且第二選擇器260輸出第一記憶資料MD1至整合元件230作為第七運算矩陣OA7的第四部分P4,其中第三部分優先於第四部分。
與前述第一卷積運算模組100相似,第二卷積運算模組200可增加運算元件同時針對不同的卷積核來運算。舉例來說,第二卷積運算模組200可包含兩個以上的運算元件,複數運算元件分別讀取由整合元件230整合的運算矩陣且將運算矩陣分別與不同的卷積核進行卷積運算而得到對應之特徵值。換句話說,複數運算元件可以同時分別地將不同的卷積核或第二卷積核與一個運算矩陣進行卷積。同時的定義例如為在同一個時脈(Clock)下進行,但不限於此。
請參照圖9A,於一實施例中,第三卷積運算模組300包含第一記憶元件310、第二記憶元件320、第一選擇器350、第二選擇器360、整合元件
330、第一運算元件340以及第二運算元件370。第一記憶元件310儲存陣列資料A的第一列資料R1與第二列資料R2的至少一部分作為第一記憶資料MD1。第二記憶元件320儲存陣列資料A的第三列資料R3與第四列資料R4的至少一部分作為第二記憶資料MD2。較佳而言,第一列資料R1的至少一部分數量為三個資料量A11-A13,但不限於此。第一選擇器350的輸入端耦接於第一記憶元件310及第二記憶元件320且輸出端耦接於整合元件330。第二選擇器320的輸入端耦接於第一記憶元件310及第二記憶元件320且輸出端耦接於整合元件330。第一運算元件340與第二運算元件370分別耦接於整合元件330。
當計算第八特徵值F8與第九特徵值F9時,第一選擇器350輸出第一記憶資料MD1且第二選擇器360輸出第二記憶資料MD2。整合元件330依照第一選擇器350與第二選擇器360的順序整合資料,於此實施例中,第一選擇器350優先於第二選擇器360。整合元件330將第一記憶資料MD1與第二記憶資料MD2整合為第八運算矩陣OA8。較佳而言,第八運算矩陣OA8的尺寸為4×3。第一運算元件340讀取第八運算矩陣OA8的第一子矩陣S1且將第一子矩陣S1與第八卷積核KM8進行卷積運算而得第八特徵值F8。同時地,第二運算元件370讀取第八運算矩陣OA8的第二子矩陣S2且將第二子矩陣S2與第八卷積核KM8進行卷積運算而得第九特徵值F9。
請參照圖9B,當第八特徵值F8與第九特徵值F9計算完成後,第一記憶元件310儲存陣列資料A的第五列資料R5以及第六列資料R6的至少一部分且更新為第一記憶資料MD1。當計算特徵值時,第一選擇器350輸出第二記憶資料MD2且第二選擇器360輸出第一記憶資料MD1。換句話說,第一選擇器350輸出儲存於第二記憶元件320中的第三列資料R3以及第四列資料R4的至少一部分。
而第二選擇器360輸出儲存於第一記憶元件310中的第五列資料R5以及第六列資料R6的至少一部分。整合元件330將第三列資料R3、第四列資料R4、第五列資料R5以及第六列資料R6的至少一部分整合為第九運算矩陣OA9。第一運算元件340讀取第九運算矩陣OA9的第三子矩陣L3且將第三子矩陣L3與第八卷積核KM8進行卷積運算而得第十特徵值F10。同時地,第二運算元件370讀取第九運算矩陣OA9的第四子矩陣L4且將第四子矩陣L4與第八卷積核KM8進行卷積運算而得第十一特徵值F11。
於一實施例中,請參照圖10,卷積運算方法包含:S1-1儲存陣列資料的第一列資料的第一部分作為第一記憶資料;S1-2儲存陣列資料的第二列資料的第二部分作為第二記憶資料,其中第二列資料與第一列資料於陣列資料中相鄰且第一部份的數量與第二部分的數量相同。需說明的是步驟S1-1與S1-2可同時進行,換句話說,可於同一個時脈周期內進行;步驟S1-3讀取第一記憶資料與第二記憶資料並整合為第一運算矩陣,第一運算矩陣較佳為方陣;以及步驟S1-4透過第一運算元件將第一運算矩陣與第一卷積核進行卷積運算而得第一特徵值。於步驟S1-4時,可同時透過第二運算單元將第一運算矩陣與第二卷積核進行卷積運算而得到對應的特徵值。當步驟S1-4完成後,依照資料矩陣內尚未進行卷積運算的區塊調整第一記憶資料與第二記憶資料的內容。藉此完成資料矩陣內所有區塊與第一卷積核的卷積運算,以得到特徵矩陣。
於一實施例中,請參照圖11,卷積運算方法包含:步驟S2-1儲存陣列資料的第一列資料的至少一部分作為第一記憶資料;步驟S2-2儲存陣列資料的第二列資料的至少一部分作為第二記憶資料,其中第二列資料與第一列資料於陣列資料中相鄰。需說明的是,步驟S2-1與步驟S2-2可同時進行,且本方法並
不限於僅有兩個儲存步驟,可視卷積範圍而有所調整。步驟S2-3讀取第一記憶資料與第二記憶資料並整合為第一運算矩陣;步驟S2-4透過第一運算元件將第一運算矩陣與第一卷積核進行卷積運算而得第一特徵值。於步驟S2-4時,可同時透過第二運算單元將第一運算矩陣與第二卷積核進行卷積運算而得到對應的特徵值。步驟S2-5儲存陣列資料的第三列資料的至少一部分並更新第一記憶資料。其中第三列資料與第二列資料於陣列資料中相鄰;步驟S2-6讀取第一記憶資料與第二記憶資料並整合為第二運算矩陣。於步驟S2-6中,較佳而言,第二記憶資料優先第一記憶資料。於一實施例中,可以透過選擇器選擇第一記憶資料或第二記憶資料。透過選擇器的選擇來調整第一記憶資料與第二記憶資料的優先順序。以及步驟S2-7透過第一運算元件將第二運算矩陣與第一卷積核進行卷積運算而得第二特徵值。當第二特徵值計算完成後,依照資料矩陣內尚未進行卷積運算的區塊調整第一記憶資料與第二記憶資料的內容。藉此完成資料矩陣內所有區塊與第一卷積核的卷積運算,以得到特徵矩陣。
本發明已由上述相關實施例加以描述,然而上述實施例僅為實施本發明之範例。必需指出的是,已揭露之實施例並未限制本發明之範圍。相反地,包含於申請專利範圍之精神及範圍之修改及均等設置均包含於本發明之範圍內。
200:卷積運算模組
210,220:記憶元件
230:整合元件
240:運算元件
250,260:選擇器
R1,R2:列資料
MD1,MD2:記憶資料
OA6:運算矩陣
KM6:卷積核
F6:特徵值
d2:方向
Claims (18)
- 一種卷積運算模組,包含:一第一記憶元件,用以儲存一陣列資料的一第一列資料的一第一部分;一第二記憶元件,用以儲存該陣列資料的一第二列資料的一第二部分,其中該第二列資料與該第一列資料於該陣列資料中相鄰且該第一部份的數量與該第二部分的數量相同;以及一第一運算單元,耦接於該第一記憶元件與該第二記憶元件,其中該第一運算單元讀取該第一部分與該第二部分並整合為一第一運算矩陣,其中該第一運算單元將該第一運算矩陣與一第一卷積核進行卷積運算而得一第一特徵值。
- 如請求項1所述之卷積運算模組,其中該第一運算單元包括:一整合元件,耦接於該第一記憶元件與該第二記憶元件,其中該整合元件用以整合該第一部分與該第二部分以產生該第一運算矩陣;以及一第一運算元件,耦接至該整合元件,其中該第一運算元件用以進行卷積運算。
- 如請求項2所述之卷積運算模組,還包含一第二運算元件,耦接於該整合元件,其中該第二運算元件將該第一運算矩陣與一第二卷積核進行卷積運算而得一第二特徵值。
- 如請求項1所述之卷積運算模組,還包含:一第三記憶元件,用以儲存該陣列資料的一第三列資料的一第三部分,其中該第三列資料與該第二列資料相鄰且該第二部份的數量與該第三部分的數量相同;以及一第二運算單元,耦接於該第二記憶元件以及該第三記憶元件,其中該第二部分與該第三部分由該第二運算單元讀取並整合為一第二運算矩陣,其中該第二運算單元將該第二運算矩陣與該第一卷積核進行卷積運算而得一第三特徵值。
- 如請求項1所述之卷積運算模組,其中該第一運算矩陣為一方陣。
- 一種卷積運算模組,包含:一第一記憶元件,儲存一陣列資料的一第一列資料的至少一部分作為一第一記憶資料;一第二記憶元件,儲存該陣列資料的一第二列資料的至少一部分作為一第二記憶資料,其中該第二列資料與該第一列資料於該陣列資料中相鄰;一整合元件,讀取該第一記憶資料與該第二記憶資料並整合為一第一運算矩陣;以及一第一運算元件,讀取該第一運算矩陣且將該第一運算矩陣與一第一卷積核進行卷積運算而得一第一特徵值;當該第一特徵值計算完成後,該第一記憶元件儲存該陣列資料的一第三列資料的至少一部分且更新該第一記憶資料,其中該第三列資料與該第二列資料於該陣列資料中相鄰,該整合元件讀取更新後的該第一記憶資料與該第二記憶資料並整合為一第二運算矩陣後,該第一運算元件將該第二運算矩陣與該第一卷積核進行卷積運算而得一第二特徵值。
- 如請求項6所述之卷積運算模組,還包含:一第一選擇器,輸入端耦接於該第一記憶元件及該第二記憶元件且輸出端耦接於該整合元件;以及一第二選擇器,輸入端耦接於該第一記憶元件及該第二記憶元件且輸出端耦接於該整合元件;當計算該第一特徵值時,該第一選擇器輸出該第一記憶資料至該整合元件作為該第一運算矩陣的一第一部分且該第二選擇器輸出該第二記憶資料至該整合元件作為該第一運算矩陣的一第二部分,其中該第一部分優先於該第二部分;當計算該第二特徵值時,該第一選擇器輸出該第二記憶資料至該整合元件作為該第二運算矩陣的一第三部分且該第二選擇器輸出該第一記憶資料至該整合元件作為該第二運算矩陣的一第四部分,其中該第三部分優先於該第四部分。
- 如請求項6所述之卷積運算模組,還包含一第二運算元件,該第二運算元件讀取該第一運算矩陣且將該第一運算矩陣與一第二卷積核進行卷積運算而得一第三特徵值。
- 如請求項6所述之卷積運算模組,其中該第一運算矩陣為一方陣。
- 一種卷積神經網路系統,包含:請求項第1項至第9項任一項所述的卷積運算模組;連接至該卷積運算模組的一池化(pooling)模組;以及連接至該池化模組的一全連結(fully connected)模組。
- 一種卷積運算方法,包含:儲存一陣列資料的一第一列資料的一第一部分作為一第一記憶資料;儲存該陣列資料的一第二列資料的一第二部分作為一第二記憶資料,其中該第二列資料與該第一列資料於該陣列資料中相鄰且該第一部份的數量與該第二部分的數量相同;讀取該第一記憶資料與該第二記憶資料並整合為一第一運算矩陣;以及透過一第一運算元件將該第一運算矩陣與一第一卷積核進行卷積運算而得一第一特徵值。
- 如請求項11所述之卷積運算方法,當透過該第一運算元件進行卷積運算時,透過一第二運算元件將該第一運算矩陣與一第二卷積核進行卷積運算而得一第二特徵值。
- 如請求項11所述之卷積運算方法,還包含:儲存該陣列資料的一第三列資料的一第三部分作為一第三記憶資料,其中該第三列資料與該第二列資料相鄰且該第二部份的數量與該第三部分的數量相同;讀取該第二記憶資料與該第三記憶資料並整合為一第二運算矩陣;以及 透過一第三運算元件將該第二運算矩陣與該第一卷積核進行卷積運算而得一第三特徵值。
- 如請求項11所述之卷積運算方法,其中該第一運算矩陣為一方陣。
- 一種卷積運算方法,包含:儲存一陣列資料的一第一列資料的至少一部分作為一第一記憶資料;儲存該陣列資料的一第二列資料的至少一部分作為一第二記憶資料,其中該第二列資料與該第一列資料於該陣列資料中相鄰;讀取該第一記憶資料與該第二記憶資料並整合為一第一運算矩陣;透過一第一運算元件將該第一運算矩陣與一第一卷積核進行卷積運算而得一第一特徵值;儲存該陣列資料的一第三列資料的至少一部分並更新該第一記憶資料,其中該第三列資料與該第二列資料於該陣列資料中相鄰;讀取該第一記憶資料與該第二記憶資料並整合為一第二運算矩陣;以及透過該第一運算元件將該第二運算矩陣與該第一卷積核進行卷積運算而得一第二特徵值。
- 如請求項15所述之卷積運算方法,更包含:輸入該第一記憶資料及該第二記憶資料至一第一選擇器;輸入該第一記憶資料及該第二記憶資料至一第二選擇器;當計算該第一特徵值時,該第一選擇器輸出該第一記憶資料為該第一運算矩陣的一第一部分且該第二選擇器輸出該第二記憶資料為該第一運算矩陣的一第二部分,其中該第一部份優先於該第二部分;以及當計算該第二特徵值時,該第一選擇器輸出該第二記憶資料為該第二運算矩陣的一第三部分且該第二選擇器輸出該第一記憶資料為該第二運算矩陣的一第四部分,其中該第三部份優先於該第四部分。
- 如請求項15所述之卷積運算方法,更包含: 當透過該第一運算元件進行卷積運算時,透過一第二運算元件讀取該第一運算矩陣且將該第一運算矩陣與一第二卷積核進行卷積運算而得一第三特徵值。
- 如請求項15所述之卷積運算方法,其中該第一運算矩陣為一方陣。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109113187A TWI768326B (zh) | 2020-04-20 | 2020-04-20 | 卷積運算模組及方法以及其適用之卷積神經網路系統 |
US17/004,668 US20210326697A1 (en) | 2020-04-20 | 2020-08-27 | Convolution operation module and method and a convolutional neural network thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109113187A TWI768326B (zh) | 2020-04-20 | 2020-04-20 | 卷積運算模組及方法以及其適用之卷積神經網路系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202141265A TW202141265A (zh) | 2021-11-01 |
TWI768326B true TWI768326B (zh) | 2022-06-21 |
Family
ID=78081076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109113187A TWI768326B (zh) | 2020-04-20 | 2020-04-20 | 卷積運算模組及方法以及其適用之卷積神經網路系統 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210326697A1 (zh) |
TW (1) | TWI768326B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170323196A1 (en) * | 2016-05-03 | 2017-11-09 | Imagination Technologies Limited | Hardware Implementation of a Convolutional Neural Network |
TW201818233A (zh) * | 2016-11-14 | 2018-05-16 | 耐能股份有限公司 | 卷積運算裝置及卷積運算方法 |
TW201824096A (zh) * | 2016-12-20 | 2018-07-01 | 聯發科技股份有限公司 | 執行卷積計算的系統及方法 |
CN110046705A (zh) * | 2019-04-15 | 2019-07-23 | 北京异构智能科技有限公司 | 用于卷积神经网络的装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2554711B (en) * | 2016-10-06 | 2020-11-25 | Imagination Tech Ltd | Buffer addressing for a convolutional neural network |
JP2018067154A (ja) * | 2016-10-19 | 2018-04-26 | ソニーセミコンダクタソリューションズ株式会社 | 演算処理回路および認識システム |
US11003985B2 (en) * | 2016-11-07 | 2021-05-11 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
CN108388537B (zh) * | 2018-03-06 | 2020-06-16 | 上海熠知电子科技有限公司 | 一种卷积神经网络加速装置和方法 |
US11868875B1 (en) * | 2018-09-10 | 2024-01-09 | Amazon Technologies, Inc. | Data selection circuit |
US11487845B2 (en) * | 2018-11-28 | 2022-11-01 | Electronics And Telecommunications Research Institute | Convolutional operation device with dimensional conversion |
US11675998B2 (en) * | 2019-07-15 | 2023-06-13 | Meta Platforms Technologies, Llc | System and method for performing small channel count convolutions in energy-efficient input operand stationary accelerator |
-
2020
- 2020-04-20 TW TW109113187A patent/TWI768326B/zh active
- 2020-08-27 US US17/004,668 patent/US20210326697A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170323196A1 (en) * | 2016-05-03 | 2017-11-09 | Imagination Technologies Limited | Hardware Implementation of a Convolutional Neural Network |
TW201818233A (zh) * | 2016-11-14 | 2018-05-16 | 耐能股份有限公司 | 卷積運算裝置及卷積運算方法 |
TW201824096A (zh) * | 2016-12-20 | 2018-07-01 | 聯發科技股份有限公司 | 執行卷積計算的系統及方法 |
CN110046705A (zh) * | 2019-04-15 | 2019-07-23 | 北京异构智能科技有限公司 | 用于卷积神经网络的装置 |
Also Published As
Publication number | Publication date |
---|---|
US20210326697A1 (en) | 2021-10-21 |
TW202141265A (zh) | 2021-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210150685A1 (en) | Information processing method and terminal device | |
US11615319B2 (en) | System and method for shift-based information mixing across channels for shufflenet-like neural networks | |
Aimar et al. | NullHop: A flexible convolutional neural network accelerator based on sparse representations of feature maps | |
US20230153621A1 (en) | Arithmetic unit for deep learning acceleration | |
KR102258414B1 (ko) | 처리 장치 및 처리 방법 | |
US11475101B2 (en) | Convolution engine for neural networks | |
Chen et al. | Eyeriss: An energy-efficient reconfigurable accelerator for deep convolutional neural networks | |
US11816574B2 (en) | Structured pruning for machine learning model | |
US10762425B2 (en) | Learning affinity via a spatial propagation neural network | |
WO2022001805A1 (zh) | 一种神经网络蒸馏方法及装置 | |
WO2021179281A1 (en) | Optimizing low precision inference models for deployment of deep neural networks | |
US11120328B1 (en) | Systems and methods for reducing power consumption of convolution operations for artificial neural networks | |
WO2022179075A1 (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
TWI768326B (zh) | 卷積運算模組及方法以及其適用之卷積神經網路系統 | |
US10963775B2 (en) | Neural network device and method of operating neural network device | |
WO2021123725A1 (en) | Sparse finetuning for artificial neural networks | |
CN115485656A (zh) | 用于卷积运算的存储器内处理方法 | |
US20220318610A1 (en) | Programmable in-memory computing accelerator for low-precision deep neural network inference | |
CN114612758A (zh) | 一种基于深度分组可分离卷积的目标检测方法 | |
CN110765413B (zh) | 矩阵求和结构及神经网络计算平台 | |
KR102515579B1 (ko) | 저전력 캡슐 네트워크 동작에 최적화된 보상 프루닝 방법 및 장치 | |
Sun et al. | Efficient Processing of MLPerf Mobile Workloads Using Digital Compute-In-Memory Macros | |
US11972349B1 (en) | Flexible compute array utilization in a tensor processor | |
CN117891751B (zh) | 内存数据访存方法及装置、电子设备与存储介质 | |
US11922306B2 (en) | Tensor controller architecture |