TWI841632B - 用於矩陣的空間地域轉換之方法及系統 - Google Patents
用於矩陣的空間地域轉換之方法及系統 Download PDFInfo
- Publication number
- TWI841632B TWI841632B TW108142041A TW108142041A TWI841632B TW I841632 B TWI841632 B TW I841632B TW 108142041 A TW108142041 A TW 108142041A TW 108142041 A TW108142041 A TW 108142041A TW I841632 B TWI841632 B TW I841632B
- Authority
- TW
- Taiwan
- Prior art keywords
- core
- input
- values
- block
- output
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 125
- 239000013598 vector Substances 0.000 claims abstract description 359
- 239000011159 matrix material Substances 0.000 claims description 73
- 230000005284 excitation Effects 0.000 claims description 22
- 230000008569 process Effects 0.000 description 62
- 238000012360 testing method Methods 0.000 description 56
- 239000010410 layer Substances 0.000 description 43
- 230000003111 delayed effect Effects 0.000 description 21
- 238000012545 processing Methods 0.000 description 17
- 238000013528 artificial neural network Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 238000010801 machine learning Methods 0.000 description 10
- 238000013500 data storage Methods 0.000 description 9
- 210000004027 cell Anatomy 0.000 description 8
- 239000004020 conductor Substances 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- 230000001934 delay Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 2
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100233916 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR5 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 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
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Abstract
本發明揭示一種方法,其包括存取一展平輸入串流,該展平輸入串流包含表示用於與一核心廻旋之一輸入張量之一核心大小分塊之一組輸入值的一組平行向量。接收藉由置換來自該核心之值來產生之一擴展核心。接收包含一組向量之一控制型樣,該組向量各對應於輸出之該核心大小分塊之輸出值位置且指示用於存取輸入值之該展平輸入串流之一向量。該方法進一步包括:針對該輸出之各核心大小分塊之各輸出位置,產生包含由該控制型樣選擇之該展平輸入串流之值的一第一向量與對應於該擴展核心中的對應於該輸出位置之一向量的一第二向量之間的一點積。
Description
本發明大體上係關於矩陣運算,且具體而言,本發明係關於矩陣之空間地域轉換。
現代神經網路包含多個層。各層可包含大量輸入值,其隨後經轉換以產生充當後續層之輸入之輸出(即,激勵)。通常,此等輸入及輸出值經表示為矩陣(例如具有一至多個維之值陣列)。對此等輸入值所執行之一共同轉換係一廻旋。一廻旋將一核心(其包含加權值且亦可表示為一矩陣)應用於輸入中之相鄰值以產生一輸出值。此被重複用於輸入中之所有值(如由權重所修改)以產生一組輸出值。然而,由於核心將歸因於必須在相鄰值中多次讀取而多次跨越或滑過相同輸入值以產生多個輸出時,所以其在使用一初始方法執行時運算量很大。
因此,期望可由一核心更高效率運算由權重修改之輸入值之一廻旋以產生輸出值之一系統。
在一實施例中,一種方法包括:自一緩衝器存取包含一組平行向量之一展平輸入串流,各向量表示用於與一核心廻旋以產生一輸出激勵的一輸入張量之一唯一核心大小分塊之一組輸入值;接收藉由置換來
自該核心之值所產生之一擴展核心,該擴展核心具有各對應於該輸出激勵的一核心大小分塊之一輸出值位置的向量;接收包含一組向量之一控制型樣,各向量對應於該輸出激勵的該核心大小分塊之該輸出值位置,各向量包含指示該展平輸入串流之一平行向量存取輸入值用於該廻旋之延遲值;及針對該輸出激勵的各核心大小分塊之各輸出值位置,使用一硬體加速處理器來產生包含由該控制型樣之該對應向量之該等延遲值選擇之該展平輸入串流之值的一第一向量與對應於該擴展核心中的對應於該輸出值位置之一向量的一第二向量之間的一點積。
在另一實施例中,一種系統包括一處理器及一乘累加單元,該乘累加單元經組態以:自一緩衝器存取包含一組平行向量之一展平輸入串流,各向量表示用於與一核心廻旋以產生一輸出激勵的一輸入張量之一唯一核心大小分塊之一組輸入值;接收藉由置換來自該核心之值所產生之一擴展核心,該擴展核心具有各對應於該輸出激勵的一核心大小分塊之一輸出值位置的向量;接收包含一組向量之一控制型樣,各向量對應於該輸出激勵的該核心大小分塊之該輸出值位置,各向量包含指示該展平輸入串流之一平行向量存取輸入值用於該廻旋之延遲值;及針對該輸出激勵的各核心大小分塊之各輸出值位置,產生包含由該控制型樣之該對應向量之該等延遲值選擇之該展平輸入串流之值的一第一向量與對應於該擴展核心中的對應於該輸出值位置之一向量的一第二向量之間的一點積。
100:系統
102:輸入張量
104:输入通道
104A至104N:輸入通道
106A:維1
106B:維2
106C:維3
108:輸入值
110:核心
112:核心濾波器
112A至112M:核心濾波器
114:核心值
122:輸入串流產生器
124:展平輸入串流
126:擴展核心產生器
128:擴展核心
132:核心大小輸入
134:控制型樣產生器
136:控制型樣
138:分塊號碼指示符
140:乘加單元
142:輸出激勵
144:輸出特徵
144A至144M:輸出特徵
202:輸入值
204:填補
206:重度加權暗方框/邊界框
208:選定廻旋點
210:核心
212:廻旋運算
214:輸出值
218:重複讀取值
300:流程圖
310至330:步驟
400:實例
401:接收輸入
402:基於核心大小來填補輸入
403:將輸入平鋪成具有等於核心之大小之分塊
404:藉由將平鋪輸入轉換成由分塊序數排序之串流來展平輸入
420:輸入
422:核心
424:填補輸入
426A:填補
426B:填補
426C:填補
428:平鋪輸入
430:展平輸入
432:輸入方向
500:實例
501:接收輸入且基於核心大小來填補
502:將輸入平鋪成具有等於核心大小之大小之分塊
503:根據分塊順序來展平影像
504:使用第一展平輸入來平鋪額外輸入通道
520:填補輸入
522:核心
524:平鋪輸入
528:展平輸入
530:單一分塊
532:展平順序
534:輸入方向
538:展平順序
540:輸入通道
540A-N:輸入通道
542:核心
544:展平輸入通道
544A至544N:展平輸入通道
546:展平輸入串流
600:針對3D核心
601:接收輸入且基於核心大小來填補
602:將輸入平鋪成具有等於核心大小之大小之分塊
603:根據分塊順序來展平影像
620:X軸
622:Y軸
624:Z軸
626:填補輸入/分塊輸入
628:填補
630:輸入值
632:核心
634:核心值
636:K變數
638:層大小(「M」)
640:展平順序
642:展平輸入
644:順序
700:流程圖
710至760:步驟
800:實例
801:接收核心
802:旋轉核心
803:產生擴展核心
820:核心
822:旋轉
824:旋轉
826:擴展核心
900:針對2D核心
901:接收核心
902A:旋轉第一維,置換列之所有旋轉(列優先順序)
902B:旋轉第一維,置換列之所有旋轉(行優先順序)
903A:旋轉第二維,置換自第一維旋轉產生之區塊之所有旋轉(列優先方法)
920:核心
920A至920C:二維核心
922A至922C:核心旋轉
924A至924C:核心旋轉
926A至926B:區塊
928A至928C:區塊
930A至930C:區塊
932A:擴展核心
932B:擴展核心
932C:擴展核心
934:核心旋轉
936:核心旋轉
938A至938C:區塊
940:擴展核心
942A至942N:核心濾波器
944A至944N:擴展核心濾波器
1000:實例
1001:接收核心
1002:旋轉第一維,置換列之所有旋轉(列優先順序)
1003A:旋轉第二維:a)沿維之軸線將區塊分組成向量
1003B:旋轉第二維:2)產生自第一維旋轉產生之區塊之所有旋轉,對各組區塊單獨處理(列優先順序)
1004A:旋轉第三維:a)沿維之軸線將區塊分組成向量
1004B:旋轉第三維:2)產生自第二維旋轉產生之區塊之所有旋轉,對各組區塊單獨處理(逐列方法)
1022:Y軸
1024:Z軸
1026:核心
1028:層
1028A:層
1028B:層
1030:核心旋轉
1032A:向量
1032B:向量
1034A:組
1034B:組
1038A:組
1040:向量
1044:擴展核心
1100:流程圖
1110至1140:步驟
1200:實例
1201:展平輸入
1202:執行展平分塊與擴張核心之逐元素乘積
1203:針原始輸入之一分塊中之各核心位置,判定需要哪些分塊值來產生逐元素廻旋乘積(逐列跨過)
1218:展平輸入
1220:核心
1222A:分塊1
1222B:分塊2
1222C:分塊3
1222D:分塊4
1224:擴展核心
1226A:逐元素乘積
1226B:逐元素乘積
1226C:逐元素乘積
1226D:逐元素乘積
1230A:位置1
1230B:位置2
1230C:位置3
1230D:位置4
1232:核心位置
1234A:逐元素乘積對
1234B:逐元素乘積對
1234C:逐元素乘積對
1234D:逐元素乘積對
1236A:控制型樣
1236B:控制型樣
1236C:控制型樣
1236D:控制型樣
1300:實例
1301:實例
1302:實例
1310:3×1 1D核心
1311:產生控制型樣之所有位置之值
1312:使用列號及行號來判定位置之測試結果/控制型樣
1313:參考表來找到指示符值
1314:3×3 2D核心
1316:控制型樣
1318:2×2×2 3D核心
1320:控制型樣
1322:核心
1324:剩餘值
1326:測試結果
1330:不等式測試
1332:結果表
1351:產生控制型樣之所有位置之值
1352:使用列號及行號來判定位置之測試結果
1353:參考表來找到指示符值
1360:控制型樣
1362:三維核心
1364:最後剩餘值
1366:測試結果
1368H:指示符
1370:測試表
1372:結果表
1380:1D核心
1382:1D核心之控制型樣
1384:2D核心
1386:2D核心之控制型樣
1388:3D核心
1390:3D核心之控制型樣
1400:流程圖
1410至1440:步驟
1500:實例
1501A:處理分塊號碼1
1502A:進一步處理3之輸出位置1
1503A:處理3之第二位置2
1504A:處理輸出位置3
1505:對輸入中之所有分塊重複程序1501A(例如1501B至1501L)
1511A:根據輸出位置之控制型樣中所指示之分塊位置(即,延遲量)來自展平輸入選擇值
1512A:乘累加選定輸入值及選自擴展核心之一向量(對應於輸出分塊中之位置)
1513A:根據輸出位置之控制型樣中所指示之分塊位置(即,延遲量)來自展平輸人選擇值
1514A:乘累加選定輸入值及選自擴展核心之一向量(對應於輸出分塊中之位置)
1515A:根據輸出位置之控制型樣中所指示之分塊位置(即,延遲量)來自展平輸入選擇值
1516A:乘累加選定輸入值及選自擴展核心之一向量(對應於輸出分塊中之位置)
1522:展平輸入
1524:控制型樣
1524A:擴展核心向量
1526:擴展核心
1528A:控制型樣向量
1530A:選定輸入值
1532A:擴展核心向量
1534A:輸出
1536A:控制型樣向量
1538A:選定輸入值
1542A:輸出分塊中之位置2之擴展核心向量
1544A:輸出
1546A:控制型樣向量
1548A:選定輸入值
1552:擴展核心向量
1552A:輸出分塊中之位置3之擴展核心向量
1554A:輸出
1600:實例
1601A:處理分塊號碼1
1602A:處理9之輸出位置1
1603A:處理輸出位置2
1606A:處理輸出位置5
1611A:根據輸出位置之控制型樣中所指示之分塊位置(即,延遲量)來自緩衝展平輸入選擇值
1612A:乘累加選定輸入值及選自擴展核心之一向量(對應於輸出分塊中之位置)
1614A:乘累加選定輸入值及選自擴展核心之一向量(對應於輸出分塊中之位置)
1615A:根據輸出位置之控制型樣中所指示之分塊位置(即,延遲
量)來自展平輸入選擇值
1616:對分塊1中之所有輸出位置重複上述程序
1617:對輸入中之所有分塊重複上述程序
1618:對輸入通道及核心通道重複上述程序
1622:展平輸入
1624:控制型樣
1626:擴展核心
1628A:控制型樣向量
1630A:選定輸入值
1632A:擴展核心向量
1634A:輸出
1636A:控制型樣向量
1638A:選定輸入值
1642A:擴展核心向量
1644A:輸出
1646A:控制型樣向量
1648A:選定輸入值
1652A:擴展核心向量
1654A:輸出
1656:展平輸入通道
1658:選定輸入通道值
1660A至1660N:核心濾波器
1662A:廻旋輸出
1664A至1664N:輸出激勵通道
1666:子濾波器核心
1668:使用擴展核心「子濾波器」來執行點積運算
1670:加總廻旋輸出以產生輸出通道
1700:針對3D核心
1701:處理分塊號碼X
1702:處理8之輸出位置8
1711:根據輸出位置之控制型樣中所指示之分塊位置(即,延遲量)來自緩衝展平輸入選擇值
1712:乘累加選定輸入值及基於輸出分塊位置所選擇之選定擴展核心向量
1713:對所有分塊及通道重複
1722:展平輸入
1724:控制型樣向量/控制面板向量
1726:選定輸入值
1728:選定輸入值
1730:擴展核心向量
1732:輸出
1801:資料儲存電路/資料儲存器
1802:移位器電路
1803:乘法器/乘法器電路
1810:資料值
1820:輸入資料值
1830:乘法結果
1851至1853:多工器
1860至1862:旋轉器
1870:旋轉
1871:旋轉
1910:控制型樣產生器電路/控制型樣產生器
1911:K延遲邏輯電路
1912:單位延遲邏輯電路
1920:乘法器陣列電路/乘法器陣列
1921至1926:乘法器胞元
1930:儲存電路
1931:多工器圖
2001:乘法器
2003:延遲電路
2004:K延遲電路
2005:延遲電路
2006:選擇電路
2007:加法器
2011:乘法器
2013:延遲
2014:K延遲
2015:延遲
2016:選擇電路
2017:加法器
2021:乘法器
2023:延遲
2024:K延遲
2025:延遲
2026:選擇電路
2027:加法器
2031:乘法器
2033:延遲
2034:K延遲
2035:延遲
2036:選擇電路
2037:加法器
2041:乘法器
2043:延遲
2044:K延遲
2045:延遲
2046:選擇電路
2047:加法器
2051:乘法器
2053:延遲
2054:K延遲
2055:延遲
2056:選擇電路
2057:加法器
2100:組件佈局
2110:ICU
2115A至2115N:MEM分塊
2120A至2120N:SXM分塊
2125:NIM分塊
2125A至2125N:NIM分塊
2130:超級胞元
2130A-A至2130N-N:超級胞元
2140:輸入值
2145:垂直
2150:輸出特徵
2155:水平
2200:處理器電路
2201:伺服器電腦
2210:型樣/組態軟體
2211:控制型樣產生器
2212:核心產生器
2213:核心/神經網路權重
2220:陣列/型樣/資料儲存器
2221:乘累加器電路
2222:輸入/輸出(I/O)電路
2223:其他電路
2224:資料匯流排
2225:控制型樣
2226:擴展核心
2227:中間廻旋結果
2250:處理器電路
2251:伺服器電腦
2260:組態軟體
2261:核心分析器組件
2262:核心
2270:資料儲存器
2271:乘累加器/乘累加器電路
2273:其他電路
2275:核心
2276:中間廻旋
2277:控制型樣產生器
2278:移位器電路
2279:延遲電路/延遲
2280:輸入值
2285:輸入/輸入值
2290:廻旋結果
2295:廻旋結果
2300:電腦系統
2302:處理器
2304:主記憶體
2306:靜態記憶體
2308:匯流排
2310:圖形顯示單元
2312:文數字輸入器件
2314:游標輸入器件
2316:儲存單元
2318:信號產生器件
2320:網路介面器件
2322:電腦可讀媒體
2324:指令
2326:網路
圖1繪示根據一實施例之用於經由一核心之空間地域轉換(SLT)廻旋一輸入張量以產生輸出激勵的一系統100。
圖2係根據一實施例之由一核心廻旋二維輸入之一實例。
圖3係繪示根據一實施例之展平一輸入張量之一方法的一
流程圖。
圖4繪示根據一實施例之在一維核心之情況中展平一輸入張量之一實例。
圖5A繪示根據一實施例之在二維核心之情況中展平一輸入張量之一實例之一第一部分。
圖5B繪示根據一實施例之在二維核心之情況中展平一輸入張量之實例之一第二部分。
圖5C繪示根據一實施例之展平多個輸入通道之一輸入張量之一實例。
圖6A繪示根據一實施例之在三維核心之情況中展平一輸入張量之一實例之一第一部分。
圖6B繪示根據一實施例之在三維核心之情況中展平一輸入張量之實例之一第二部分。
圖7係繪示根據一實施例之產生一擴展核心之一方法的一流程圖。
圖8繪示根據一實施例之在一維核心之情況中產生一擴展核心之一實例。
圖9A繪示根據一實施例之產生不同二維核心之一擴展核心之實例。
圖9B繪示根據一實施例之使用行優先擴展來產生一擴展核心之一實例。
圖9C繪示根據一實施例之在多個核心濾波器之情況中產生一擴展核心之一實例。
圖10A繪示根據一實施例之在三維核心之情況中產生一擴展核心之一實例之一第一部分。
圖10B繪示根據一實施例之在三維核心之情況中產生一擴展核心之實例之一第二部分。
圖10C繪示根據一實施例之在三維核心之情況中產生一擴展核心之實例之一第三部分。
圖11係繪示根據一實施例之產生一控制型樣之一方法的一流程圖。
圖12A繪示根據一實施例之產生控制型樣之一概念基礎之一實例之一第一部分。
圖12B繪示根據一實施例之產生控制型樣之一概念基礎之實例之一第二部分。
圖13A繪示根據一實施例之產生二維核心之一控制型樣之值之一部分之一實例。
圖13B繪示根據一實施例之產生三維核心之一控制型樣之值之一部分之一實例。
圖13C繪示根據一實施例之針對不同維數之核心所產生之控制型樣之實例。
圖14係繪示根據一實施例之使用展平輸入、擴展核心及控制型樣來產生一廻旋之一輸出之一方法的一流程圖。
圖15A繪示根據一實施例之在一維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的一實例之一第一部分。
圖15B繪示根據一實施例之在一維核心之情況中使用展平
輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第二部分。
圖15C繪示根據一實施例之在一維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第三部分。
圖16A繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的一實例之一第一部分。
圖16B繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第二部分。
圖16C繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第三部分。
圖16D繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第四部分。
圖16E繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生具有多個通道之一輸出激勵的一實例。
圖16F繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生具有多個通道之一輸出激勵的實例之一第二部分。
圖17A繪示根據一實施例之在三維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的一實例之一第一部分。
圖17B繪示根據一實施例之在三維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的一實例之一第二部分。
圖18A繪示根據一實施例之用於產生擴展核心之一例示性組件之一硬體圖。
圖18B繪示根據一實施例之在例示性組件中用於產生擴展
核心之一例示性移位器電路之一硬體圖。
圖19繪示根據一實施例之用於產生控制型樣之一例示性組件之一硬體圖。
圖20繪示根據一實施例之用於執行乘加運算以產生輸出激勵的一例示性組件之一硬體圖。
圖21繪示根據一實施例之用於運算一機器學習處理器中之輸出激勵的一例示性組件佈局。
圖22A繪示根據一實施例之一實例性機器學習處理器。
圖22B繪示根據另一實施例之一實例性機器學習處理器。
圖23係繪示能夠自一電腦可讀媒體讀取指令且在一處理器(或控制器)中執行指令之一實例性運算機器之組件的一方塊圖。
圖式描繪且[實施方式]描述僅供說明這各種非限制性實施例。
本申請案主張2018年11月19日申請之美國臨時專利申請案第62/769,444號之優先權權利,該案之全部內容以引用的方式併入本文中。
圖式及以下描述係關於僅供說明之較佳實施例。熟習技術者可將本文所揭示之結構及方法之替代實施例視為可在不背離本發明之原理之情況下採用之可行替代。
現將詳細參考其實例繪示於附圖中之若干實施例。應注意,在可行之情況下,類似或相同元件符號可用於圖中且可指示類似或相
同功能性。圖式描繪僅供說明之揭示系統(或方法)之實施例。熟習技術者將易於自以下描述認識到,可在不背離本文所描述之原理之情況下採用本文所繪示之結構及方法之替代實施例。
圖1繪示根據一實施例之用於經由一核心之空間地域轉換(SLT)來廻旋一輸入張量以產生輸出激勵的一系統100。在一實施例中,系統100包含輸入張量102、核心110、輸入串流產生器122、展平輸入串流124、擴展核心產生器126、擴展核心128、控制型樣產生器134、控制型樣136、乘加單元140及輸出激勵142。然而,在其他實施例中,系統100包含不同元件,及/或系統100包含所展示之元件之一不同數目。
輸入張量102係在廻旋運算中由核心110修改以產生輸出激勵142之輸入值108之一集合。在一實施例中,輸入張量102由一矩陣表示。矩陣可具有一個、兩個、三個或更多個維,且可儲存為記憶體中之一陣列。陣列之維數可等於矩陣之維數。在另一實施例中,輸入張量102具有多個輸入通道104A至104N(統稱為(若干)輸入通道104)。各輸入通道104包含一或多個維之一矩陣,諸如所繪示之輸入通道104A中之矩陣之維1至3 106A至106C。
一核心110在一廻旋運算中應用於輸入張量102以產生輸出激勵,諸如輸出激勵142。下文將參考圖2來描述關於廻旋運算之額外細節。核心110可由一或多維矩陣表示。矩陣包含核心值114,就一神經網路而言,其表示應用於輸入張量102之輸入值108之權重。輸入張量102之維數且具體而言,各輸入通道104之矩陣之維數,應至少等於或大於核心110之維數。大小(即,橫跨各維之核心110之元素之數目)可小於或大於輸
入張量102。若核心110大於輸入張量102,則輸入張量102可經填補使得核心110之大小小於或等於經填補輸入張量102以允許發生廻旋運算。所得輸出激勵142係具有相同於(經填補)輸入張量102之大小的一矩陣。
在一實施例中,核心110包含一或多個核心「濾波器」112A至112M(統稱為(若干)核心濾波器112)。核心濾波器112之數目無需等於輸入通道104之數目。各核心濾波器112包含一組子濾波器核心,其本身係濾波器且等於輸入通道104之數目。使用各子濾波器核心來對各輸入通道104執行一廻旋運算,且加總所得輸出矩陣以產生一單一輸出激勵特徵矩陣或輸出特徵144A至144M(統稱為(若干)輸出特徵144)。此被重複用於各核心濾波器112。所產生之輸出特徵144之數目等於存在於核心110中之核心濾波器112之數目。因此,例如,若核心110包含1個核心濾波器112,則產生一單一輸出特徵144。然而,若核心110包含5個核心濾波器112,則輸出激勵142將具有5個輸出特徵144。此允許神經網路將不同核心權重應用於輸入之不同部分(即,不同輸入通道104)且將結果組合成新穎輸出(即,不同輸出特徵144),其接著可用作為神經網路之另一層中之進一步輸入。下文將參考圖16E至圖16F來描述關於多個輸入通道104及多個核心濾波器112之使用的額外細節。
輸入串流產生器122將輸入張量102變換成展平輸入串流124。為更有效率讀取輸入張量102且避免在核心110跨越輸入張量102時多次讀取輸入張量102之一相同值,輸入串流產生器122將輸入張量102變換成展平輸入串流124,其接著可依一有效率方式餽送至一緩衝器或其他記憶體中來由乘加單元140存取(如下文將描述)以顯著減少輸入值之所需讀取次數。
為執行輸入張量之變換,輸入串流產生器122可首先填補輸入張量102。輸入張量102可經填補使得其大小係核心110之大小之一模數(即,一倍數)。另外,核心110具有一「焦」點。此焦點係其中產生與核心110之廻旋之輸出值的該核心110之位置。輸入串流產生器122填補輸入張量102,使得當跨越輸入張量102時,核心110達到輸入張量102中之每個輸入值。因此,例如,若核心係一3×3核心(其中焦點係該核心之中心),則輸入張量102之二維矩陣可在被填補為核心之一模數之後進一步圍繞矩陣之外邊界使用填補值之一單一向量來填補以允許核心之焦點滑過輸入張量102之外邊緣處之輸入值。
最後,輸入串流產生器122亦可填補輸入張量102以滿足用於執行廻旋之一處理器之任何要求。歸因於匯流排之大小、並行處理器之數目、記憶體大小或其他約束,輸入串流產生器122可進一步使用填補值來填補輸入張量102,使得輸入張量102在經展平以變成展平輸入串流124之後滿足處理器之約束。在一實施例中,輸入串流產生器122使用等於核心110之大小(或各核心濾波器112之各子濾波器核心之大小)之填補值來填補輸入張量102(或輸入張量102之各輸入通道104)之各維之一側(例如後緣)。此處所描述之填補值可為任何空值、零或標準填補值。
在填補輸入張量102之後,輸入串流產生器122將經填補輸入張量102劃分或分割成若干分塊。各分塊係核心110之大小。因此,輸入張量102之經填補矩陣分成各為核心110之大小之多個個別較小矩陣。儘管輸入張量102在此處描述為被劃分,但此不意謂輸入串流產生器122必需產生各分塊之新矩陣。相反地,輸入串流產生器122可僅在輸入張量102之矩陣中限定各分塊之邊界。
就多個輸入通道104而言,輸入串流產生器122將各輸入通道104之矩陣分成多個分塊之其自身組。各輸入通道104之分塊之大小等於應用於該輸入通道104之各核心濾波器112之子濾波器核心之大小。
在劃分輸入張量102之後,輸入串流產生器122識別一展平順序。此係讀取輸入張量102中之各分塊之值的順序。順序可為任何順序,且可包含一列優先順序、行優先順序、對角線優先順序、走道優先等等。在列優先順序中,以一特定順序(例如自左至右)讀取各列中之值,且繼而亦以一特定順序(例如自上至下)讀取各列。在行優先順序中,以一特定順序(例如自左至右)讀取各行而非讀取各列,其中以各行之一特定順序(例如自上至下)讀取各列中之值。在對角線優先順序中,可沿對角線讀取分塊。若分塊包含一個以上層,則可依次處理各層。其他順序亦可行,只要隨後使用相同排序型樣來產生擴展核心128及產生控制型樣136。
輸入串流產生器122以經識別之展平順序讀取各分塊之值,且在讀取一單一向量中之各分塊之值時配置值,藉此「展平」分塊。輸入串流產生器122讀取輸入張量102之所有分塊且產生對應數目個向量。將向量放置成彼此平行以產生展平輸入串流124。輸入串流產生器122可以一特定順序(諸如一列優先順序、行優先順序等等)讀取分塊。只要在產生擴展核心128及控制型樣136時反映分塊之順序,則可使用任何順序,且可由乘加單元140產生一有效輸出。
若輸入張量102包含多個輸入通道104,則單獨處理各輸入通道104之矩陣以產生各輸入通道104之各矩陣之一展平輸入串流。多個展平輸入串流可經組合在一起以形成(經組合)展平輸入串流124。多個展平輸入串流可藉由將其等「堆疊」在一起、將其等級聯在一起或經由一些
其他組合方法來組合。
展平輸入串流124係輸入串流產生器122展平輸入張量102之結果。不管輸入張量102之維數如何,輸入張量102之各矩陣之展平輸入串流124係(至多)二維。此係因為輸入張量102之各分塊經變換成一向量(如上文所描述)且向量被放置成彼此平行。在一實施例中,若輸入張量102包含多個輸入通道104,則自各輸入通道104之各矩陣產生之展平輸入串流可藉由將各展平輸入串流佈置(在電腦可讀記憶體中)成彼此垂直或水平緊鄰來與其他輸入通道104之其他矩陣之展平輸入串流組合。經組合之展平輸入串流亦可經三維表示,其中自各輸入通道產生之各展平輸入串流彼此上下堆疊。在記憶體中,此可使用一深度優先儲存方法表來示,其中沿三維展平輸入串流之深度之值儲存為優先順序。
展平輸入串流124可饋送至一緩衝器中或儲存於記憶體中。其可由乘加單元140讀取且根據展平輸入串流124中之各向量對應之分塊數目來引用。在所繪示之實例中,展平輸入串流124之分塊在自0至K至J之範圍內。此處,分塊號碼1+K表示原始輸入張量102中之一分塊,其係一第二列(或行)分塊上之第一分塊。值K表示經填補輸入張量102之一列或行中之分塊之數目(取決於讀取分塊之順序)且取決於輸入張量102之寬度而改變。例如,若核心及因此分塊係一3×3矩陣,則具有一填補寬度9之一輸入張量將具有一K值3。在此情況中,三個分塊沿輸入張量之寬度適配,因此,第二列上之第一分塊之序數將為第四分塊(因為分塊計數自0開始)。若輸入張量102包含額外維,則向該維之各第二數列值之第一分塊指示額外標記。例如,若輸入張量102包含三個維,則一單獨標記M將指示輸入張量102之一單一層中之分塊之數目,且分塊號碼1+M將指示輸入
張量102之第二層中之第一分塊之指數值。此等標記及分塊數目可由乘加單元使用以使用控制型樣136中之指示符138來引用或指向展平輸入串流124中之正確分塊,如下文將描述。替代地,分塊數目(包含標記)可用作為時脈週期延遲值以允許乘加單元140延遲自含有展平輸入串流124之一緩衝器讀取值。此允許乘加單元140類似地引用展平輸入串流124中之特定分塊。
與將需要輸入張量中之一些值之讀取等於核心110中之值之數目之一標準廻旋相比,此存取方法及系統100之其他組件(如下文將進一步詳細描述)允許系統100僅進行輸入張量102之2^(s-1)次讀取(其中s係輸入之維數)以因此節省大量資源。下文將參考圖3至圖6B來描述關於輸入串流產生器122及展平輸入串流124之額外細節。
擴展核心產生器126產生擴展核心128,其與展平輸入串流124及控制型樣136一起由乘加單元140使用以產生輸出激勵142。擴展核心128自核心110產生。「擴展」核心之目的係使得展平輸入串流124之輸入值之一選定向量可使用一單一點積來與擴展核心128之一向量(例如一行、列、走道)相乘以替代必須使原始核心110跨越輸入張量102,如下文將展示。此明顯簡化輸出激勵142之產生。核心110之擴展依循涉及依一階層方式產生核心110之旋轉組合之一特定型樣。在以下描述中,參考一第一維、額外維及最後維。此僅為依一組織化方式引用核心之維之一方式(因為核心可具有一至多個維)且不意欲指示各維之一排列或大小。例如,若一核心係三維,則核心之一最後維未必係指核心之某一三維表示,而是僅係指核心之維數3,只要其具有3個不同維數(例如維1、維2及維3)。
在一實施例中,擴展核心產生器126採用核心110之一第一
維(或一核心濾波器112或一核心濾波器112之子濾波器核心)且產生核心之各單維向量之值之一方形區塊,其包含該單維向量之所有旋轉。藉由將各旋轉放置成平行於各單維向量來產生區塊。例如,一3×3二維核心將具有維1之三個3×1單維向量。針對此等向量之各者產生該向量之所有可能旋轉以因此產生各者之兩個額外單維向量。此等放置成平行於用於產生額外向量之單維向量以產生各單維向量之一方形區塊。此等方形區塊可被稱為循環矩陣。
其後,針對核心之各額外維,將緊接先前維或較低維區域之區塊分成若干組。各組包含沿平行於該維之軸線之一向量對準之緊接先前維之區塊。因此,轉回至3×3矩陣之實例,若將先前所產生之方形區塊放置於相同於方形區塊自其產生之源(即,單維向量)之位置中,則針對維2,一向量可通過所有所產生之區塊。因此,維2之組包含先前操作中所產生之所有區塊。在3×3核心中,此包含三個區塊,核心之各向量一個區塊。
就所產生之各組而言,擴展核心產生器126產生該組中之區塊之所有旋轉。使用先前實例,三個區塊位於維2之唯一組中。因此,此組之旋轉產生三個區塊之兩個額外組合(總計9個區塊)。將兩個額外組合放置成平行於組中之區塊,類似於上文針對單維向量所描述之方法。此處,隨著二維核心之所有維被考量,擴展核心產生器126結束擴展核心之產生,且輸出9個區塊之組合結果作為擴展核心128。
然而,若核心110包含進一步維,則重複上述程序以導致旋轉及組合不同區塊組。此最終導致所有維被考量,且輸出所有區塊與較低維之區塊之所得組合作為擴展核心128。因此,組數隨維數增加而增
加。在各額外維中,在使區塊自沿向量對準之先前維旋轉(如上文所描述)之後,將旋轉區塊之組合放置於一新區塊中。此等新區塊用於運算下一額外維且組合於各種旋轉中。此一直持續至最後維,其具有等於核心之總維數的一維數。在最後維處,執行一組最終旋轉,且輸出旋轉之所得組合作為擴展核心。因此,使所處理之各額外維之區塊之組數減少,且在處理最終維之旋轉之後,僅保留一單一組輸出區塊。
擴展核心128之向量(例如列或行)之數目進一步等於核心中之元素之數目或輸入張量102之一分塊中之元素之數目。擴展核心128本身之實際大小取決於核心110之大小。二維擴展核心128之各維具有等於核心110之各維之大小值之乘積的一大小。例如,若核心係一2×2×2矩陣,則擴展核心128將具有8個向量(2^3)且因此將具有一8×8大小,因為核心之維數之值之乘積係8。
如本文所描述,所產生之擴展核心128可在一點積中與來自展平輸入串流124之選定值一起用於產生輸出激勵142。如先前所描述,可使用控制型樣136之指示符經由一延遲或指標來選擇展平輸入串流124中之值。在選擇此等值之後,選定值可與擴展核心128之一選定向量組合以藉由使擴展核心128之各向量與來自展平輸入串流124之不同選定值相乘來產生輸出激勵142之一輸出值146。由於擴展核心128之向量之數目等於一分塊中之元素之數目(其係相同於核心110之大小,如先前所描述),所以輸出值之數目亦等於各分塊之元素之相同數目且因此包括輸出激勵142之一分塊(或多個核心濾波器之情況中之值之一輸出矩陣)。輸出激勵142之一矩陣中之分塊之位置具有對應於輸入張量102之矩陣之一相同位置分塊的一位置。
此處所描述之系統100允許運算各輸出分塊中之值,不必如一初始方法(諸如圖2中所描述之方法)般多次重新讀取輸入值。在擴展核心之一單次通過及來自展平輸入串流124之值之單次選擇中產生各輸出分塊,而非藉由在核心110滑過輸入張量102而至對應於輸出分塊中之位置的各位置時重複讀取輸入張量中之特定值。
就多個核心濾波器112而言,將針對各核心濾波器112產生一擴展核心且將其應用於輸入,類似於上述程序。就多個輸入通道104而言,各核心濾波器112具有各對應於一輸入通道104之多個子濾波器核心。在此情況中,將針對各子濾波器核心產生一擴展核心,且將自各子濾波器核心產生之各擴展核心應用於對應於輸入通道104(該子濾波器核心已在一初始廻旋實施方案中應用於輸入通道104)之展平輸入串流124之一相關部分。下文將參考圖7至圖10C來描述關於擴展核心之產生的額外細節。
控制型樣產生器134基於關於核心大小輸入132中之核心大小之資訊來產生控制型樣136。核心大小指示核心110(或各核心濾波器)之各維之大小。控制型樣產生器134取得此資訊且針對相同大小及維數之核心產生相同控制型樣136。控制型樣產生器134基於控制型樣136之各位置之座標(例如列號、行號)及核心之維數之大小來產生該位置之值。針對各位置,控制型樣產生器134執行一或多個測試不等式(等於核心之維數)。各測試不等式係控制型樣136中之該位置之列號之一模運算與行號之一模運算之間的一不等式。測試不等式之結果(即,真或假)用於引用控制型樣值之一表以產生控制型樣中之該位置之值。
儘管控制型樣產生器134在此處描述為使用一程式化方法
基於核心大小輸入132來產生控制型樣136,但在其他實施例中,控制型樣產生器134自記憶體、非揮發性儲存器、一程式指令堆疊或其他源存取控制型樣136之一預產生型式且基於核心大小輸入132來自此源選擇正確預產生控制型樣136。
控制型樣136係一矩陣,其向乘加單元140指示自展平輸入串流124之哪些部分選擇以產生與擴展核心128之向量相乘(使用點積)以產生各輸出值之選定值。在一初始廻旋實施方案中,針對輸入張量102上之一位置處之核心110之各步幅,藉由加總相鄰於表示核心之當前焦點之位置之值與焦點本身處之值(如由核心中之對應值(其等位於相同位置處)所加權)來執行廻旋運算。所得和係對應於該焦點之位置之輸出值。因此,針對各焦點位置,選擇來自輸入張量102之不同值用於加總。當將展平輸入串流124分成不同分塊時,使用來自相同於輸出分塊之位置處之一輸入分塊之值或自相鄰輸入分塊中之輸入值運算各輸出位置且特定言之,一輸出分塊中之各輸出位置。因此,針對一分塊中之各輸出位置,控制型樣136向乘加單元140指示自其提取輸入值以執行廻旋運算(即,上述點積)之不同特定輸入分塊。特定言之,控制型樣136之各向量對應於輸出分塊中之一不同位置且指示來自輸入矩陣(自其選擇輸入值用於運算輸出位置之值)之分塊。
由於逐分塊產生輸出,所以控制型樣136可僅需指示具有對應於所處理之當前輸出分塊之位置之一位置之輸入分塊及具有對應於所處理之當前輸出分塊之相鄰位置之輸入分塊。例如,在輸入張量102之二維矩陣中,分塊水平及垂直相鄰於所處理之當前輸出分塊。在三維矩陣中,此可包含相鄰層中之分塊。針對更高維矩陣,此將包含「相鄰」之進
一步分塊。因此,由控制型樣136指示之分塊位置之數目係輸入矩陣之維數大小之2之次冪。控制型樣136之大小係相同於自核心110產生之擴展核心128之大小。
控制型樣136根據展平輸入串流124中之各分塊之分塊序數來指示分塊。由於相鄰於一輸入分塊之分塊未必分塊序數相鄰,所以控制型樣136中之指示符不經由分塊序數來直接指示分塊,而是經由相對於所處理之當前分塊之分塊序數之相對位置來指示分塊。因此,例如,一相對位置可指示當前分塊、當前分塊下方(或右邊)之一列(或行)或當前分塊後面之一層。由於已知輸入張量102之一矩陣之寬度/高度及深度,所以可基於此資訊來運算相對位置。例如,為當前分塊下方之一列之一分塊將為當前分塊之分塊序數加上矩陣之寬度。因此,控制型樣136可針對此一分塊指示列寬之值或列寬之一指標或引用。為當前分塊下方之一列及當前分塊右邊之一列之一分塊將由當前分塊序數加上列寬加上1指示。因此,控制型樣136可針對此一分塊指示列寬+1或列寬+1之一指示符。在一實施例中,列寬係上述變數K。指示符之此等組合之各者可由一或多個位元指示。由於控制型樣136具有一分形型樣,所以控制型樣136之矩陣之各分部可由一單一主位元指示,其中額外分部由額外位元指示且該分部中之個別值具有一第二位元。個別值及該值所屬之分部之組合指示相對分塊位置。
就多個核心濾波器112而言,可在核心濾波器或子濾波器核心具有不同維數時選擇多個控制型樣136。針對一不同維數之各核心,將根據上述方法來選擇或產生一對應控制型樣136。對應控制型樣136將用於自展平輸入串流124之部分選擇值。下文將參考圖11至圖13來描述關
於控制型樣136之產生及其特性之額外細節。
乘加單元140使用展平輸入串流124、擴展核心128及控制型樣136來執行最終運算以產生輸出激勵142。如上文所詳細描述,乘加單元140使用來自控制型樣136之指示符來自展平輸入串流124選擇值。控制型樣136中之各向量指示來自將自其存取一輸入值之展平輸入串流124之特定分塊,如上文所描述。控制型樣136中之各位置處之識別符對應於將自其選擇輸入值之展平輸入串流124之哪個分塊(即,哪個向量)之一指示。控制型樣136之向量內之位置亦對應於含有正確輸入值之展平輸入串流124中之選定向量之位置。藉由剖析控制型樣136之整個向量,乘加單元140產生選定輸入值之一向量。
乘加單元140進一步選擇擴展核心128之一對應向量,其匹配用於自展平輸入串流124選擇值之控制型樣136之向量之位置(例如一列號或行號)。乘加單元140執行擴展核心128之選定向量與包括展平輸入串流124之選定值之向量之間的一點積以產生一單一輸出值。將單一輸出值放置於匹配當前所處理之輸入分塊之位置的一輸出分塊上。此外,輸出分塊中之單一輸出值之位置對應於用於產生該單一輸出值之控制型樣136(或擴展核心128)中之向量之位置數。
乘加單元140對控制型樣136(及擴展核心128)中之所有向量重複此處所描述之程序以因此產生等於輸出分塊內之位置之數目的輸出值之一總數。此允許乘加單元140針對來自輸入張量102之各輸入分塊產生輸出激勵142之一輸出分塊。乘加單元140對輸入張量102之所有輸入分塊進一步重複此程序以產生輸出激勵142之相同數目個輸出分塊。在產生整組輸出分塊之後,乘加單元140輸出整組輸出分塊作為輸出激勵142之
最終輸出。
就多個輸入通道104而言,乘加單元140使用指派給各輸入通道104之核心110之特定子濾波器核心或核心組件來產生該輸入通道104之「預輸出」。依相同於上述輸出之方式產生各預輸出。然而,在產生各輸入通道之所有預輸出之後,乘加單元140將預輸出之值加總成可為輸出激勵142之一單一輸出矩陣。
就多個核心濾波器112而言,乘加單元140進一步將各核心濾波器112應用於輸入張量102,且若存在多個輸入通道104,則乘加單元140將各核心濾波器112應用於所有輸入通道104(如上文所描述)且加總預輸出。此針對各核心濾波器112產生一單獨輸出特徵144。各輸出特徵144係相同於一輸入通道104之大小之一矩陣。所有輸出特徵144之集合表示輸出激勵142且可用作為神經網路之下一層中之輸入通道104(即,一層之輸出激勵142變成神經網路之下一層之輸入張量102)。下文將參考圖14至圖17B來描述關於乘加單元140之額外細節。
圖2係根據一實施例之由一核心廻旋二維輸入之一實例。儘管使用矩陣來表示本文所描述之輸入值202及輸出值214,但其等實際上可僅使用陣列、平面檔案、樹或其他方法來表示且無需配置為一矩陣,只要運算結果相同。
為對一組輸入值202執行一廻旋,可首先將填補應用於輸入值202,使得核心之「焦點」可應用於輸入值202之邊緣處之值以允許輸出值214之大小相同於輸入值之大小。然而,在其他情況中,未將填補應用於輸入值202,在該情況中,輸出值214之大小小於輸入202之大小。
與輸入值202之大小相比,輸出值214之各側在相同於輸出值214之側之核心之側上縮小等於核心之邊緣與核心之焦點之間的元素之數目的元素之一數目。輸入值202之邊緣在概念上係表示輸入值202之矩陣之外邊界周圍之位置,使得無其他值比此邊緣上之值更遠離矩陣之中心。如上文所提及,核心之「焦點」(其亦可被稱為一「原點」)係概念上位於當前輸出像素上方之核心之位置。通常,其將對應於核心中之值/元素之一者之一位置,且針對一對稱核心(諸如所繪示之實例中之3×3核心),焦點通常為中心元素。
因此,為使輸出值214之位置匹配輸入值202之位置,將填補添加至輸入值,使得當跨越輸入值中之第一位置時,核心之焦點導致焦點位於匹配輸入值202之矩陣上之邊緣值之輸入值202之位置上,隨後,所產生之輸出值214具有匹配此等邊緣值之位置之一位置。此確保輸出值214之大小係相同於輸入值202之大小。
因此,在所繪示之實例中,圍繞表示輸入值202之矩陣之邊緣添加寬度1之填補204。此處,經填補輸入值202具有為核心210之大小之一倍數的一大小,因此,無需額外填補來允許大小變成核心之大小之一倍數。
在填補之後,將核心210應用於輸入值202。藉由跨整個輸入值202跨過(即,移動)核心210來應用核心210。根據一步幅值來使核心橫跨輸入值202。步幅值係判定針對各步幅使核心移動多遠之一值。若此值係1,則使核心之焦點跨越輸入值202之每個可能位置。歸因於填補,核心210在任何時間均不超過經填補輸入值202之邊界,但核心之焦點可與輸入值202之原始值之每個1重疊。應注意,若步幅值超過1,則核心之
焦點不應用於輸入值202之每個值。
針對為核心210之焦點之每個輸入值,對概念上位於核心210下方之輸入值202執行一廻旋運算212。因此,在所繪示之實例中,核心之焦點係選定廻旋點208。此處,如由包圍選定廻旋點208之重度加權深色方框206所繪示,選擇等於核心210之大小且包圍選定廻旋點208之總計9個值。若核心210之焦點不在其中心,則此框將經相應移位使得框之位置將使其對應焦點位置為選定廻旋點208。例如,若焦點係核心210之左上角,則框將下移一個點及右移一個點,使得選定廻旋點208位於框之左上角。
廻旋運算212取得上述邊界框206下方之輸入值202之各者且執行框下方之輸入值202與核心210之值之間的一點積以產生輸出值214之一單一輸出值。如圖中所繪示,當核心210之焦點位於選定廻旋點208處時,核心210及輸入值202之此輸出係「8」。此處,歸因於填補及選定焦點位置,輸出值之位置相同於輸入值202中之選定廻旋點208之位置。
接著,使核心跨越輸入值202中之一個位置(水平或垂直)且重複廻旋運算212。當核心210之焦點已訪問所有可能輸入值202時,完成廻旋運算212。此產生具有相同於輸入值(無填補)之大小之一組完整輸出值。此一廻旋運算允許輸入值由權重(核心)修改且與輸入中之其他值組合以產生一新輸出。
此處,A可為核心,B可為核心,且c係廻旋結果。
此廻旋運算允許一神經網路處理複雜資料且基於該資料來
產生一所要輸出。然而,如此處所展示,此引起在核心210跨越輸入值202時多次讀取相同輸入值,諸如實例性重複讀取值218。在輸入值之一單一廻旋期間,在所繪示之實例中將9次讀取實例性重複讀取值218,因為9個核心位置將與此值重疊。若將額外核心應用於輸入值202(如所描述),則將對該相同值218進行甚至更多重複讀取。因此,儘管廻旋運算212係機器學習中之一有力工具,但在此處所展示之一初始方法中,其可能產生非常多讀取(即,非常多I/O操作),隨著輸入值202增長且隨著廻旋之次數增加,其會變成一問題。因此,如本文所揭示,提供可顯著減少輸入之值之重複讀取之次數的一更最佳化方法。如上文所提及,可將讀取之次數減少至2^(s-1)次讀取,其中s係輸入之維數。因此,在此處之實例中,輸入值202之二維矩陣僅需2次讀取,而非如上文針對實例性值218所描述般對各值讀取9次。
圖3係繪示根據一實施例之展平一輸入張量之一方法的一流程圖300。儘管所繪示之流程圖可展示一操作順序,但所繪示之操作可依任何順序執行且可具有更多或更少操作。在一實施例中,圖3中所繪示之操作可由輸入串流產生器122執行。
輸入串流產生器122接收310由一核心廻旋之一輸入張量。此輸入張量可為輸入張量102。核心可為核心110。在一實施例中,輸入串流產生器122使用填補值來填補輸入張量,使得使用核心之輸入張量之廻旋之一輸出具有相同於輸入張量之一大小。在一實施例中,具有填補值之輸入張量具有針對各經填補輸入張量維數(其係核心之對應維數之一整數倍)之一大小。在又一實施例中,輸入串流產生器122使用具有等於對應
維中之核心之大小之一寬度之填補值來填補輸入張量之各維之一後緣。各維之後緣係具有一最大指數值之輸入張量之一邊緣(即,一面或另一端)。填補值可為零或空值或某一其他值。
輸入串流產生器122將輸入張量分成320一或多個分塊,其中各分塊具有等於核心之一大小。因此,若核心係一3×3核心,則一9×9輸入張量(包含填補)將被分成9個(二維或2D)分塊。類似地,鑑於一3×3×3核心,一9×9×9輸入張量將被分成27個(三維或3D)分塊。在一實施例中,核心不具有方形尺寸,且在此情況中,輸入串流產生器122依與核心橫跨輸入張量之一方向對準之一順序劃分輸入張量。因此,若在一列優先方法(自左至右)跨越核心,則沿各列、在進入下一列之前等等劃分輸入張量。替代地,在另一實施例中,輸入串流產生器122依與核心橫跨輸入張量之一方向正交之一順序劃分輸入張量。因此,在上述實例中,首先沿各行(自上至下,接著至下一行)劃分輸入張量。
輸入串流產生器122將一或多個分塊中之值展平330成向量以產生展平輸入串流。針對輸入張量之一或多個分塊之各者,此可包括:依一界定順序存取分塊之值;根據界定順序將值配置於一向量中;及將對應於一或多個分塊之各者之一或多個向量配置成一平行配置以產生展平輸入串流。此界定順序可為一列優先順序、一行優先順序或一走道優先順序。走道優先順序首先沿對應於三維(3D)分塊之深度之一軸線且隨後沿對應於3D分塊之寬度及高度之軸線存取3D分塊中之元素。儘管展平輸入在此處展示為二維,但在其他實施例中,其包含更多維。
展平輸入串流可儲存於一緩衝器中。緩衝器可由一硬體加速處理器讀取以執行與1)由一控制型樣選擇之展平輸入串流中之值及2)核
心之一擴展的一乘加運算以產生廻旋運算之一輸出,無需將輸入張量之值多次載入至緩衝器中,如本文所描述。
另外,輸入張量具有複數個通道,其中核心具有複數個濾波器,且其中輸入通道與各核心濾波器廻旋以產生具有複數個輸出通道之一輸出。
下文將相對於不維數之核心之圖4、圖5A至圖5C及圖6A至圖6B來提供展平輸入串流之額外實例。
圖4繪示根據一實施例之在一維核心之情況中展平一輸入張量之一實例400。在一實施例中,此處所描述之程序可由輸入串流產生器122執行。
在401處,輸入串流產生器122接收輸入420。在所繪示之實例中,輸入420係表示為一矩陣之一6×3組輸入值。在402處,輸入串流產生器122基於核心大小來填補輸入420。輸入串流產生器122填補輸入420,使得核心422之焦點(其係中心值b)可對應於輸入420之相同位置以產生相同大小輸出,如先前所描述。此引起輸入串流產生器122添加填補426A。輸入串流產生器122亦填補輸入420,使得其係核心大小之一倍數(模數)。此在填補426B中添加兩行填補。最後,在一實施例中,歸因於硬體要求,輸入串流產生器122使用等於核心之寬度之填補來填補輸入420之後緣。此處,核心422係3寬,且因此將一3寬填補添加至輸入420之端以導致填補426C處之三行額外填補。
在403處,輸入串流產生器122將現經填補輸入424分成具有等於核心422之大小之分塊以產生平鋪輸入428。由於核心係一3×1大小矩陣,所以將經填補輸入424分成各具有大小3×1之分塊。此導致12個分
塊。此處,以列優先形式劃分及排序分塊,使得經填補輸入424被逐列劃分。然而,分塊亦可被逐行劃分,在該情況中,分塊1將為[0,0,0],分塊2將為[1,7,13],等等。只要後續操作亦依循相同定向,則所得輸出將相同。
在404處,輸入串流產生器122將平鋪輸入428轉換成一展平輸入430。此處,輸入之方向432指示將展平輸入430輸入至下一步驟(乘加單元140)中之方向。因此,首先放置分塊1,接著分塊2,直至分塊12。各分塊轉換成一單一向量且放置成平行於自其他分塊轉換之其他向量。由於分塊在此處已為向量,所以無額外轉換發生。然而,如後續實例中所展示,分塊可不總是為向量,且在此一情況中,其經展平以變成向量。
此展平輸入430可儲存為一陣列、樹或其他結構,且可儲存於一緩衝器、記憶體或其他儲存媒體中。可使用一參考指標、記憶體位址或根據一時脈週期延遲來存取分塊中之各值。就時脈週期延遲而言,可每次在一個向量中讀取展平輸入430,且可使不同讀取延遲特定數目個時脈週期以存取展平輸入430中之不同向量。例如,可藉由使存取延遲7個時脈週期來存取分塊7。
圖5A繪示根據一實施例之在二維核心之情況中展平一輸入張量之一實例500之一第一部分。與圖4中之實例相比,圖5A至圖5B中使用二維核心以導致二維分塊。在一實施例中,程序可由輸入串流產生器122執行。
在501處,輸入串流產生器122接收輸入且基於核心大小來填補輸入以產生經填補輸入520。如先前所提及,填補滿足三個要求:1)
允許輸出值係相同於輸入值之大小,可基於核心之焦點來添加填補;2)輸入可經進一步填補使得其係核心大小之一模數;及3)在特定實施例中,歸因於硬體要求,將填補之一額外核心寬度添加至輸入之後緣。
因此,在所繪示之實例中,將填補之一向量寬度添加至輸入之外側,且將填補之一額外核心寬度添加至輸入之右側及底側(後緣)。由於核心522係一3×3核心,所以額外填補係右邊3單位寬且底部3單位高。
在502處,輸入串流產生器122將經填補輸入520分成等於核心之大小之分塊。由於核心係3×3,所以各分塊之大小係3×3。此產生平鋪輸入524。使用變數K來指示平鋪輸入524之列大小,變數K隨後用於自所處理之分塊指向一第二列中之分塊。因此,平鋪輸入524之第二列上之第一分塊係分塊1+K,而此右邊之分塊係分塊1+K+1。應注意,若第一分塊自「0」指標,則K將被設定為[列分塊大小]+1而非列分塊大小。
圖5B中進一步描述程序,圖5B繪示根據一實施例之在二維核心之情況中展平一輸入張量之實例之一第二部分。
在503處,輸入串流產生器122根據一特定分塊順序將影像中之分塊展平成向量。此處,展平順序係列優先,如由單一分塊530實例之展平順序532所指示。換言之,針對各分塊,該分塊中之值被逐列讀取(如由方向箭頭所展示)且被放置於展平輸入528中之該分塊之一向量中。如同展平輸入430之向量,此向量被放置成平行於針對其他分塊所產生之向量(根據相同展平順序)且根據輸入之方向534用作為至乘加單元140中之輸入。儘管向量展示為垂直的,但在其他實施例中,定向可不同。
相反地,在另一實施例中,展平順序538係行優先,其意
謂各分塊中之值被逐行讀取且接著被放置於一單一向量中且放置成平行於自經填補輸入之其他分塊產生之其他向量。因此,與其中分塊1之向量排序成[0,0,0,0,1,2,0,11,12]之展平輸入528相比,此處分塊1之向量代以排序成[0,0,0,0,1,11,0,2,12],因為分塊1中之值被逐行而非逐列讀取。準確展平順序538不影響輸出,只要在產生輸出值時其他程序之順序對應於相同排序。
圖5C繪示根據一實施例之展平多個輸入通道之一輸入張量之一實例。在一實施例中,輸入張量102可具有多個輸入通道104A至104N,如圖1中所描述。多個輸入通道與核心廻旋。將與核心之此等廻旋之輸出加總在一起以產生輸出激勵。若核心中存在多個核心濾波器,則各核心濾波器與多個輸入通道廻旋以產生一輸出特徵。各輸入通道可對應於輸入之一不同分量,諸如一色彩通道等等。在一實施例中,程序可由輸入串流產生器122執行。
在504處,輸入串流產生器122使用第一展平輸入來平鋪任何額外輸入通道。為清楚起見,核心542經展示為一2×2核心。因此,各分塊係2×2,且各向量係一1×4向量。此處,各輸入通道540A-N(統稱為輸入通道540)類似於來自501之輸入,因此,輸入串流產生器122填補各輸入通道540且將其展平以產生展平輸入通道544A至544N。在一實施例中,此等接著彼此上下「堆疊」以產生展平輸入串流546。然而,在其他實施例中,展平輸入通道544A至544N可經不同組合,諸如經由級聯、放置成一3D陣列等等。在此等兩種情況之任一者中,展平輸入串流546係各種展平輸入通道544之一組合,且各展平輸入通道544之對應分塊可在展平輸入串流546中被一起引用。因此,例如,引用具有展平輸入串流546
之分塊5(藉由延遲時脈週期或其他方式)將能夠引用包括展平輸入串流546之所有展平輸入通道544中之分塊5。
圖6A繪示根據一實施例600之在三維核心之情況中展平一輸入張量之一實例之一第一部分。如同圖4至圖5C,在一實施例中,此處所描述之程序可由輸入串流產生器122執行。
在601處,輸入串流產生器122接收三維輸入且填補輸入以產生經填補輸入626,類似於上文參考圖4至圖5C所描述之方法。為清楚起見,此處僅展示填補628之一單一寬度。另外且為清楚起見,此處未展示實際輸入值630,因為其在透視圖中將重疊。相反地,將填補628值展示為具有一暗灰色圖案之立方體,且將輸入值630展示為白色立方體。此同樣適用於核心632及核心值634。應注意,經填補輸入626具有三個維106:維1 106A、維2 106B及維3 106C。在一些情況中,維1可指稱寬度,維2指稱高度,且維3指稱深度。另外,維1可指稱具有行,維2可指稱具有列,且維3可指稱具有走道或層。
在602處,輸入串流產生器122將經填補輸入626平鋪成具有等於核心632之一大小之分塊以產生分塊輸入626。由於例示性核心632具有大小2×2×2且可由三維矩陣表示,所以分塊亦具有大小2×2×2。除指示平鋪輸入之一列中之分塊之數目的K變數636之外,三維輸入亦包含指示平鋪輸入之一層中之分塊之數目的一M變數638。當運算具有對應於一當前分塊之一位置之輸出值時,輸入之需求可來自為當前分塊後面之一層之一分塊及當前分塊下方之分塊(如同2D輸入之情況)。因此,除可用於指示當前分塊下方之分塊之位置的K參數之外,M參數可用於指示當前分塊後面之分塊。儘管參考諸如下方及後面之方向,但輸入分塊實際上可不如
此處所展示般幾何配置,而是可以一資料結構抽象指示。然而,相同K及M參數將適用。由於經填補輸入626具有一寬度6及一高度6,所以各層分塊包含9個分塊,因為核心之2×2層將9次均勻分成經填補輸入626之6×6層。因此,在所繪示之實例中,M參數係9,且K參數係3。
程序在圖6B中繼續,圖6B繪示根據一實施例之在三維核心之情況中展平一輸入張量之實例之一第二部分。此處,在603處,輸入串流產生器122根據實例性展平順序640將各分塊展平成一向量且將向量放置成彼此平行,類似於上文參考圖4及圖5B所描述之程序。由於單一分塊現具有大小2×2×2,所以其包含8個值。一順序經建立使得此等8個值根據此順序讀取且佈置成一單一向量。此處,實例性展平順序640首先逐列(列優先)且接著藉由各層/走道(走道優先)讀取單一分塊。此順序由展示單一分塊之一分解圖之實例性展平順序640中之粗斜體數字指示。因此,首先讀取由「 1 」指示之分塊位置處之值,接著讀取由「 2 」指示之分塊位置處之值,等等,且終止於由「 8 」指示之分塊位置處之值。取決於分塊之大小,可建立不同排序。如同先前排序,只要排序在整個程序中一致,則不管使用何種排序,輸出值將相同。
藉由輸入串流產生器122之此展平之結果係展平輸入642。在展平輸入之各向量中,實例性展平順序640由順序644指示。因此,針對各向量,由順序644指示之「 1 」位置具有來自對應分塊(其位於該分塊之實例性展平順序640之「 1 」位置中)之位置之值。此處,如同圖6A,暗灰色區域指示填補值,且白色區域指示輸入值。例如,圖6A中之分塊3包含4個輸入值及4個填補值。在依循實例性展平順序640之後,此被轉換成展平輸入642處之分塊號碼3處所指示之向量,其中輸入值與填補值交
替。如同圖4及圖5B中之展平輸入,此展平輸入發送至乘加單元140用於進一步處理以產生輸出值。
圖7係繪示根據一實施例之產生一擴展核心之一方法的一流程圖700。儘管所繪示之流程圖可展示一操作順序,但所繪示之操作可依任何順序執行且可具有更多或更少操作。在一實施例中,圖7中所繪示之操作可由擴展核心產生器126執行。
擴展核心產生器126接收710用於廻旋一輸入張量之一核心。此核心可為核心110。針對核心之一第一(最小)維,擴展核心產生器126產生720核心之各單維向量之值之一方形區塊(一循環矩陣),其包含該單維向量之所有旋轉。各單維向量在此處係一唯一向量,其係核心之一列、核心之一行、核心之一對角線或核心之一走道。一核心之走道係沿對應於核心之一深度(在此情況中,第三維)之一軸線對準之核心之一向量。
若核心110具有多個核心濾波器112,則根據本文所繪示之流程圖來單獨處理各核心濾波器。若各核心濾波器包含一子濾波器核心,則亦根據流程圖來單獨處理該子濾波器核心。儘管維在此處指稱「第一」或「最小」,但不意欲指示核心之維具有一特定順序或大小關係。相反地,核心之任何維可經選擇為第一維。例如,在圖6A之三維核心中,沿X軸620之維(X維)、沿Y軸622之維(Y維)或沿Z軸624之維(Z維)可經選擇為第一維。
類似地,與一單通道或多通道輸入張量廻旋之一核心產生一單一輸出通道。若核心包含多個濾波器,則將各濾波器應用於輸入張量以產生一單獨輸出激勵。
在處理第一維之後,在730,針對核心之各額外維,擴展核心產生器126將緊接先前維之區塊分組740成若干組區塊,各組區塊包含沿平行於(額外)維之軸線之一向量對準之緊接先前維之區塊。平行於維之軸線之向量係平行於當前所處理之維之軸線的一向量。因此,使用上述實例,若X維係第一維,則待處理之下一維可為Y維(但其亦可為Z維)。可沿Y維繪製平行於Y軸且亦與來自先前維之區塊對準之一或多個向量。此係因為在先前維(X維)中產生四個區塊,且此等之各者(若概念上「定位」於其中產生該等區塊之相同位置處)形成兩「行」區塊。此等「行」之各者對準於或通過平行於Y軸之一向量。將經對準區塊分組在一起。
針對額外維,擴展核心產生器126進一步產生750值之一或多個區塊,各區塊包含緊接先前維之若干組區塊之各者內之區塊之所有旋轉。因此,在上述實例中,各行區塊使該行內之區塊旋轉以產生值之一新方形區塊。此導致Y維之值之兩個方形區塊。為使一向量或一組區塊旋轉,擴展核心產生器126使列中之值旋轉(例如使值桶形移位)或使組中之區塊旋轉以針對各旋轉產生區塊之一新向量或排序。一旦產生所有可能旋轉,則將區塊之向量或排序之產生組合「堆疊」在一起以產生包含區塊之下伏向量或下伏組之所有旋轉之一輸出區塊。
繼續實例,當處理下一維(Z維)時,向量平行於Z軸。在此情況中,自兩個區塊之先前兩「行」之旋轉各產生兩個區塊。因此,此等兩個區塊在其等依與向量對準之一方式「定位」時旋轉。不存在不通過此向量之其他區塊,因此,其係所需之唯一區塊。然而,若核心具有更多維(即,3個以上維),則可存在不與此向量對準之額外區塊,且因此需要額外向量來將額外區塊分組。
當處理所有維時,擴展核心產生器126輸出760對應於核心之額外維中之最後維的值之區塊作為擴展核心。使用先前實例,在使來自Y維之兩個區塊旋轉之後,保留一單一區塊。此區塊經輸出為擴展核心。
因此,如同實例,三維核心具有包括一組第一向量之一擴展核心,各第一向量具有一第一區塊群組中之第一區塊之一旋轉置換。第一區塊群組之各第一區塊對應於一組第二向量之一第二向量,且各第二向量對應於一第二區塊群組之一第二區塊。第二區塊群組之各第二區塊對應於核心中之一向量(一核心向量),且各第二區塊具有表示該第二區塊之對應核心向量之所有旋轉置換的一組第三向量,其中各第三向量表示對應核心向量之一旋轉置換。此處,各組第二向量包含對應第二區塊群組中之第二區塊之所有旋轉置換。另外,第一向量組包含第一區塊群組之第一區塊之所有旋轉置換。
在一實施例中,核心不是如同實例般為三維核心,而是為一維(1D)矩陣,且擴展核心包括複數個平行向量,複數個平行向量之各向量係核心之一不同旋轉置換。此處,擴展核心係具有等於核心之大小之各維之一大小的一方形矩陣。
在另一實施例中,核心係二維(2D)矩陣,因此,擴展核心包括一組第一向量,其中各第一向量具有一區塊群組中之區塊之一旋轉置換。區塊群組之各區塊對應於核心中之一向量(一核心向量),且各區塊具有表示對應核心向量之所有旋轉置換的一組第二向量。各第二向量表示對應核心向量之一旋轉置換,且第一向量組包含區塊群組之區塊之所有旋轉置換。
擴展核心在被產生之後為二維方形矩陣,其具有等於用於
產生擴展核心之對應核心之維之大小之乘積的一長度。下文將參考圖8、圖9A至圖9C及圖10A至圖10C來描述用於產生一維、二維及三維核心之擴展核心之額外實例。
圖8繪示根據一實施例之在一維核心之情況中產生一擴展核心之一實例800。在一實施例中,此處所描述之程序可由擴展核心產生器126執行。
在801處,擴展核心產生器126接收核心820。在所繪示之實例中,核心820具有一大小3×1(小寫字母表示核心值)。因此,其係一維核心。依循上文圖7中所描述之程序,在802處,擴展核心產生器126使核心820之各單維向量旋轉。由於核心820僅具有一單一向量(即,[a,b,c]),所以僅此向量可用於旋轉。使此向量旋轉產生總計三個組合:原始核心820中所展示之組合[a,b,c]及旋轉822之組合([c,a,b])及旋轉824之組合([b,c,a])。其中產生旋轉之方法由802中所展示之箭頭指示。將此等組合分組在一起以形成一循環矩陣。在803處,由於核心820無更多額外維要處理,所以擴展核心產生器126輸出旋轉期間所產生之群組向量作為擴展核心826。
由於擴展核心包含核心之各種旋轉,所以擴展核心之不同列可在一點積中與由控制型樣(例如控制型樣136)選擇之展平輸入串流之分塊一起使用。不是使原始核心多次跨越輸入中之一單一值,核心此處經擴展使得其可上述2^(s-1)次應用於展平輸入串流,不必使讀取輸入之次數等於核心中之元素之數目。由於擴展核心之大小比一可能輸入張量102小很多,所以此處所描述之程序中之核心擴展遠比輸入張量之值之多次讀取更有效率。
圖9A繪示根據一實施例900之產生不同二維核心之一擴展核心之實例。如同圖8,在一實施例中,此處所描述之程序可由擴展核心產生器126執行。
在901處,擴展核心產生器126接收核心。二維核心920A至920C之三個實例在此處展示為具有不同大小。核心920A具有大小3×2,核心920B具有大小2×3,且核心920C具有大小3×3。在902A處,使用一列優先順序使核心920之單維向量在核心旋轉922A至922C中旋轉,即,單維向量對應於所旋轉之核心之列。如圖中所展示,取決於核心之大小,單維向量之數目不同。例如,具有三列之核心920B在核心旋轉922B中具有三組旋轉,而核心920A僅具有兩組旋轉。
在903A中,使額外維(即,第二維)旋轉。此處,如圖7中所提及,選擇與第二維之軸線對準之向量且使通過各向量之區塊一起旋轉。在核心920A之實例中,在核心旋轉922A中產生兩個區塊926A至926B,且使此等沿第二維軸線與一單一向量對準。自組合列[a,b,c]之旋轉產生區塊926A且自組合列[d,e,f]之旋轉產生區塊926B。此等兩個區塊在核心旋轉924A中旋轉以產生擴展核心932A。由於核心中無更多維,所以不存在進一步旋轉。
對核心920B執行一類似程序。然而,此次存在三個區塊928A至928C。因此,在核心旋轉924B中,三個區塊928A至928C旋轉且經組合以產生擴展核心932B。就核心920C而言,亦在核心旋轉922C中產生三個區塊930A至930C(因為核心920C具有三列)。此等區塊930A至930C在核心旋轉924C中沿第二維旋轉以產生擴展核心932C。各擴展核心具有沿兩個維之相等大小(例如一方形矩陣),且沿各維之大小等於核心之
各維之大小之乘積。例如,核心920B具有大小3×2,因此,其擴展核心932B之各維之大小係3*2=6。
圖9B繪示根據一實施例之使用行優先擴展來產生一擴展核心之一實例。不是如同圖9A般使用列優先順序,此處所繪示之實例使用行優先順序。
在902B處,擴展核心產生器126採用核心920C且在核心旋轉934使各單維向量旋轉。然而,代以選擇單維向量作為核心920C之行。因此,不是一向量具有值[a,b,c],而是此處所展示之第一向量具有對應於圖中所標示之行1之值[a,d,g]。剩餘兩個向量對應於所標示之行2及3。
在903A處,在類似於圖9A所展示之核心旋轉924之核心旋轉936中旋轉形成為區塊938A至938C之來自902B之經旋轉向量。此產生不同於擴展核心932C(儘管使用相同核心)之擴展核心940。然而,若亦鑑於此行優先順序來產生控制型樣,則在應用廻旋之後,輸出值不會不同。
圖9C繪示根據一實施例之在多個核心濾波器之情況中產生一擴展核心之一實例。若核心具有多個核心「濾波器」,則依相同於先前針對單一核心所描述之方式擴展各核心濾波器。若各濾波器具有進一步子濾波器核心,則亦依相同方式擴展此等子濾波器核心。因此,將核心濾波器942A至942N擴展成所繪示之擴展核心濾波器944A至944N。
圖10A繪示根據一實施例之在三維核心之情況中產生一擴展核心之一實例1000之一第一部分。如同圖8及圖9A至圖9C,在一實施例中,此處所描述之程序可由擴展核心產生器126執行。
在1001處,擴展核心產生器126接收核心1026。在所展示之一分解圖中,可看到核心1026具有層1028A及1028B。各層具有不同核
心值「a」至「h」以導致2×2×2核心1026之8個值。
在1002處,擴展核心產生器126使核心1026之所有單維向量旋轉(在此實例中使用列優先順序)。核心1026中存在對應於核心1026中之四列之四個此等向量(各層上兩個)。因此,四組旋轉由核心旋轉1030所產生。
在1003A處,擴展核心產生器126藉由將核心旋轉1030中所產生之區塊分組來旋轉第二維(即,下一維)。此處,將來自核心旋轉1030之該等區塊(其等沿平行於所處理之當前維(即,第二維)之軸線之一向量對準)分組在一起。此處,形成組1034A之區塊沿平行於第二維軸線(即,Y軸1022)之一向量(即,向量1032A)對準。形成組1034B之區塊(其由與組1032A中之區塊分離之一層上之值形成)亦沿平行於第二維軸線之一向量(即,向量1032B)對準。
儘管此處繪製兩個向量,但其等被呈現用於說明如何將區塊分組背後之概念原因。實際上不繪製向量且擴展核心產生器126藉由判定自其產生區塊之維數之指數來將此等區塊分組。例如,組1034A之區塊自層1028A(其可具有一指數「0」)產生且組1034B之區塊自層1028B產生。因此,擴展核心產生器126知道使自此等不同層產生之區塊單獨旋轉。此程序針對後續維反覆,其中當前維之指數值用於將先前維中所產生之區塊分組。
程序在圖10B中繼續,圖10B繪示根據一實施例之在三維核心之情況中產生一擴展核心之實例之一第二部分。
此處,在1003B處,擴展核心產生器126自已分組成組1034A至1034B之前代產生區塊之旋轉。各組之區塊單獨旋轉。如圖中所
展示,此產生兩個區塊:自組1034A之兩個區塊之旋轉產生之區塊及來自組1034B之兩個區塊之區塊。
在1004A處,擴展核心產生器126重複步驟1003A,但針對下一維(即,第三維),其亦係三維核心1026之最後維。此處,擴展核心產生器126沿與維之軸線對準之一向量分組區塊。如圖中所繪示,此向量係向量1040,且軸線係Z軸1024。1003B中所產生之各區塊自核心之不同層上之區塊產生,因此,1003B中所產生之區塊在概念上亦位於不同層上。向量1040與所產生之兩個區塊對準(即,可通過兩個區塊),因此,將此等區塊分組成組1038A。由於無其他區塊用於分組,所以此係對於第三維之唯一組。
程序在圖10C中繼續,圖10C繪示根據一實施例之在三維核心之情況中產生一擴展核心之實例之一第三部分。此處,在1004B處,擴展核心產生器126產生處理先前維時所產生之區塊組中之區塊之所有旋轉。在所繪示之實例中,僅存在一組1038A,且因此旋轉此組中之區塊以產生最終擴展核心1044,因為此係核心1026之維之最後維。
圖11係繪示根據一實施例之產生一控制型樣之一方法的一流程圖1100。儘管所繪示之流程圖可展示一操作順序,但所繪示之操作可依任何順序執行,且可具有更多或更少操作。在一實施例中,圖11中所繪示之操作可由控制型樣產生器134執行。
控制型樣產生器134接收1110與一輸入張量廻旋以產生一輸出激勵的一核心之維之各者之一或多個大小。此核心可為圖1中之核心110。核心可為一維、二維、三維或超過三維。核心之各維具有一大小,
且此由控制型樣產生器134接收。
在1120處,針對控制型樣之各位置,控制型樣產生器134產生1130該位置之一值,其係基於控制型樣中之位置之一定位及核心之維之各者之一或多個大小。
一旦產生所有位置中之值,則控制型樣產生器134輸出1140完整控制型樣方形矩陣。控制型樣之各維係等於核心之寬度與高度之乘積的一大小。另外,控制型樣之各位置之值指示自其存取來自用於與核心廻旋之一展平輸入張量之值的一位置。
在一實施例中,控制型樣之各位置具有一列號及一行號,且各值之產生包括:針對核心之各維,基於列號、行號及核心之維之各者之一或多個大小來判定一測試之一結果。各測試產生指示自其存取來自展平輸入串流(如上文所描述,其藉由展平輸入張量之核心大小分塊來自輸入張量產生)之值之相對偏移量的二進位輸出。控制型樣之該位置之值經產生為核心之各維之測試之二進位輸出之一組合。各測試可為一不等式測試,其比較使用位置之列號之一第一模數運算與使用位置之行號之一第二模數運算。第一模數運算係列號與一核心之維之各者之一或多個大小之間的一模。第二模數運算係行號與一核心之維之各者之一或多個大小之間的一模。就二維核心而言,第一測試係r mod h<c mod w,且第二測試係floor((r mod(h * w))/h)<floor((c mod(h * w))/w),其中r係列號,c係行號,h係核心之高度,且w係核心之寬度。
在一實施例中,控制型樣包含複數個向量,其中複數個向量之向量之數目對應於輸出激勵的一核心大小分塊中之輸出值位置之一數目。複數個向量之各向量內之值對應於延遲值,其中各延遲值指示存取一
展平輸入串流中之一個別輸入值之延遲量。如上文所描述,展平輸入串流包含自一輸入張量產生之一組平行向量,且延遲量指定展平輸入串流內之平行向量之一者。
在一實施例中,延遲值用於藉由針對對應於待產生之輸出值之輸出值位置選擇對應於該輸出值位置之控制型樣中之一向量來產生輸出激勵的一核心大小分塊之各輸出值位置之一輸出值。存取控制型樣之選定向量中之延遲值,其中各延遲值指示自其存取用於產生輸出值之各輸入值之展平輸入串流內之一平行向量。在所存取之輸入值與一擴展核心之一向量之間執行一點積以產生輸出激勵的核心大小分塊中之輸出值位置處之輸出值。在一實施例中,藉由將核心修改成包含一組階層區塊來產生擴展核心,其中階層區塊組中之各區塊包含區塊之所有旋轉置換(其係該區塊之節點)。階層區塊組之葉係包含核心之個別向量之所有旋轉置換的區塊,且階層區塊組中之各區塊具有節點,其係與平行於由核心內之該區塊表示之維之一軸線之一向量對準之區塊。
在一實施例中,控制型樣係二維方形矩陣,其具有等於用於廻旋一輸入張量之一對應核心之維之大小之乘積的一長度。
在一實施例中,配置控制型樣中之延遲值之一順序係基於存取輸入張量之核心大小分塊以產生一展平輸入串流之一界定順序。
在一實施例中,界定順序係一列優先順序、行優先順序或走道優先順序。走道優先順序首先沿對應於三維(3D)核心大小分塊之深度之一軸線且隨後沿3D分塊之寬度及高度之軸線存取輸入張量之3D分塊中之元素。
儘管上述流程圖繪示自核心之維之大小產生控制型樣之一
方法,但在另一實施例中,各種核心大小之各種控制型樣儲存於記憶體中且根據所使用之核心大小來擷取。下文將參考圖12至圖13來描述關於控制型樣之產生的額外細節。
圖12A繪示根據一實施例之產生控制型樣之一概念基礎之一實例1200之一第一部分。
如先前所提及,控制型樣之用途係自展平輸入串流中之正確分塊選擇值用於與擴展核心組合以產生輸出值。當核心在廻旋之一初始實施方案中跨越輸入值時,來自輸入之不同值被讀取且與核心中之權重組合以產生輸出。控制型樣允許此藉由選擇不同輸入值自其定位之不同分塊來模擬以產生正確輸出值。然而,與初始實施方案相比,輸入值不被多次讀取,而是僅進行最少次數讀取。為判定指示自其選擇哪個分塊之控制型樣中之型樣,可使用以下方法。然而,儘管以下方法可用於產生控制型樣,但實際上硬體將可能使用一單獨方法(諸如上文參考圖11所描述之方法),因為在此所描述之方法可能缺乏效率。因此,在此所描述之方法可更多用於提供控制型樣之一概念理解。
在1201處,展平一輸入,類似於上文參考圖4至圖6所描述之方法。輸入張量在此處具有大小4×4,且由於核心1220具有大小2×2,因此各分塊之大小係2×2,且總共存在4個分塊(此處未應用填補)。因此,展平輸入1218具有各表示一分塊之4個向量。亦擴展核心以產生擴展核心1224,類似於上文參考圖7至圖10所描述之程序。
在1202處,展平輸入1218中之第一分塊(分塊1(1222A))與擴展核心相乘以產生一逐元素乘積1226A。因此,分塊1 1222A中之「1」與對應列中之擴展核心1224中之4個核心值「a」、「b」、「c」及
「d」之各者相乘以產生4個乘積「a1」、「b1」、「c1」及「d1」。此對分塊之剩餘值及其他分塊2至4(1222B至1222D)重複。此產生所展示之逐元素乘積1226A至1226D。
程序在圖12B中繼續,圖12B繪示根據一實施例之產生控制型樣之一概念基礎之實例之一第二部分。既然已產生逐元素乘積1226A至1226D,因此在1203處,針對在一單一分塊上與原始輸入重疊之核心之各位置來判定產生逐元素廻旋乘積所需之分塊值(在所繪示之實例中,使用核心之逐列步幅)。因此,在位置1(1230A)(其中核心之位置位於輸入之最左上角位置中,如由核心位置邊界框1232所指示)處,覆蓋於輸入上之核心值「a」、「b」、「c」及「d」與核心值覆蓋之輸入之下伏值相乘。因此,「a」與輸入中之「1」相乘、「b」與「2」相乘、「c」與「3」相乘及「d」與「4」相乘以產生所繪示之位置1之逐元素乘積對(1234A)。在所繪示之實例中,此等乘積對經展示為行,但亦可經轉置以展示為列,其取決於分別使用列優先或行優先格式來產生展平輸入串流或擴展核心。
基於逐元素乘積對1234A,判定可自逐元素乘積1226A至1226D之何者定位此等逐元素對。在位置1(1230A)之第一實例中,所有此等對可位於逐元素乘積1226A中且被給予標示「A」。因此,分析位置1之後的控制型樣在1236A處展示為一行全「A」。此處,A可表示所處理之當前分塊,其可一般化為分塊X。
就位置2(1230B)而言,核心位置1232右移1,儘管其仍與輸入中之第一分塊重疊。逐元素乘積對1234B係「a2」、「b5」、「c4」及「d7」。由於核心中之「d」現在輸入中之值「7」上,所以此「d7」乘積對無法發現於逐元素乘積1226A中,而是發現於逐元素乘積1226B中,如
由一「B」所指示。因此,1236B中所指示之控制型樣之下一行在對應於逐元素乘積對1234B中之「d7」之位置的最後值處具有一「B」。另外,此處之B對應於當前分塊X加1或分塊X+1。
就位置3 1230C而言,核心位置1232下移1及左移1。核心未進一步右移,因為若發生此情況,則其將不再與第一分塊重疊。此將為非必要的,因為控制型樣經產生以僅自用於產生一單一分塊(對應於輸入中之相同分塊位置,即,當前分塊)之輸出值之展平輸入串流判定該等值。單獨運算額外分塊。因此,當系統逐分塊運算輸出值時,此處所描述之程序僅涉及其中核心重疊於所討論之單一分塊上之核心之位置。另外,由於在所繪示之實例中核心1220之焦點係核心1220之左上角位置(由「a」指示),所以所關注之當前分塊上之核心之位置1232係其中核心之焦點覆蓋於當前分塊之輸入值之各者上之位置。因此,位置3係其中核心之焦點覆蓋於當前分塊中之第三值上之一位置(使用逐列順序)。在此情況中,核心自當前分塊讀取,但亦自當前分塊下方之分塊(其係分塊X+K,其中如先前所提及,K係一列(或行)中之分塊之序數)讀取。此等值與核心組合以產生逐元素乘積對1234C。如逐元素乘積對1234C中所展示,「c9」及「d10」包含來自當前分塊下方之分塊之值且可發現於逐元素乘積1226C中,即,「c9」及「d10」可位於逐元素乘積1226C之值之一者中。前兩個乘積對「a3」及「b4」可發現於逐元素乘積1226A中,因為其等僅包含來自當前分塊之值。因此,1236C中所展示之位置3之後的控制型樣之下一行具有兩個「A」及兩個「C」,其中字母之排序對應於乘積對之順序。
最後,在位置4(1230D)處,覆蓋於輸入上之核心之位置1232接觸來自當前分塊及包圍當前分塊之所有其他三個分塊之值。因
此,乘積對1234D係「a4」、「b7」、「c10」及「d13」。此等可分別識別於逐元素乘積1226A至1226D之各者中。因此,1236D中所指示之控制型樣之最後行分別使用字母「A」至「D」來指示所有四個逐元素乘積1226A至1226D。此處,D將表示當前分塊X加列大小變數K加1或X+K+1且因此係指當前分塊下方及右邊之分塊。
如此處所指示,因為控制型樣中之值指示包圍擷取其值之當前分塊之哪些分塊運算當前分塊上之核心之一焦點位置之廻旋,所以其亦可用於自展平輸入串流選擇值,值接著與擴展核心之一對應向量組合以產生輸出中之對應焦點位置之輸出值。
圖13A繪示根據一實施例之產生二維核心之一控制型樣之值之一部分之一實例1300。在一實施例中,此處所描述之程序由控制型樣產生器134執行。
在1311處,控制型樣產生器134產生一控制型樣1320之所有值。此處,已產生控制型樣1320之大多數值,但未產生剩餘值1324來繪示程序。此值1324位於列0及行8處,如圖中所展示。在1312處,控制型樣產生器134使用位置之列號及行號/座標來判定該位置之測試結果。測試結果係指不等式測試1330。測試之數目等於核心之維數。由於此處核心係二維,所以產生兩個測試。各測試對應於用於識別輸入張量中之各維之平鋪大小的移位變數之一者。例如,K表示第一維(即,各列)中之分塊之大小或數目,而M表示第二維(即,各層)中之分塊之數目。替代地,一特定維之各移位變數可界定為等於該維之平鋪大小與任何先前維之平鋪大小之乘積的乘積。此處,平鋪大小指示橫跨平行於輸入張量中之一維之一長度的分塊之數目。
另外,針對第一維產生不是對應於一移位變數而是對應於當前分塊之一測試。因此,此處產生一test_k及一test_1。替代地,此等可指稱delay_k及delay_1,因為如上所提及,移位變數可用於指示存取展平輸入串流之一延遲量。
如此處可見,產生測試不等式依循一型樣。第一維1之測試不等式係r mod h<c mod w,其中r係控制型樣之列號(如控制型樣1320中所展示),h係核心之高度(如核心1322處所展示),c係行號,且w係核心之寬度(mod係模運算,且<指示小於)。對應於K變數之第二test_k係類似的,但包含區域(即,運算中之h * w),因為此係第二維。因此,所得測試不等式係floor((r mod(h * w))/h)<floor((c mod(h * w))/w),其中floor係一降值取整(floor)或降值捨位(round-down)運算(至最近整數)。儘管核心1322在此處係一方形核心,但在其他情況中,核心可不呈方形,因此,在測試不等式中考量核心之高度及寬度兩者。
結果表1332中涉及兩個測試之結果1313。此處,取決於各測試之真或假(即,1或0)結果,將一不同值(即,指示符)放置於控制型樣中之該對應位置處。此處,由於存在兩個測試,所以存在總計4個可能值,其等在此處分別表示為字母A、B、C及D且等效地分別表示為二進位值00、01、10及11。如本文所描述,此等值指示自其存取值以運算輸出激勵的展平輸入串流之向量/分塊。此處,如測試結果1326(其中列號係0且行號係8)中所展示,兩個測試之結果係真,因此,1324處之值係「D」或11,其涉及當前分塊x+k+1。儘管列號及行號如圖中所展示般經排序,但在另一實施例中,排序可反向。只要修改測試不等式(例如藉由使其反向),則此處結果將相同。因此,此處程序不受限於其中標示控制型樣之
列或行之特定方法。
圖13B繪示根據一實施例之產生三維核心之一控制型樣之值之一部分之一實例1301。在一實施例中,此處所描述之程序由控制型樣產生器134執行。
此處,在1351處,控制型樣產生器134產生控制型樣1360之值。與圖13A中之控制型樣相比,控制型樣1360係針對具有高度2、寬度2及深度2(分別標示為h、w及d)之三維核心1362來產生。
如先前圖13A中所描述,核心之各維與一測試不等式相關聯。因此,此處在測試表1370中產生三個測試不等式。如同圖13A,其等亦可分別指稱delay_m、delay_k及delay_1來替代test_m、test_k及test_1。test_1及test_k兩者相同於圖13A中所展示之測試不等式。對應於M移位變數(即,輸入張量之一層中有多少分塊)之test_m依循類似於test_k但現包含核心之深度(d)的一型樣。
若核心將包含額外維,則此測試不等式將經進一步擴展以包含額外維。例如,就四個維而言,測試不等式可為floor((r mod(h * w * d * t))/(h * d* t)<floor((c mod(h * w * d * t))/(w * d * t),其中t表示「強度」或核心之第四維之大小。此型樣繼續較高維,其中將額外維添加至測試不等式。因此,針對具有N維之核心,測試不等式呈以下形式:floor((r mod(核心之維之大小之乘積))/(h * 排除寬度之核心之維之大小之乘積 )<floor((c mod(核心之維之大小之乘積))/(w * 排除高度之核心之維之大小之乘積 ),其中該核心之剩餘測試不等式係較低維核心N-1、N-2…1之測試不等式,其中具有1個維之核心之測試不等式相同於此處所展示之test_1(且具有2個維之核心之測試不等式相同於此處所展示之
test_k,等等)。
由於三維核心存在三個測試,所以結果表1372中展示總計8個組合。各組合對應於一指示符A至H或三位元二進位值。如下文將參考圖13C所進一步描述,在一些實施例中,二進位之型樣可用於有效率地儲存於控制型樣。在1352處,控制型樣產生器134在控制型樣1360之列0及行7處產生最後剩餘值1364。如測試結果1366中所展示,所有三個測試不等式導致此位置之真,其對應於在1353處,指示符1368H或二進位值111。因此,H將儲存於控制型樣1360之列0,行7位置中。然而,若並非所有測試不等式返回為真,則將基於選擇指示匹配運算測試不等式之結果之三個測試不等式結果的結果表1372中之列來選擇一不同指示符。
若核心包含額外維,則結果表1372之大小將增大,類似於測試不等式之數目。結果表中之列數將等於2X個列,其中X係核心之維數。可看出,若經組織使得測試不等式結果經排序使得最大維之結果形成二進位值之最高有效位元且最小維之結果形成最低有效位元,結果之各組合可被視為二進位值且可在表中依序排序(例如依自上而下之升序)。與各組合相關聯之指示符亦依序增大,且亦與依序增大維大小之移位變數之組合相關聯。例如,在所繪示之實例中,A及B不與移位變數相關聯,而是僅與當前分塊(即,當前分塊x及x+1)相關聯,C及D涉及移位變數k(即,x+k及x+k+1),E及F涉及下一最高維移位變數m(即,x+m及x+m+1),且G及H涉及k及m之總和(即,x+m+k及x+m+k+1)。若核心具有額外維,則此將繼續大小不斷增大之移位變數之組合。各組合將包含兩個指示符,其中一指示符係組合本身,且另一指示符係組合加1。因此,針對四維核心,型樣將繼續I及J(x+t及x+t+1)、K及L(x+t+k及x+t+k+1)、M及N
(x+t+m及x+t+m+1)及O及P(x+t+m+k及x+t+m+k+1)。此等將與二進位值1000及1111(或8至15)對應,其中最高有效位元對應於第四維(即,一「test_t」或「delay_t」)之一測試不等式且剩餘位元對應於本文所繪示之相同三個測試。
應注意,為運算測試不等式,變數r替代將產生其之一值之控制面板之位置之列號(此處為0),變數c替代將產生其之一值之控制面板之位置之行號(此處為7),且變數h、w及d替代核心之高度、寬度及深度之大小(此處為2、2及2)。
圖13C繪示根據一實施例之產生不同維數之核心之控制型樣之實例1302。圖13C中繪示一3×1 1D核心1380、一3×3 2D核心1384及一2×2×2 3D核心1388,其中為清楚起見,以一分解圖繪示3D核心1318。針對此等核心分別繪示對應控制型樣1382、1386及1390。其等根據上文參考圖11所描述之方法來產生。針對1D核心,控制型樣1382中之識別符「A」指示當前分塊X,而「B」指示分塊X+1。針對控制型樣1386,「A」指示當前分塊X,「B」指示分塊X+1,「C」指示分塊X+K(其中K係先前所描述之列大小變數),且「D」指示分塊X+K+1。針對控制型樣1390,「A」至「D」指示相同於控制型樣1316之分塊。另外,「E」對應於分塊X+M(當前分塊後面之分塊),其中M係層分塊大小(即,一層中之分塊之數目)。「F」對應於分塊X+M+1,即,當前分塊後面之分塊右邊之分塊。「G」係分塊X+M+K且對應於當前分塊後面及下方之分塊。「H」對應於分塊X+M+K+1且對應於當前分塊後面、下方及右邊之分塊。
在一實施例中,不是使用指示符(諸如圖13中所展示之字母或表示此等字母之位元之序列)來儲存控制型樣,而是利用控制型樣之
分形性質來依一更有效率方式儲存其。針對控制型樣1382、1386及1390之各者,識別符以沿頂部邊緣及右邊緣之「A」開始,接著引導至「A」與「B」之間的一交替型樣,且進一步劃分型樣,直至最左下值係指示最遠離當前分塊之分塊的識別符(且如圖中所繪示,係按字母順序之最大字母)。歸因於此分形性質,可取決於控制型樣中之唯一識別符之數目來按階層將各控制型樣分成一或多個層級。層級之數目對應於用於產生控制型樣之核心之維數。因此,控制型樣1382具有一單一層級。控制型樣1386具有兩個層級,且控制型樣1390具有三個層級。
各層級包含一方形矩陣,其含有單二進位值(即,位元)。各層級之方形矩陣之各維之大小等於先前層級之一維之大小乘以核心之最大維之大小。最小層級具有一方形矩陣,其具有等於核心之最大維之大小的各維之一大小。因此,例如,就控制型樣1386而言,最大層級包含具有一大小9×9之一方形位元矩陣,而下一最小層級具有3×3之各維之一大小(即,9除以3,其係核心之一維之大小)。
並非為最大層級之一層級中之各位元與一較大層級中之多個位元匹配。特定言之,較大層級被等分成等於下一最小層級中之位元之數目的數個區域,且下一最小層級中之一位元與較大層級之一區域中之位元匹配。下一最小層級中之位元中之匹配位元之位置對應於較大層級之區域組中之區域之位置。跨多個層級之匹配位元之組合允許控制型樣中之每個位置之一位元序列以參考一識別符。因此,在控制型樣1386之實例中,3×3矩陣之各位元與9×9較大矩陣之一3×3部分匹配。來自9×9矩陣之位元之組合與來自3×3矩陣之匹配位元一起形成兩位元值,其可用於係指控制型樣1386之4個位移指示符之一者。在控制型樣1390之實例中,由於
存在8個位移識別符,所以存在3個層級,其中最大層級係一8×8矩陣,第二最大層級係一4×4矩陣,且最小層級係一2×2矩陣。三個位元可用於係指控制型樣1316中之8個唯一識別符之正確者(即,字母「A」至「H」,如圖中所繪示)。此等位元先前亦繪示於圖13A至圖13B中之結果表中。
此方法允許有效率儲存控制型樣。為自各種層級提取正確位元序列,乘加單元140可判定控制型樣中之指示符之一位置,且接著使用此來判定最大層級中之正確位置及剩餘層級中之匹配位置以判定對應於該指示符之位元序列。
圖14係繪示根據一實施例之使用展平輸入、擴展核心及控制型樣來產生一廻旋之一輸出之一方法的一流程圖1400。儘管所繪示之流程圖可展示一操作順序,但所繪示之操作可依任何順序執行且可具有更多或更少操作。在一實施例中,圖14中所繪示之操作可由乘加單元140(其亦可稱為乘累加單元)執行。
乘加單元140自一緩衝器存取1410包含一組平行向量之一展平輸入串流,其中各向量表示將由一核心廻旋以產生一輸入激勵的一輸入張量之一唯一核心大小分塊之一組輸入值。此展平輸入串流可為展平輸入串流124且可由上文所描述之輸入串流產生器122產生。
乘加單元140接收1420藉由旋轉置換來自核心之值來產生一擴展核心,其中擴展核心具有各對應於輸出激勵的一核心大小分塊之一輸出值位置的向量。此可為擴展核心128且可由上文所描述之擴展核心產生器126產生。
乘加單元140接收1430包含一組向量之一控制型樣,其中
各向量對應於輸出激勵的核心大小分塊之輸出值位置,且其中各向量包含指示展平輸入串流之一平行向量以存取廻旋之輸入值的延遲值。控制型樣可為控制型樣136且可使用上文所描述之控制型樣產生器134來產生。
針對輸出激勵的各核心大小分塊之各輸出值位置,乘加單元140產生1440包含由控制型樣之對應向量之延遲值選擇之展平輸入串流之值的一第一向量與對應於擴展核心中的對應於輸出值位置之一向量的一第二向量之間的一點積。乘加單元140使此重複用於所有輸出值。
在一實施例中,輸入張量具有複數個通道,且核心具有多個濾波器。輸入張量之各通道與核心之一或多個濾波器廻旋以產生具有複數個輸出特徵之一輸出激勵。下文將參考圖15A至圖15C、圖16A至圖16F及圖17A至圖17B來描述經由乘加單元140產生輸出值之額外實例。
圖15A繪示根據一實施例之在一維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的一實例1500之一第一部分。在一實施例中,此處所描述之程序可由乘加單元140執行。
在1501A處,乘加單元140處理輸出激勵的第一分塊號碼1(其係輸入張量中之相同分塊位置)。此係所處理之當前分塊。在1502A處,乘加單元140進一步處理第一分塊之3之輸出位置1(其中3係各分塊中之值之數目)。在第一輸出位置之處理中,乘加單元140在1511A處根據由該輸出位置之控制型樣1524中之一向量指示之分塊位置(例如一延遲量)來自展平輸入1522選擇值。針對位置1,此向量係控制型樣1524中之最右行。因此,如圖中所展示,一輸出分塊中之位置1之控制型樣向量1528A全部為「A」,其指示自其選擇值之當前分塊X或分塊1。展平輸入1522中之值可藉由參考一記憶體位址、一指數值來選擇,或其可藉由延遲乘加單
元140自展平輸入1522讀取之時脈週期來選擇。此處,由於控制型樣向量1528A之所有值指示「A」,所以選定輸入值1530A選自展平輸人1522中之分塊1且係[0,1,2],如圖中所繪示。
在1512A處,乘加單元140乘累加選定值1530A與對應於輸出分塊中之位置1之擴展核心向量1532A,即,執行一點積。針對位置1,擴展核心向量1532A係擴展核心1526之頂列。點積運算導致所展示之運算結果a0+b1+c2,其產生位置1處之輸出1534A,如圖中所展示。
程序在圖15B中繼續,圖15B繪示根據一實施例之在一維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第二部分。
在1503A處,處理當前分塊之三個輸出位置之第二位置。在1513A處,類似於1511A,選擇對應於一分塊之位置2之控制型樣向量1536A。在此情況中,此向量係控制型樣1524之中間行。此控制型樣向量1536A用於自展平輸入1522選擇對應值。針對控制型樣向量1536A中之各識別符,由該識別符指示之分塊選自展平輸入1522且一值選自對應於控制型樣向量1536A中之指示符之相同位置的一位置處之該分塊處之展平輸入1522。因此,控制型樣向量1536A中之第一(頂部)位置具有識別符「A」,其對應於分塊X(如圖例中所提及)或當前實例中之展平輸入1522中之分塊1。因此,選擇來自相同第一位置之展平輸入1522之分塊1中之值(此係值「0」)。對控制型樣向量1536A中之第二位置執行相同操作以導致一「1」選自展平輸入1522之第一分塊之第二位置。針對控制型樣向量1536A之第三及最後位置,識別符現為「B」,其指示(如圖例中所提及)應參考之分塊係分塊X+1或當前實例中之分塊2。因此,乘加單元140自分
塊2選擇相同第三位置中之值或「5」。因此,選定輸入值1538A係[0,1,5],如圖中所展示。
在1514A處,類似於1512A中之運算,執行乘累加運算。然而,不是自擴展核心1526選擇第一列,而是選擇對應於輸出之位置2之列,即,向量。在當前實例中,此發生於擴展核心1526之第二列上。因此,位置2之擴展核心向量1542A係[c,a,b]。此擴展核心向量1542A與選定輸入值1538A之間的點積係c0+a1+b5或輸出分塊之位置2處之輸出1544A。
程序在圖15C中繼續,圖15C繪示根據一實施例之在一維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第三部分。
在1504A處,處理輸出分塊之最後位置3。此處所描述之程序類似於1503A及1502A之程序,但針對第三位置之所有選擇經適當移位。
因此,在1515A處,所選擇之控制型樣向量1546A現對應於輸出分塊之位置3且因此係控制型樣1524之最左行。此控制型樣向量1546A具有用於分塊1之一個指示符及用於分塊2之兩個指示符。因此,選定輸入值1548A包含來自分塊1之一「0」及來自分塊2之一「4」及「5」。
在1516A處,針對對應於當前實例中之擴展核心1526之列3的位置3,對選定輸入值1548A及擴展核心向量1552A執行乘累加運算。此點積之輸出係位置3之輸出1554A。
在1505處,對輸入中之所有分塊重複此程序以產生輸出之相同數目個分塊。因此,在當前實例之展平輸人1522中,自針對分塊2之
1501B至針對分塊12之1501L重複1501A中之操作。若展平輸入1522包含更多分塊,則重複1501A中所展示之程序,直至處理所有分塊。
圖16A繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的一實例1600之一第一部分。與圖15A至圖15C相比,在此所描述之程序係關於二維核心而非一維核心。在一實施例中,在此所描述之程序由乘加單元140執行。
在1601A處,由乘加單元140處理第一分塊。由於各分塊具有9個位置,所以處理各位置以產生該位置之一輸出值。在1602A處,處理輸出位置1。如同一維核心實例,根據輸出位置值來自控制型樣1624選擇一控制型樣向量1628A。由於輸出位置係1,所以選擇1611A由控制型樣1624之輸出位置1標示之行作為控制型樣向量1628A。此控制型樣向量1628A具有「A」作為其所有識別符。因此,此控制型樣向量1628A指示選定輸入值1630A應全部選自展平輸入1622之分塊1(因為當前分塊X係分塊1)。
此程序在圖16B處繼續,圖16B繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第二部分。
在1612A處,根據圖16A中針對擴展核心1626所展示之輸出位置標示,對選定輸入值1630A及選自擴展核心1626之一擴展核心向量1632A執行乘累加運算。在此情況中,輸出位置1對應於擴展核心1626之頂列。選擇此頂列用於乘累加運算。因此,此頂列形成擴展核心向量1632A。由乘加單元140執行選定輸入值1630A與擴展核心向量1632A之間的一點積以產生位置1之輸出1634A。
在1603A處,處理輸出位置2。輸出位置2對應於自控制型樣1624之右邊之第二行(如圖中所標示)。應注意,此處行之排序不必依循所展示之順序。相反地,只要選擇對應於正確輸出位置之正確行,則行之排序可為任何順序。另外,控制型樣1624無需由行排序,而是亦可由列排序。只要參考對應於正確輸出位置之正確列,則輸出亦將相同。最後,控制面板中之識別符之順序亦可反向。只要在使用識別符來選擇輸入值時依正確順序參考識別符,則輸出亦將相同。此概念同樣亦適用於擴展核心1626,因為其排序可不同於此處所描述之排序。
如圖例中所提及,控制型樣1624中之識別符「A」係指展平輸入1622之分塊X,其中X係當前分塊,而識別符「B」係指分塊X+1。控制型樣向量1636A包含識別符「A」及「B」兩者。針對控制型樣向量1636A中之各位置,乘加單元140判定識別符係指哪個分塊且自展平輸入1622中之該參考分塊選擇相同於控制型樣向量1636A中之識別符之位置之展平輸人1622中之分塊之向量中之輸入位置處之輸入值。因此,例如,控制型樣向量1636A中之位置6具有指示一值應選自分塊X+1(其係展平輸入1622之分塊2(當前分塊號碼1+1=分塊2))之識別符「B」。乘加單元140自展平輸入1622之分塊2向量選擇對應於控制型樣向量1636A中之位置6之輸入位置6處之值且將此放置於選定輸入值1638A之位置6處。依一類似方式選擇剩餘值。
程序在圖16C中繼續,圖16C繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第三部分。
在1614A處,先前操作中所產生之選定輸入值1638A與擴
展核心向量1642A依一點積中組合以產生位置2之輸出1644A。此處,再次根據輸出位置號(其在此情況中係2)來選擇擴展核心向量1642A。因此,選擇擴展核心1626之第二列作為擴展核心向量1642A。
乘加單元140對分塊之剩餘輸出位置執行上述程序。作為一實例,在1606A處,對輸出位置5執行程序。此處,在1615A處,自輸出位置5行選擇控制型樣向量1646A,如圖16A中所展示。此處,控制型樣向量1646A包含分別對應於分塊X+K及X+K+1之兩個新識別符「C」及「D」,其中K表示輸入之一列中之分塊之數目。因此,如圖中所展示,控制型樣向量1646A中之位置9選自展平輸入串流中之分塊6之位置9。此導致此輸出位置之選定輸入值1648A。
程序在圖16D中繼續,圖16D繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的實例之一第四部分。
在1615A處,執行乘累加運算。乘加單元140執行選定輸入值1648A與針對位置5所選擇之擴展核心向量1652A之間的一點積。在所繪示之實例中,此係擴展核心1626之列5。點積結果係位置5之輸出1654A。在1616處重複此程序,直至產生當前分塊中之所有輸出。另外,在1617處重複此程序,直至處理所有分塊。
圖16E繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生具有多個通道之一輸出激勵的一實例。
如先前所描述,一輸入張量102可具有多個通道,其中各通道係輸入值之一單獨矩陣。如先前參考圖5C所描述,一輸入之多個通道經展平且彼此上下「堆疊」。在1618處,根據圖4至圖6中所描述之方法
來展平此等輸入通道之各者,且由控制型樣1624自展平輸入通道1656選擇值來產生選定輸入通道值1658。儘管此處展示選定輸入通道值1658之一新矩陣,但實際上無新矩陣可產生。相反地,乘加單元140可自展平輸入通道1656即時選擇值。因此,此處展示選定輸入通道值1658來概念性繪示概念。
程序在圖16F中繼續,圖16F繪示根據一實施例之在二維核心之情況中使用展平輸入、擴展核心及控制型樣來產生具有多個通道之一輸出激勵的實例之一第二部分。
在1618處,乘加單元140使用選定輸入通道值1658及核心濾波器1660A至1660N來執行1668點積(即,乘累加)。選定輸入通道值1658中之各輸入通道與本身為核心之一不同子濾波器核心1666廻旋。各子濾波器核心1666可具有相同或不同值。廻旋程序可類似於上文針對圖16A至圖16D所描述之廻旋程序。針對一單一核心濾波器將所產生之廻旋輸出1662A加總1670在一起以產生輸出激勵通道1664A。對各剩餘核心濾波器1660B至1660N重複此程序,使得產生多個輸出激勵1664B至1664N。此等輸出激勵1664A至1664N可充當一神經網路中之額外廻旋層之輸入。
圖17A繪示根據一實施例1700之在三維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的一實例之一第一部分。在一實施例中,在此所描述之程序可由乘加單元140執行。
在1701處,由乘加單元140處理輸入之一分塊X。在1702處,乘加單元140處理分塊X之8之一輸出位置8。在1711處,乘加單元140使用位置8之選定控制型樣向量1724來自展平輸入1722選擇值。如同上文
針對一維及二維核心所描述之程序,選擇對應於輸出位置(在此情況中為位置8)之控制型樣之一向量作為控制型樣向量1724。控制面板向量1724具有自「A」至「H」之8個不同識別符。如圖17A中之圖例中所展示,各識別符指示展平輸入1722之一不同分塊。例如,識別符「H」對應於分塊X+M+K+1,其中M係各層中之分塊之數目且K係輸入之各列中之分塊之數目。針對各識別符,乘加單元140自展平輸入1722之指示分塊選擇對應於選定輸入值1726之識別符之位置的一位置處之一值。
程序在圖17B中繼續,圖17B繪示根據一實施例之在三維核心之情況中使用展平輸入、擴展核心及控制型樣來產生一輸出激勵的一實例之一第二部分。
在1712處,乘加單元140依一點積組合位置8之選定輸入值1728與位置8之擴展核心向量1730以產生當前分塊之位置8之輸出1732。所選擇之擴展核心向量1730對應於輸出之位置。
在1713處,由乘加單元140對輸入中之各分塊之所有輸出位置重複上述程序以產生輸出激勵。
圖18A繪示根據一實施例之用於產生擴展核心之一例示性組件之一硬體圖。在一些實施例中,對應於一陣列(例如權重之一核心)之資料值1810儲存於一資料儲存電路1801(例如一記憶體電路)中。在一些實施例中,對應於一陣列之資料值儲存為一序列(例如一單一行)。在此實例中,資料值1810耦合至一或多個輸入上之一移位器電路1802。移位器電路可接收陣列作為資料值之一序列。例如,各資料值可包括一或多個位元組之數位資料值,例如,其可為(例如)整數、浮點數或其他類型之資料
值。因此,例如,各資料值可耦合至複數個導體(例如一積體電路上之導線互連件)上之移位器電路1802,其中一組導體可攜載一資料值且導體群組可攜載一資料值序列。在一實施例中,資料值係權重且輸入資料值係一神經網路之激勵值。
攜載資料值之導體可接收於移位器電路1802之一輸入上。移位器電路1802之輸入可接收導體以攜載(例如)一序列之部分或全部。如上文所提及,對應於一陣列之資料值可接收為一序列。在一實施例中,序列包括自資料儲存器1801並行接收之對應陣列之所有資料值。然而,在其他實施例中,序列包括對應陣列之資料值之一部分(例如每次接收及置換一行或一列)。移位器電路1802可依一不同順序將資料值自一或多個輸入耦合至一或多個輸出以產生置換序列。在一些實施例中,複數個輸出各攜載可耦合至一乘法器1803之一序列。在其他實施例中,接收於一第一輸入上之一序列之資料值移位至不同位置且耦合至一或多個輸出。在下文將展示之一實例性實施例中,一序列接收於一第一輸入上,資料值移位至不同位置,且置換序列依序產生於一第二輸出上。
在一些實施例中,由移位器電路1802產生之置換可對應於一擴展核心,如上文所描述。因此,在一些實施例中,僅一個序列而非多個置換序列可儲存於記憶體中,使得(例如)有利地減少記憶體使用。例如,自資料儲存器1801接收之序列可包括基於陣列之行或列之複數個子序列。移位器電路1802可置換序列如下。資料值可依相同於序列之一順序自移位器電路1802之一或多個輸入耦合至一或多個輸出。因此,輸入序列可包括由輸出產生之序列之一者。另外,針對子序列之複數次置換(其中各子序列之位置在該序列內移動)及針對各子序列中之資料值之複數
次置換(其中資料值在各子序列內移動),資料值依一不同順序自一或多個輸入耦合至一或多個輸出。上文已繪示不同陣列之此等置換之實例。在一實施例中,資料值接收於移位器電路1802之一第一輸入上,且資料值自第一輸入耦合至一第一輸出以在第一輸出上產生輸入序列。另外,資料值可依不同順序自第一輸入耦合至複數個第二輸出以在複數個第二輸出上產生複數個置換序列。下文將在圖18B中繪示此方法之一實例性實施方案。在另一實施例中,資料值接收於移位器電路1802之一或多個輸入上,資料值移位至(若干)輸入與一或多個輸出之間的不同位置以產生輸入序列及複數個置換序列。
一乘法器電路1803可耦合至移位器電路1802之一或多個輸出。因此,產生於移位器電路1802之一或多個輸出上之序列可載入至乘法器1803中之複數個暫存器電路中。乘法器1803可進一步接收輸入資料值1820。輸入資料值1820可載入至複數個第二暫存器中。因此,可產生複數個乘法結果1830。如上文所提及,擴展核心可導致(例如)並行產生之複數個廻旋結果。在一實施例中,資料值對應於一M×N陣列(例如待應用於輸入資料值1820之一核心)。移位器電路1802可自資料儲存器1810接收一M*N長度序列且產生各具有長度M*N之M*N個不同序列。序列可自移位器電路1802耦合且載入至乘法器電路1803中(例如並行)。
圖18B繪示根據一實施例之用於例示性組件中以產生擴展核心之一例示性移位器電路之一硬體圖。
在此實例中,輸入序列SEQ1對應於一M×N陣列,其中(例如)M及N係整數且M及N之一或多者大於1。因此,序列SEQ1包括M*N個資料值D0至D(M*N)。序列SEQ1可自一輸入耦合至包括未置換之M*N
個資料值之一第一輸出(例如串流S(1))。另外,序列SEQ1可沿M*N-1個不同路徑置換成提供於各包括(例如)M*N個置換資料值D0至D(M*N)之M*N-1個輸出(例如串流S(2)至S(M*N)上之M*N-1個不同序列SEQ2至SEQM*N。
更具體而言,在此實例中,包括複數個資料值D0至D(M*N)之一序列SEQ1接收於一第一輸入串流S(1)上。序列中之各資料值可包括攜載於(例如)複數個導體上之一或多個位元組。此處,資料值依不同順序沿不同導電路徑自一第一輸入(例如串流S(1))耦合至複數個不同輸出(例如串流S(1)至S(M*N))以在複數個不同輸出(例如串流S(1)至S(M*N))上產生原始序列SEQ1及複數個置換序列SEQ2至SEQM*N。例如,輸入序列中之各資料值D0至D(M*N)可包括攜載於複數個導電線上之一或多個位元組。攜載不同資料值之導電線不同地重新排序於輸入(例如串流S(1))與複數個輸出(例如串流S(2)至S(M*N))之各者之間以在複數個輸出之各者上產生一不同置換序列。更具體而言,在此實例中,輸入S(1)上之SEQ1耦合至複數個旋轉器1860至1862。旋轉器1860至1862可(例如)藉由改變攜載資料值之導體之位置來使各序列中之資料值之位置重新排序。1870及1871處繪示兩個實例性旋轉。在此實例中,在旋轉之後,各置換序列可耦合至一多工器電路之一輸入。本發明之實施例可包含一積體電路,其包括複數個串流S。自SEQ1經由旋轉器1860至1862所產生之置換序列可使用(例如)多工器1851至1853來耦合至相鄰串流S(2)至S(M*N)。例如,攜載資料值D0至D(M*N)之不同置換序列SEQ2至SEQM*N之重新排序導電線之各者可耦合至各多工器之一輸入。各多工器之一第二輸入耦合至串流S(2)至S(M*N)之一者。因此,各多工器之一
輸出將置換序列之一者耦合至各串流上。另外,攜載資料值D0至D(M*N)之原始序列SEQ1之輸入之導電線依一相同順序耦合至一第一輸出(例如串流S(1))以在攜載串流S(1)之輸出上產生原始序列。分別攜載SEQ1至SEQM*N之串流S(1)至S(M*N)可耦合至(例如)乘法器電路。因此,在此實例中,序列SEQ1之所有置換可有利地並行產生於相同週期上且並行載入至乘法器中。
圖19繪示根據一實施例之用於產生控制型樣之一例示性組件之一硬體圖。一些實施例之特徵及優點可包含一控制型樣產生器電路1910,其可(例如)整合於相同於一乘法器陣列電路1920之半導體表面上。在一實施例中,控制型樣產生器1910經組態(例如經由軟體)以接收一核心之維,諸如一高度(H)及寬度(W)。控制型樣產生器1910可(例如)產生用於乘法器陣列1920中之乘法器胞元1921至1926之各者的兩個位元。一位元可選擇於一K延遲或非K延遲輸入之間,且另一位元可選擇於一單位延遲與非單位延遲輸入(例如1延遲或無延遲)之間。各乘法器胞元可包括用於儲存(例如)兩個型樣控制位元之一儲存單元(例如一暫存器)。兩個位元可使用選擇電路來共同選擇四個資料值之一者:x、x+1、x+K、x+K+1,其中x係當前分塊,且K係指示輸入張量之分塊大小寬度的變數,如上文所描述。針對具有額外維之核心,控制型樣產生器1910產生各額外維之一額外位元,其中該位元選擇於藉由該額外維之一移位變數之一額外延遲或無額外延遲之間。應注意,儘管此處使用術語「延遲」,但在一些情況中展平輸入串流之存取值不經由一延遲來存取,而是經由可使用延遲值作為指數值之一相對或絕對定址系統來存取至記憶體中。
在此實例中,控制型樣產生器1910包括一K延遲邏輯電路
1911及一單位延遲邏輯電路1912。K延遲邏輯電路1911可接收(例如)一核心之一單維且產生用於在一K延遲輸入與一非K延遲輸入之間選擇之H*H個位元值。在此實例中,K延遲邏輯電路1911接收核心之一高度H且產生對應於控制型樣之一H×H三角陣列之H2個位元值。儘管在此實例中使用H作為K延遲邏輯電路1911之輸入,但其他實施例可使用另一維(諸如(例如)寬度W)作為K延遲邏輯電路之一輸入。此外,單位延遲邏輯電路1912可接收兩個維,諸如(例如)高度H及寬度W。單位延遲邏輯電路1912產生用於在輸入(例如非延遲或K延遲)(其係(例如)單位延遲(+1)或非單位延遲(例如0))之間選擇之H*W個位元值。在此實例中,單位延遲邏輯電路1912接收核心之一高度H及核心之一寬度W且產生對應於一H*W三角陣列(例如圖22中之陣列2220)之H*W個位元值。用於選擇非延遲/K延遲及單位延遲/非單位延遲之位元值對耦合至複數個乘法器胞元1921至1926且儲存於(例如)各乘法器胞元中之一儲存電路1930(諸如一暫存器)中。此處使用一多工器圖1931來繪示選擇,但熟習技術者已知諸多不同選擇電路。在此實例中,來自K延遲邏輯電路1911之一個位元及來自單位延遲邏輯電路1912之一個位元可儲存於乘法器胞元1921至1926之各者中之儲存單元中以選擇(例如)非延遲、單位延遲、K延遲或K+1延遲輸入值之一者。類似於圖22中所展示之型樣2220之一型樣可對應於跨乘法器陣列1920之儲存電路1930中之第一位元值,且類似於圖22中之型樣2210之型樣可對應於跨乘法器陣列1920所重複之儲存電路1930中之第二位元值以控制跨乘法器陣列選擇輸入。
圖20繪示根據一實施例之用於執行乘加運算以產生輸出激勵的一例示性組件之一硬體圖。在此實例中,來自一擴展核心(M*N)之值
載入至複數個乘累加器電路之第一輸入暫存器中,且輸入值aij載入至複數個乘累加器電路之第二輸入暫存器中。例如,乘累加器電路可包含複數個乘法器2001、2011、2021、2031、2041及2051,其中複數個乘法器電路可自擴展核心載入不同值wij。各乘法器可進一步自展平輸入串流之複數個分塊之一者載入一輸入值。例如,a11對應於一第一分塊之a11位置(即,分塊中之第一列及第一行)中之值,其可耦合至一選擇電路2006(例如一多工器或「Mux」)之一輸入。a11輸入可進一步耦合至一延遲電路2003以在選擇電路2006之一第二輸入處產生a11之一延遲型式(例如一個週期延遲)。此延遲型式自當前分塊選擇一個單位用於一分塊。另外,a11可耦合至一K延遲電路2004(例如一緩衝器或先進先出資料儲存單元(「FIFO」))以在選擇電路2006之另一輸入處產生(例如)延遲K個週期之a11之一型式。此對應於為當前分塊下方之一列之一分塊。此外,K延遲電路2004之輸出可接收於另一延遲電路2005之輸入處以在選擇電路2006之又一輸入處產生a11之一K+1延遲型式。類似地,乘法器2011至2021接收(例如)對應於一擴展陣列之第一列之值w12、…、w1(M*N)及輸入值a11…aMN。同樣地,擴展陣列之其他列可乘以輸入值a11…aMN,直至一擴展陣列w(M*N)1、…、w(M*N)(M*N)之最後一列,其中列包括(例如)上文所描述之置換值。乘法器2011、2021、2031、2041及2051分別包括延遲2013、2023、2033、2043及2053、K延遲2014、2024、2034、2044及2054、延遲2015、2025、2035、2045及2055及選擇電路2016、2026、2036、2046及2056。
一控制型樣可用於在(例如)a11之各種型式之間選擇,使得來自適當分塊之一輸入值與儲存於一特定乘法器中之權重相乘。在此實
例中,輸入值乘以擴展核心之第一列中之序列,因此,a11w11…aMNw1(M*N)具有對應於A(經受廻旋之一當前分塊)之一控制型樣值。然而,在此實例中,跨整個分塊計算一廻旋(包含涉及相鄰分塊之廻旋)可包含等待相鄰分塊中之輸入值到達。因此,計算一給定「當前分塊」之一廻旋可包含等待相鄰分塊值之K+1個週期可用。可如上文所描述般使用額外控制型樣值,其取決於核心之維。例如,為計算一當前分塊之一廻旋,系統可儲存輸入值且等待來自其他分塊之輸入值可用於進行計算。因此,例如,可使用特定分塊之K+1延遲輸入值、作為相鄰行分塊中之值之K延遲輸入值、作為相鄰列分塊中之輸入值之1延遲值及作為相鄰於相鄰列及相鄰行分塊之分塊中之輸入值之非延遲值來計算一特定分塊之廻旋。儘管本說明書參考當前值(例如針對當前分塊或非延遲值)、單位(或1)延遲值、K延遲值及K+1延遲值,但應瞭解,此等延遲可相對於彼此(例如在一選擇電路之輸入處)。各種其他延遲可存在於信號路徑中,但此處為了說明而省略。另外,若核心具有額外維,則將包含額外延遲值(諸如一M延遲值等等)及對應電路。
輸入值a11至aMN(例如a11至a33)之一陣列可載入至乘法器電路2001、2011、…、2021之一陣列中,乘法器電路2001、2011、…、2021亦各被載入不同權重w11、w12、…、w1(M*N)(例如w33)。如上文所描述,例如,各乘法器自具有相同於提供權重之擴展核心之維之一控制型樣陣列接收使用一不同控制型樣輸入所選擇之一輸入。各乘法器2001、2011、…、2021之輸出可耦合至一或多個加法器電路(例如加法器2007、2017、2027)以加總乘積且輸出一廻旋結果R1。類似地,擴展核心之各列可載入至複數個乘法器中且乘以由來自控制型樣陣列之一
對應列遮罩之輸入值之一向量。例如,此處,包括值w(M*N)1、w(M*N)2、…、w(M*N)(M*N)之擴展核心之最後一列載入至一行乘法器2031、2041及2051中且與由包括位置(M*N,1)、(M*N,2)、…、(M*N,M*N)處之值之控制型樣陣列中之最後一列控制之輸入值a11、a12、…、aMN組合。例如,最後一行乘法器之輸出在加法器2037、2047及2057中加在一起以產生一第M*N廻旋結果R(M*N)。在一等效替代實施例中,延遲可耦合至乘法器之輸出。
圖21繪示根據一實施例之用於運算一機器學習處理器中之輸出激勵的一例示性組件佈局2100。所繪示之佈局表示用於執行本文所描述之操作之一機器學習處理器(或其他處理器)中之組件(邏輯及/或實體)之一可能佈局。佈局2100包含ICU 2110、複數個MEM分塊2115A至2115N、複數個SXM分塊2120A至2120N、複數個NIM分塊2125A至2125N及超級胞元2130A-A至2130N-N之一陣列。此等元件在以下描述中藉由省略其字母後綴來統稱。
ICU 2110發出指令至NIM分塊2125。此等指令指示NIM分塊2125使超級胞元2130組態有正確控制型樣值以執行本文所描述之廻旋運算。超級胞元2130配置成一方形柵格。各超級胞元2130具有指示其可並行處理多少值之一大小。超級胞元2130可全部具有相同大小。例如,各超級胞元可為一16×16柵格且可處理256個值。
在一實施例中,輸入通道垂直(如由2145所指示)劃分於超級胞元2130之間,使得各輸入通道在被展平之後由超級胞元2130之一或多個層(由命名方案中之首字母指示之層)處理。當一輸入層可小於一超級胞元2130之大小時或當輸入通道之垂直維不均勻分成一超級胞元2130之
垂直維時,一或多個層可僅包含一層之一分率部分。在相同實施例中,輸出特徵(即,不同輸出「通道」)水平(如由2155所指示)劃分於超級胞元2130之間。因此,超級胞元2130之一或多個行(或分率部分)(由命名方案中之第二字母指示)用於處理各輸出特徵。
超級胞元2130本身可類似於上述乘累加單元。在對輸入值2140執行廻旋運算之後,超級胞元將其輸出傳輸至其上方之超級胞元2130。此允許不同輸入層之廻旋在一起加總以自多個輸入層產生一輸出特徵2150。若存在輸出之多個通道,則使用上述方法(例如在圖16E至圖16F中)產生多組輸出特徵2150。
在一第一時脈週期上,ICU 2110指示第一NIM分塊2125A組態與該NIM分塊2125A相關聯之一或多個超級胞元2130。在所繪示之實例中,相同於NIM分塊2125A之層上之超級胞元2130由NIM分塊2125A組態。此等係超級胞元2130A-*(其中*係自A至N之任何字母)。在一第二時脈週期上,NIM分塊2125A使用圖13A至圖13B中所描述之方法來使超級胞元2130A-A組態有正確控制型樣值。針對第一超級胞元2130A-A,當產生控制型樣值時,列號及行號不具有偏移。然而,針對除超級胞元2130A-A之外的任何其他超級胞元2130,用於產生控制型樣值之列號及行號具有一額外偏移。針對行號,此偏移等於經組態之超級胞元2130左邊(「西邊」)之超級胞元2130之數目乘以一超級胞元2130之胞元寬度。針對列號,此偏移等於經組態之超級胞元2130下方(「南邊」)之超級胞元2130之數目乘以一超級胞元2130之胞元高度。另外,可根據一超級胞元之一分率之多少可已自處理一先前輸入通道或輸出通道使用來填補偏移值。使用此偏移之原因係因為分塊、控制型樣及擴展核心大小可不是超級胞元之
大小之一倍數,因此,不同分塊可橫跨不同超級胞元2130。此意謂控制型樣值亦可橫跨不同超級胞元2130,因此需要運算由超級胞元2130之位置偏移之各控制型樣值以產生對應於超級胞元2130將處理之分塊、若干分塊或分塊之分率之正確控制型樣值。
與使超級胞元2130A-A組態有控制型樣值並行(在相同時脈週期上),NIM分塊2125A將指令傳輸至使用指令來組態其超級胞元2130B-*之後續NIM分塊2125B(當前NIM分塊2125上方或「北邊」之NIM分塊)。此指令包含先前所提及之偏移值,使得NIM分塊2125B使超級胞元2130B-*組態有考量偏移之正確控制型樣值。重複指令之此傳播,直至等於輸入之大小之若干超級胞元2130由NIM分塊2125組態。
在一超級道中之一(若干)超級胞元2130之各組態期間,一NIM分塊2125可僅組態超級胞元2130用於輸出之一特定通道(即,一輸出通道)。可在來自ICU 2110之指令中指定通道。為組態超級胞元2130用於輸出之額外通道,ICU 2110可每時脈週期向NIM分塊2125發出額外指令以組態超級胞元2130用於輸出之額外通道。此等指令包含正確偏移值,使得處理該輸出層之超級胞元2130具有能夠產生正確控制型樣值之正確列及行位置值。
在各時脈週期中,來自ICU 2110之指令自一NIM分塊2125「向北」傳播至一後續NIM分塊2125,同時ICU 2110繼續沿「向東」方向向超級胞元發出指令。因此,在多個時脈週期內,依一斜向「波」組態超級胞元2130。依此方式,在若干時脈週期之後組態整組輸入通道及輸出通道之組態。一旦完成此,則輸入值2140由此處所描述之系統接收且在類似於上述乘累加運算之一程序中由超級胞元2130逐分塊處理以產生
輸出特徵2150。
圖22A繪示根據一實施例之一實例性機器學習處理器。本發明之特徵及優點包含能夠以非常高速率執行廻旋運算之一處理器電路。在此實例中,一伺服器電腦2201(或主機)可包含組態軟體2210,其可接收用於執行廻旋之一或多個核心2213。處理器電路2200可為一機器學習處理器,其係指接收輸入資料(例如激勵,諸如影像)且將一核心(例如神經網路權重)應用於輸入資料作為(例如)一機器學習(亦稱為人工智慧)演算法之部分的一電路。在此實例中,組態軟體2210(有時指稱一編譯器)接收神經網路權重2213。在此實例中,一擴展核心或控制型樣(或兩者)可產生於軟體中。例如,權重2213可由一核心產生器2212及控制型樣產生器2211分析以產生一控制型樣2225及擴展核心2226,其可儲存於處理器電路2200中之資料儲存器2220(諸如(例如)記憶體或暫存器電路)中。輸入值2280可接收於一輸入/輸出(I/O)電路2222中且(例如)經由一資料匯流排2224耦合至一乘累加器電路2221。擴展核心2226及控制型樣2225亦可耦合至乘累加器電路2221。例如,乘累加器電路2221可產生上文所描述之廻旋結果。在一些實施例中,中間廻旋結果2227儲存於資料儲存器2220中且適用於新激勵輸入2280。在其他實施例中,廻旋結果2290可提供為(例如)輸出。替代地,廻旋結果可由其他電路2223(諸如(例如)一向量處理器(圖中未展示))處理。
圖22B繪示根據另一實施例之一實例性機器學習處理器。在此實例中,核心由組態軟體分析,但擴展核心及控制型樣可產生於硬體中。例如,一或多個核心(例如神經網路權重)2262接收於組態軟體(例如一編譯器)2260中且由一核心分析器組件2261分析以產生用於產生包含一
值K(其可自一核心之大小及其他資訊(待處理之輸入之維)導出)之一擴展核心之組態資訊。伺服器電腦2251可將組態資訊及一值K發送至處理器電路2250。在此實例中,K可對應於(例如)輸入2285之各列中之分塊數目,其中分塊係相同於核心之大小。組態資訊可用於組態控制型樣產生器2277及移位器電路2278。移位器電路2278可經組態以置換核心以(例如)自儲存於資料儲存器2270中之或一多個核心2275產生一擴展核心。
在此實施例中,一擴展核心產生於硬體中。一或多個核心2275可儲存於資料儲存器2270中。例如,一核心可儲存於資料儲存器2270中作為一值序列,其中一序列可自資料儲存器2270存取且耦合至移位電路2278(例如同時)。各種移位電路可用於置換輸入序列且產生一擴展核心,如上文所描述。下文將更詳細描述用於置換序列以產生一擴展核心之一實例性電路。擴展核心之值可載入至(例如)乘累加器2271中。在硬體中擴展核心可減少所需資料儲存量,其在一些實施例中可為有利的。
本發明之實施例包含組態一K延遲電路與乘累加器2271串聯。在此實例中,輸入值2285可耦合至一延遲電路2279,其可為諸如(例如)一可程式化緩衝器之一可程式化延遲電路。在一實施例中,延遲2279可經組態以具有(例如)一延遲K,其可取決於核心之大小及沿一輸入陣列之一維之分塊之數目而不同。在一實施例中,延遲2279可為其中(例如)輸出係輸入之延遲型式且延遲設定為K之一先進先出(FIFO)電路。輸入值亦可在不延遲之情況下直接耦合至乘累加器電路2271。因此,乘累加器電路2271可接收(例如)當前輸入值及延遲K個週期之輸入值。
控制型樣產生器2277可產生用於實施一控制型樣之控制信號,使得各種延遲或非延遲輸入資料值與特定權重組合,如上文所描述。
特定型樣控制信號可對應於(例如)核心藉由其來應用於各輸入分塊之路徑及用於展平分塊及核心之路徑。控制型樣產生器2277之輸出可用於選擇(例如)輸入值之各種延遲型式,如上文所描述。
因此,乘累加器電路2271接收當前輸入值、K延遲輸入值、一擴展核心及用於選擇不同輸入之控制信號。如上文所描述,乘累加器2271可包含用於使當前輸入值及K延遲輸入值兩者延遲之額外單位延遲電路,且來自控制型樣產生器2277之控制信號可用於選擇適合與(例如)擴展核心中之不同值相乘之輸入值。乘累加器電路2271之輸出可為中間廻旋2276,其可(例如)儲存於資料儲存器2270中且與後續輸入2285廻旋,或廻旋結果可在2295處輸出。替代地,廻旋結果可由其他電路2273(諸如(例如)一向量處理器(圖中未展示))處理。
圖23係繪示能夠自一電腦可讀媒體讀取指令且在一處理器(或控制器)中執行指令之一實例性運算機器之組件的一方塊圖。本文所描述之一電腦可包含圖23中所展示之一單一運算機器、一虛擬機、包含圖23中所展示之運算機器之多個節點的一分佈式運算系統或運算器件之任何其他適合配置。本文所描述之電腦可由先前圖中所描述之元件之任何者用於執行所描述之功能。
舉例而言,圖23展示呈其內含指令2324(例如軟體、程式碼或機器碼)之一電腦系統2300之實例性形式之一運算機器之一圖形表示,指令2324可儲存於一電腦可讀媒體中以用於引起機器執行本文所討論之程序之任何一或多者。在一些實施例中,運算機器操作為一獨立器件或可連接(例如網路連接)至其他機器。在一網路部署中,機器可充當一伺
服器-用戶端網路環境中之一伺服器機器或一用戶端機器或一同級間(或分佈式)網路環境中之一同級機器。
圖23中所描述之一運算機器之結構可對應於任何軟體、硬體或上圖中所展示之組合組件。儘管圖23展示各種硬體及軟體元件,但圖1及圖2中所描述之組件之各者可包含額外或更少元件。
舉例而言,一運算機器可為一個人電腦(PC)、一平板PC、一視訊轉換器(STB)、一個人數位助理(PDA)、一蜂巢式電話、一智慧型電話、一網頁設備、一網路路由器、一物聯網(IoT)器件、一交換器或橋接器或能夠執行指定由機器採取之動作之指令2324之任何機器。此外,儘管圖中僅繪示一單一機器,但術語「機器」亦應被視為包含個別或共同執行指令2324以執行本文所討論之方法之任何一或多者的機器之任何集合。
實例性電腦系統2300包含一或多個處理器(統稱為處理器2302)(例如一中央處理單元(CPU)、一圖形處理單元(GPU)、一數位信號處理器(DSP)、一或多個專用積體電路(ASIC)、一或多個射頻積體電路(RFIC)或此等之任何組合)、一主記憶體2304及一靜態記憶體2306,其等經組態以經由一匯流排2308彼此通信。電腦系統2300可進一步包含圖形顯示單元2310(例如一電漿顯示面板(PDP)、一液晶顯示器(LCD)、一投影器或一陰極射線管(CRT))。電腦系統2300亦可包含文數字輸入器件2312(例如一鍵盤)、一游標控制器件2314(例如一滑鼠、一軌跡球、一操縱桿、一運動感測器或其他指標儀器)、一儲存單元2316、一信號產生器件2318(例如一揚聲器)及一網路介面器件2320,其等亦經組態以經由匯流排2308通信。
儲存單元2316包含一電腦可讀媒體2322,其上儲存指令2324以體現本文所描述之方法或功能之任何一或多者。指令2324亦可在由電腦系統2300執行其期間完全或至少部分駐留於主記憶體2304或處理器2302內(例如在一處理器之快取記憶體內),主記憶體2304及處理器2302亦構成電腦可讀媒體。指令2324可經由網路介面器件2320來傳輸及接收於一網路2326上。
儘管電腦可讀媒體2322在一實例性實施例中展示為一單一媒體,但術語「電腦可讀媒體」應被視為包含能夠儲存指令(例如指令2324)之一單一媒體或多個媒體(例如一集中式或分佈式資料庫或相關聯快取記憶體及伺服器)。電腦可讀媒體可包含能夠儲存由機器執行且引起機器執行本文所揭示之方法之任何一或多者之指令(例如指令2324)之任何媒體。電腦可讀媒體可包含(但不限於)呈固態記憶體、光學媒體及磁性媒體之形式之資料儲存庫。電腦可讀媒體不包含諸如一信號或一載波之一暫時性媒體。
特定實施例在本文中描述為包含(例如)邏輯或若干組件、引擎、模組或機構,如上圖中所繪示。引擎可構成軟體模組(例如體現於一電腦可讀媒體上之程式碼)或硬體模組。一硬體引擎係能夠執行特定操作之一有形單元且可依一特定方式組態或配置。在實例性實施例中,一或多個電腦系統(例如一獨立、用戶端或伺服器電腦系統)或一電腦系統之一或多個硬體引擎(例如一處理器或一處理器群組)可由軟體(例如一應用程式或應用程式部分)組態為操作以執行特定操作之一硬體引擎,如本文所描述。
在各種實施例中,可機械或電子實施一硬體引擎。例如,一硬體引擎可包括經永久組態(例如組態為一專用處理器,諸如一場可程式化閘陣列(FPGA)或一專用積體電路(ASIC))以執行特定操作之專用電路或邏輯。一硬體引擎亦可包括由軟體暫時組態以執行特定操作之可程式化邏輯或電路(例如涵蓋於一通用處理器或另一可程式化處理器內)。應瞭解,在專用及永久組態電路中或在暫時組態電路(例如由軟體組態)中機械實施一硬體引擎之決定可由成本及時間考量驅動。
本文所描述之實例性方法之各種操作可至少部分由經暫時組態(例如由軟體)或永久組態以執行相關操作之一或多個處理器(例如處理器2302)執行。無論經暫時或永久組態,此等處理器可構成操作以執行一或多個操作或功能之處理器實施引擎。在一些實例性實施例中,本文所提及之引擎可包括處理器實施引擎。
特定操作之執行可分佈於不僅駐留於一單一機器內且亦跨若干機器部署之一或多個處理器中。在一些實例性實施例中,一或多個處理器或處理器實施模組可位於一單一地理位置中(例如在一家庭環境、一辦公室環境或一伺服器場內)。在其他實例性實施例中,一或多個處理器或處理器實施模組可跨若干地理位置分佈。
在閱讀本發明之後,熟習技術者將透過本文所揭示之原理瞭解一類似系統或程序之額外替代結構及功能設計。因此,儘管已繪示及描述特定實施例及應用,但應瞭解,所揭示之實施例不受限於本文所揭示之精確構造及組件。可在不背離隨附申請專利範圍中所界定之精神及範疇之情況下對本文所揭示之方法及裝置之配置、操作及細節作出熟習技術者將明白之各種修改、改變及變動。
1410至1440:步驟
Claims (17)
- 一種用於矩陣運算之方法,其包括:自一緩衝器存取包含一組平行向量之一展平輸入串流,該組平行向量中之各向量表示用於與一核心廻旋以產生一輸出激勵的一輸入張量之一唯一核心大小分塊之一組輸入值;接收藉由置換來自該核心之值所產生之一擴展核心,該擴展核心具有各對應於該輸出激勵的一核心大小分塊之一輸出值位置的複數個核心向量;藉由基於一控制型樣中之各位置之座標及該核心之各維之一大小來產生該控制型樣之該位置之一值,藉以產生該控制型樣;接收包含複數個向量之該控制型樣,該等向量之各者對應於該輸出激勵的該核心大小分塊之該輸出值位置,該等向量之各者包含指示該組平行向量之一平行向量存取輸入值用於該廻旋之延遲值,該控制型樣之該等向量之一數目對應於該輸出激勵之該核心大小分塊中之輸出值位置之一數目,該控制型樣之該等向量之各者中之該等延遲值之各者指示存取該展平輸入串流中之一個別輸入值之一延遲量,且該等延遲值之各者指定該組平行向量之一個平行向量;及針對該輸出激勵的各核心大小分塊之各輸出值位置,使用一硬體加速處理器來產生包含由該控制型樣之該等向量之各者之該等延遲值選擇之該展平輸入串流之值的一第一向量與對應於該擴展核心之該複數個核心向量的對應於該輸出值位置之一核心向量的一第二向量之間的一點積。
- 如請求項1之方法,其中該輸入張量具有複數個通道,該核心具有複數個濾波器,且該複數個通道之各通道與該複數個濾波器之一或多個濾波器廻旋以產生具有複數個輸出特徵之該輸出激勵。
- 如請求項1之方法,其進一步包括:使用填補值來填補該輸入張量,使得該輸出激勵之輸出值之位置具有與該輸入張量中之輸入值之所有位置匹配之位置,且使得該輸出激勵之一大小匹配該輸入張量之一大小。
- 如請求項1之方法,其進一步包括:使用填補值來填補該輸入張量,使得該輸入張量之各維之一大小係該核心之一對應維之一整數倍。
- 如請求項1之方法,其進一步包括:使用具有等於該核心之一對應維中之該核心之大小之一寬度的填補值來填補該輸入張量之各維之一後緣。
- 如請求項1之方法,其中藉由以下操作來產生該展平輸入串流:針對該輸入張量之一或多個核心大小分塊之各者:依一界定順序存取該核心大小分塊之若干值,及根據該界定順序來將經存取之該等值配置成一向量;及將對應於該一或多個分塊之各者之一或多個向量配置成一平行配置以產生該展平輸入串流之該組平行向量。
- 如請求項6之方法,其中該界定順序係一列優先順序、一行優先順序及一走道優先順序之至少一者,其中該走道優先順序首先沿對應於三維(3D)分塊之一深度之一軸線且隨後沿對應於該3D分塊之一寬度及該3D分塊之一高度之軸線存取該3D分塊中之元素。
- 如請求項1之方法,其中藉由以下操作來形成該擴展核心:針對該核心之一第一維,產生該核心之各單維向量之值之一方形區塊,其包含該單維向量之所有旋轉;針對該核心之各額外維:將該核心之一緊接先前維之區塊分組成若干組區塊,各組區塊包含沿平行於該額外維之一軸線之一向量對準之該緊接先前維之區塊;針對該額外維,產生值之一或多個區塊,該一或多個區塊之各者包含該緊接先前維之該等區塊組之各者內之區塊之所有旋轉;及輸出對應於該核心之該等額外維中之一最後維的值之一區塊作為該擴展核心。
- 如請求項8之方法,其中該核心之各單維向量係一唯一向量,該唯一向量係該核心之一列、該核心之一行、該核心之一對角線及該核心之一走道之至少一者,其中該核心之該走道係沿對應於該核心之一深度之一軸線對準之該核心之一向量。
- 如請求項1之方法,其中該複數個向量之各向量內之值對應於相對定址值,各相對定址值係存取該展平輸入串流中之一個別輸入值之一位置之一指示,該展平輸入串流包含自該輸入張量產生之該組平行向量,且該相對定址值指定該組平行向量中之一平行向量。
- 一種用於矩陣運算之系統,其包括:一控制型樣產生器,其經組態以藉由基於一控制型樣中之各位置之座標及一核心之各維之一大小來產生該控制型樣之該位置之一值,藉以產生該控制型樣;及一處理器及一乘累加單元,該乘累加單元經組態以:自一緩衝器存取包含一組平行向量之一展平輸入串流,該組平行向量之各向量表示用於與該核心廻旋以產生一輸出激勵的一輸入張量之一唯一核心大小分塊之一組輸入值,接收藉由置換來自該核心之值所產生之一擴展核心,該擴展核心具有各對應於該輸出激勵的一核心大小分塊之一輸出值位置的複數個核心向量,接收包含複數個向量之該控制型樣,該等向量之各者對應於該輸出激勵的該核心大小分塊之該輸出值位置,該等向量之各者包含指示該組平行向量之一平行向量存取輸入值用於該廻旋之延遲值,該控制型樣之該等向量之一數目對應於該輸出激勵之該核心大小分塊中之輸出值位置之一數目,該控制型樣之該等向量之各者中之該等延遲值之各者指示存取該展平輸入串流中之一個別輸入值之一延遲量,且該等延遲值之各者指定該組平行向量之一個平行向量,及 針對該輸出激勵的各核心大小分塊之各輸出值位置,產生包含由該控制型樣之該等向量之各者之該等延遲值選擇之該展平輸入串流之值的一第一向量與對應於該擴展核心之該複數個核心向量的對應於該輸出值位置之一核心向量的一第二向量之間的一點積。
- 如請求項11之系統,其中該輸入張量具有複數個通道,該核心具有複數個濾波器,且該複數個通道之各通道與該複數個濾波器之一或多個濾波器廻旋以產生具有複數個輸出特徵之該輸出激勵。
- 如請求項11之系統,其中該乘累加單元經進一步組態以:使用填補值來填補該輸入張量,使得該輸入張量之該廻旋之該輸出激勵之輸出值之位置具有與該輸入張量中之輸入值之所有位置匹配之位置,且使得該輸出激勵之一大小匹配該輸入張量之一大小。
- 如請求項11之系統,其中該乘累加單元經進一步組態以:使用填補值來填補該輸入張量,使得該輸入張量之各維之一大小係該核心之一對應維之一整數倍。
- 如請求項11之系統,其中該乘累加單元經進一步組態以:使用具有等於該核心之一對應維中之該核心之大小之一寬度的填補值來填補該輸入張量之各維之一後緣。
- 如請求項11之系統,其中藉由以下操作來產生該展平輸入串流: 針對該輸入張量之一或多個核心大小分塊之各者:依一界定順序存取該核心大小分塊之若干值,及根據該界定順序來將經存取之該等值配置成一向量;及將對應於一或多個分塊之各者之該一或多個向量配置成一平行配置以產生該展平輸入串流之該組平行向量。
- 一種用於矩陣運算之系統,其包括:一控制型樣產生器,其經組態以藉由基於一控制型樣中之各位置之座標及一核心之各維之一大小來產生該控制型樣之該位置之一值,藉以產生該控制型樣;及一處理器及一乘累加單元,該乘累加單元經組態以:自一緩衝器存取包含一組平行向量之一展平輸入串流,該組平行向量之各向量表示用於與該核心廻旋以產生一輸出激勵的一輸入張量之一唯一核心大小分塊之一組輸入值,接收藉由置換來自該核心之值所產生之一擴展核心,該擴展核心具有各對應於該輸出激勵的一核心大小分塊之一輸出值位置的複數個核心向量,接收包含複數個向量之該控制型樣,該等向量之各者對應於該輸出激勵的該核心大小分塊之該輸出值位置,該等向量之各者包含指示該組平行向量之一平行向量存取輸入值用於該廻旋之延遲值,及該控制型樣之該等向量之一數目對應於該輸出激勵之該核心大小分塊中之輸出值位置之一數目,該控制型樣之該等向量之各者中之該等延遲值之各者指示存取該展平輸入串流中之一個別輸入值之一 延遲量,且該等延遲值之各者指定該組平行向量之一個平行向量,及針對該輸出激勵的各核心大小分塊之各輸出值位置,產生包含由該控制型樣之該等向量之各者之該等延遲值選擇之該展平輸入串流之值的一第一向量與對應於該擴展核心之該複數個核心向量的對應於該輸出值位置之一核心向量的一第二向量之間的一點積,其中藉由以下操作來形成該擴展核心:針對該核心之一第一維,產生該核心之各單維向量之值之一方形區塊,其包含該單維向量之所有旋轉;針對該核心之各額外維:將該核心之一緊接先前維之區塊分組成若干組區塊,各組區塊包含沿平行於該額外維之一軸線之一向量對準之該緊接先前維之區塊;針對該額外維,產生值之一或多個區塊,該一或多個區塊之各者包含該緊接先前維之該等區塊組之各者內之區塊之所有旋轉;及輸出對應於該核心之該等額外維中之一最後維的值之一區塊作為該擴展核心。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862769444P | 2018-11-19 | 2018-11-19 | |
US62/769,444 | 2018-11-19 | ||
US16/686,870 | 2019-11-18 | ||
US16/686,870 US11537687B2 (en) | 2018-11-19 | 2019-11-18 | Spatial locality transform of matrices |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202034191A TW202034191A (zh) | 2020-09-16 |
TWI841632B true TWI841632B (zh) | 2024-05-11 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180157966A1 (en) | 2016-12-01 | 2018-06-07 | Via Alliance Semiconductor Co., Ltd. | Neural network unit that performs efficient 3-dimensional convolutions |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180157966A1 (en) | 2016-12-01 | 2018-06-07 | Via Alliance Semiconductor Co., Ltd. | Neural network unit that performs efficient 3-dimensional convolutions |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102565098B1 (ko) | 행렬들의 공간적 장소 변환 | |
US11886536B2 (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
CN107992943B (zh) | 接收输入数据的方法、介质和系统、硬件逻辑及制造方法 | |
TWI777442B (zh) | 用於傳送資料之設備、方法及系統 | |
WO2020132593A1 (en) | Neural network processor | |
TW202123093A (zh) | 實行卷積運算的系統及方法 | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
TWI841632B (zh) | 用於矩陣的空間地域轉換之方法及系統 | |
TWI841631B (zh) | 用於矩陣的空間地域轉換之方法及處理器電路 | |
US20240160692A1 (en) | Implementing a scatter function on a neural network accelerator | |
GB2623140A (en) | Methods and systems for performing a sparse submanifold convolution using an NNA | |
GB2596239A (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
CN117952156A (zh) | 在神经网络加速器上实现分散函数 |