相關(guān)申請(qǐng)的交叉引用
本申請(qǐng)依據(jù)35u.s.c.§119(e)要求于2015年2月13日提交的題為“convolutionmatrixmultiplywithcallbackfordeeptilingfordeepconvolutionalneuralnetworks(具有回調(diào)的卷積矩陣相乘以用于深度卷積神經(jīng)網(wǎng)絡(luò)的深度瓦片化)”的美國臨時(shí)專利申請(qǐng)no.62/116,306以及于2015年5月20日提交的題為“convolutionmatrixmultiplywithcallbackfordeeptilingfordeepconvolutionalneuralnetworks(具有回調(diào)的卷積矩陣相乘以用于深度卷積神經(jīng)網(wǎng)絡(luò)的深度瓦片化)”的美國臨時(shí)專利申請(qǐng)no.62/164,493的權(quán)益,其公開內(nèi)容通過援引整體明確納入于此。
背景技術(shù):
領(lǐng)域
本公開的某些方面一般涉及神經(jīng)系統(tǒng)工程,尤其涉及用于卷積矩陣相乘操作的高效處理的系統(tǒng)和方法。
背景技術(shù)
可包括一群互連的人工神經(jīng)元(例如,神經(jīng)元模型)的人工神經(jīng)網(wǎng)絡(luò)是一種計(jì)算設(shè)備或者表示將由計(jì)算設(shè)備執(zhí)行的方法。人工神經(jīng)網(wǎng)絡(luò)可具有生物學(xué)神經(jīng)網(wǎng)絡(luò)中的對(duì)應(yīng)的結(jié)構(gòu)和/或功能。
卷積神經(jīng)網(wǎng)絡(luò)是一種前饋人工神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)可包括可被配置在感受野的神經(jīng)元層。卷積神經(jīng)網(wǎng)絡(luò)(cnn)具有眾多應(yīng)用。具體地,cnn已被廣泛使用于模式識(shí)別和分類領(lǐng)域。
深度學(xué)習(xí)架構(gòu)(諸如,深度置信網(wǎng)絡(luò)和深度卷積網(wǎng)絡(luò))已經(jīng)被越來越多地用于對(duì)象識(shí)別應(yīng)用中。類似于卷積神經(jīng)網(wǎng)絡(luò),這些深度學(xué)習(xí)架構(gòu)中的計(jì)算可在處理節(jié)點(diǎn)群體上分發(fā),其可被配置在一個(gè)或多個(gè)計(jì)算鏈中。這些多層架構(gòu)提供更大靈活性,因?yàn)樗鼈兛梢砸淮伪挥?xùn)練一層并可使用反向傳播進(jìn)行微調(diào)。其他模型也可用于對(duì)象識(shí)別。例如,支持向量機(jī)(svm)是可被應(yīng)用于分類的學(xué)習(xí)工具。支持向量機(jī)包括對(duì)數(shù)據(jù)進(jìn)行分類的分開的超平面(例如,決策邊界)。該超平面由監(jiān)督式學(xué)習(xí)定義。期望的超平面增加訓(xùn)練數(shù)據(jù)的余裕。換言之,超平面應(yīng)該具有到訓(xùn)練示例的最大的最小距離。
盡管這些解決方案在數(shù)個(gè)分類基準(zhǔn)上取得了優(yōu)異的結(jié)果,但它們的計(jì)算復(fù)雜度可能極其高。另外,模型的訓(xùn)練是有挑戰(zhàn)性的。
概述
在本公開的一個(gè)方面,公開了一種進(jìn)行圖像和濾波器到虛擬矩陣的地址轉(zhuǎn)譯以通過矩陣乘法執(zhí)行卷積的方法。該方法包括接收?qǐng)D像和濾波器。每一個(gè)圖像和濾波器具有存儲(chǔ)器地址。該方法還包括基于所計(jì)算的經(jīng)線性化圖像和所計(jì)算的經(jīng)線性化濾波器將存儲(chǔ)器地址映射到虛擬矩陣地址。該方法進(jìn)一步包括將虛擬矩陣中的數(shù)據(jù)轉(zhuǎn)換成預(yù)定義內(nèi)部格式。該方法還進(jìn)一步包括基于虛擬矩陣地址通過預(yù)定義內(nèi)部格式的數(shù)據(jù)的矩陣乘法來卷積圖像。
本公開的另一方面涉及一種設(shè)備,包括用于接收?qǐng)D像和濾波器的裝置。每一個(gè)圖像和濾波器具有存儲(chǔ)器地址。該設(shè)備還包括用于基于所計(jì)算的經(jīng)線性化圖像和所計(jì)算的經(jīng)線性化濾波器將存儲(chǔ)器地址映射到虛擬矩陣地址的裝置。該設(shè)備進(jìn)一步包括用于將虛擬矩陣中的數(shù)據(jù)轉(zhuǎn)換成預(yù)定義內(nèi)部格式的裝置。該設(shè)備還進(jìn)一步包括用于基于虛擬矩陣地址通過預(yù)定義內(nèi)部格式的數(shù)據(jù)的矩陣乘法來卷積圖像的裝置。
在本公開的另一方面,公開了一種用于進(jìn)行圖像和濾波器到虛擬矩陣的地址轉(zhuǎn)譯以通過矩陣乘法執(zhí)行卷積的計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品具有其上記錄有非瞬態(tài)程序代碼的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)。該程序代碼由處理器執(zhí)行且包括用于接收?qǐng)D像和濾波器的程序代碼。每一個(gè)圖像和濾波器具有存儲(chǔ)器地址。該程序代碼還包括用于基于所計(jì)算的經(jīng)線性化圖像和所計(jì)算的經(jīng)線性化濾波器將存儲(chǔ)器地址映射到虛擬矩陣地址的程序代碼。該程序代碼進(jìn)一步包括用于將虛擬矩陣中的數(shù)據(jù)轉(zhuǎn)換成預(yù)定義內(nèi)部格式的程序代碼。該程序代碼還進(jìn)一步包括用于基于虛擬矩陣地址通過預(yù)定義內(nèi)部格式的數(shù)據(jù)的矩陣乘法來卷積圖像的程序代碼。
本公開的另一方面涉及一種進(jìn)行圖像和濾波器到虛擬矩陣的地址轉(zhuǎn)譯以通過矩陣乘法執(zhí)行卷積的裝置,該裝置具有存儲(chǔ)器以及耦合至該存儲(chǔ)器的一個(gè)或多個(gè)處理器。該(諸)處理器被配置成接收?qǐng)D像和濾波器。每一個(gè)圖像和濾波器具有存儲(chǔ)器地址。該(諸)處理器還被配置成基于所計(jì)算的經(jīng)線性化圖像和所計(jì)算的經(jīng)線性化濾波器將存儲(chǔ)器地址映射到虛擬矩陣地址。該(諸)處理器被進(jìn)一步配置成將虛擬矩陣中的數(shù)據(jù)轉(zhuǎn)換成預(yù)定義內(nèi)部格式。該(諸)處理器還被進(jìn)一步配置成基于虛擬矩陣地址通過預(yù)定義內(nèi)部格式的數(shù)據(jù)的矩陣乘法來卷積圖像。
在本公開的一個(gè)方面,公開了一種由深度卷積網(wǎng)絡(luò)處理輸入源的方法。該方法包括由深度卷積網(wǎng)絡(luò)的多個(gè)層一次一個(gè)部分地處理輸入源以創(chuàng)建針對(duì)每一個(gè)部分的輸出。該方法還包括將每一個(gè)部分的輸出聚集成聚集輸出。該方法進(jìn)一步包括由其余層處理聚集輸出。
本公開的另一方面涉及一種設(shè)備,包括用于由深度卷積網(wǎng)絡(luò)的多個(gè)層一次一個(gè)部分地處理輸入源以創(chuàng)建針對(duì)每一個(gè)部分的輸出的裝置。該設(shè)備還包括用于將每一個(gè)部分的輸出聚集成聚集輸出的裝置。該設(shè)備進(jìn)一步包括用于由其余層處理聚集輸出的裝置。
在本公開的另一方面,公開了一種用于由深度卷積網(wǎng)絡(luò)處理輸入源的計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品具有其上記錄有非瞬態(tài)程序代碼的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)。該程序代碼由處理器執(zhí)行并且包括用于由深度卷積網(wǎng)絡(luò)的多個(gè)層一次一個(gè)部分地處理輸入源以創(chuàng)建針對(duì)每一個(gè)部分的輸出的程序代碼。該程序代碼還包括用于將每一個(gè)部分的輸出聚集成聚集輸出的程序代碼。該程序代碼進(jìn)一步包括用于由其余層處理聚集輸出的程序代碼。
本公開的另一方面涉及一種用于由深度卷積網(wǎng)絡(luò)處理輸入源的裝置,該裝置具有存儲(chǔ)器以及耦合至該存儲(chǔ)器的一個(gè)或多個(gè)處理器。該(諸)處理器被配置成通過深度卷積網(wǎng)絡(luò)的多個(gè)層一次一個(gè)部分地處理輸入源以創(chuàng)建針對(duì)每一個(gè)部分的輸出。該(諸)處理器還被配置成將每一個(gè)部分的輸出聚集成聚集輸出。該(諸)處理器被進(jìn)一步配置成由其余層處理聚集輸出。
在本公開的一個(gè)方面,公開了一種用于由深度卷積網(wǎng)絡(luò)處理輸入源的方法。該方法包括接收?qǐng)D像和濾波器。每一個(gè)圖像和濾波器具有存儲(chǔ)器地址。該方法還包括將圖像的一部分和濾波器的一部分轉(zhuǎn)譯成虛擬矩陣。該方法進(jìn)一步包括基于虛擬矩陣地址通過矩陣乘法來卷積虛擬矩陣以生成經(jīng)卷積圖像。該方法還進(jìn)一步包括由深度卷積網(wǎng)絡(luò)的多個(gè)層處理經(jīng)卷積圖像以創(chuàng)建針對(duì)每一個(gè)部分的輸出。
本公開的另一方面涉及一種設(shè)備,包括用于接收?qǐng)D像和濾波器的裝置。每一個(gè)圖像和濾波器具有存儲(chǔ)器地址。該設(shè)備還包括用于將圖像的一部分和濾波器的一部分轉(zhuǎn)譯成虛擬矩陣的裝置。該設(shè)備進(jìn)一步包括用于基于虛擬矩陣地址通過矩陣乘法來卷積虛擬矩陣以生成經(jīng)卷積圖像的裝置。該設(shè)備還進(jìn)一步包括用于由深度卷積網(wǎng)絡(luò)的多個(gè)層處理經(jīng)卷積圖像以創(chuàng)建針對(duì)每一個(gè)部分的輸出的裝置。
在本公開的另一方面,一種計(jì)算機(jī)程序產(chǎn)品通過深度卷積網(wǎng)絡(luò)處理輸入源。該計(jì)算機(jī)程序產(chǎn)品具有其上記錄有非瞬態(tài)程序代碼的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)。該程序代碼由處理器執(zhí)行且包括用于接收?qǐng)D像和濾波器的程序代碼。每一個(gè)圖像和濾波器具有存儲(chǔ)器地址。該程序代碼還包括用于將圖像的一部分和濾波器的一部分轉(zhuǎn)譯成虛擬矩陣的程序代碼。該程序代碼進(jìn)一步包括用于基于虛擬矩陣地址通過矩陣乘法來卷積虛擬矩陣以生成經(jīng)卷積圖像的程序代碼。該程序代碼還進(jìn)一步包括用于由深度卷積網(wǎng)絡(luò)的多個(gè)層處理經(jīng)卷積圖像以創(chuàng)建針對(duì)每一個(gè)部分的輸出的程序代碼。
本公開的另一方面涉及一種用于由深度卷積網(wǎng)絡(luò)處理輸入源的裝置,該裝置具有存儲(chǔ)器以及耦合至該存儲(chǔ)器的一個(gè)或多個(gè)處理器。該(諸)處理器被配置成接收?qǐng)D像和濾波器。每一個(gè)圖像和濾波器具有存儲(chǔ)器地址。該(諸)處理器還被配置成將圖像的一部分和濾波器的一部分轉(zhuǎn)譯成虛擬矩陣。該(諸)處理器被進(jìn)一步配置成基于虛擬矩陣地址通過矩陣乘法來卷積虛擬矩陣以生成經(jīng)卷積圖像。該(諸)處理器還被進(jìn)一步配置成由深度卷積網(wǎng)絡(luò)的多個(gè)層處理經(jīng)卷積圖像以創(chuàng)建針對(duì)每一個(gè)部分的輸出。
本公開的附加特征和優(yōu)點(diǎn)將在下文描述。本領(lǐng)域技術(shù)人員應(yīng)該領(lǐng)會(huì),本公開可容易地被用作修改或設(shè)計(jì)用于實(shí)施與本公開相同的目的的其他結(jié)構(gòu)的基礎(chǔ)。本領(lǐng)域技術(shù)人員還應(yīng)認(rèn)識(shí)到,這樣的等效構(gòu)造并不脫離所附權(quán)利要求中所闡述的本公開的教導(dǎo)。被認(rèn)為是本公開的特性的新穎特征在其組織和操作方法兩方面連同進(jìn)一步的目的和優(yōu)點(diǎn)在結(jié)合附圖來考慮以下描述時(shí)將被更好地理解。然而,要清楚理解的是,提供每一幅附圖均僅用于解說和描述目的,且無意作為對(duì)本公開的限定的定義。
附圖簡要說明
在結(jié)合附圖理解下面闡述的詳細(xì)描述時(shí),本公開的特征、本質(zhì)和優(yōu)點(diǎn)將變得更加明顯,在附圖中,相同附圖標(biāo)記始終作相應(yīng)標(biāo)識(shí)。
圖1解說了根據(jù)本公開的某些方面的使用片上系統(tǒng)(soc)(包括通用處理器)來設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)的示例實(shí)現(xiàn)。
圖2解說了根據(jù)本公開的各方面的系統(tǒng)的示例實(shí)現(xiàn)。
圖3a是解說根據(jù)本公開的各方面的神經(jīng)網(wǎng)絡(luò)的示圖。
圖3b是解說根據(jù)本公開的各方面的示例性深度卷積網(wǎng)絡(luò)(dcn)的框圖。
圖4是解說根據(jù)本公開的各方面的可將人工智能(ai)功能模塊化的示例性軟件架構(gòu)的框圖。
圖5是解說根據(jù)本公開的各方面的智能手機(jī)上ai應(yīng)用的運(yùn)行時(shí)操作的框圖。
圖6a解說了常規(guī)矩陣乘法的示例。
圖6b解說了常規(guī)圖像和濾波線性化的示例。
圖7解說了矩陣元素向內(nèi)部存儲(chǔ)器格式的常規(guī)轉(zhuǎn)換的示例。
圖8解說了用于執(zhí)行矩陣乘法的常規(guī)系統(tǒng)的示例。
圖9解說了用于執(zhí)行圖像卷積的常規(guī)系統(tǒng)的示例。
圖10a和10b解說了根據(jù)本公開的一方面的用于執(zhí)行圖像卷積的系統(tǒng)的示例。
圖11解說了根據(jù)本公開的一方面的深度瓦片化的示例。
圖12-15是解說根據(jù)本公開的各方面的方法的流程圖。
詳細(xì)描述
以下結(jié)合附圖闡述的詳細(xì)描述旨在作為各種配置的描述,而無意表示可實(shí)踐本文中所描述的概念的僅有的配置。本詳細(xì)描述包括具體細(xì)節(jié)以便提供對(duì)各種概念的透徹理解。然而,對(duì)于本領(lǐng)域技術(shù)人員將顯而易見的是,沒有這些具體細(xì)節(jié)也可實(shí)踐這些概念。在一些實(shí)例中,以框圖形式示出眾所周知的結(jié)構(gòu)和組件以避免湮沒此類概念。
基于本教導(dǎo),本領(lǐng)域技術(shù)人員應(yīng)領(lǐng)會(huì),本公開的范圍旨在覆蓋本公開的任何方面,不論其是與本公開的任何其他方面相獨(dú)立地還是組合地實(shí)現(xiàn)的。例如,可以使用所闡述的任何數(shù)目的方面來實(shí)現(xiàn)裝置或?qū)嵺`方法。另外,本公開的范圍旨在覆蓋使用作為所闡述的本公開的各個(gè)方面的補(bǔ)充或者與之不同的其他結(jié)構(gòu)、功能性、或者結(jié)構(gòu)及功能性來實(shí)踐的此類裝置或方法。應(yīng)當(dāng)理解,所披露的本公開的任何方面可由權(quán)利要求的一個(gè)或多個(gè)元素來實(shí)施。
措辭“示例性”在本文中用于表示“用作示例、實(shí)例或解說”。本文中描述為“示例性”的任何方面不必被解釋為優(yōu)于或勝過其他方面。
盡管本文描述了特定方面,但這些方面的眾多變體和置換落在本公開的范圍之內(nèi)。雖然提到了優(yōu)選方面的一些益處和優(yōu)點(diǎn),但本公開的范圍并非旨在被限定于特定益處、用途或目標(biāo)。相反,本公開的各方面旨在能寬泛地應(yīng)用于不同的技術(shù)、系統(tǒng)配置、網(wǎng)絡(luò)和協(xié)議,其中一些作為示例在附圖以及以下對(duì)優(yōu)選方面的描述中解說。詳細(xì)描述和附圖僅僅解說本公開而非限定本公開,本公開的范圍由所附權(quán)利要求及其等效技術(shù)方案來定義。
在常規(guī)系統(tǒng)中,濾波可修改或增強(qiáng)圖像。另外,濾波器可被用來確定圖像的一部分中是否存在特定元素。例如,濾波器可確定在圖像的3x3像素部分中是否存在水平線。因此,通過應(yīng)用各種類型的濾波器,系統(tǒng)可確定圖像中是否存在特定對(duì)象。相應(yīng)地,濾波可被用來對(duì)圖像進(jìn)行分類。
卷積可被指定用于圖像的線性濾波。具體而言,卷積輸出是輸入像素的加權(quán)和。權(quán)重矩陣可被稱為卷積內(nèi)核或?yàn)V波器。卷積可通過線性化圖像和線性化濾波器的矩陣相乘來獲得。
以矩陣相乘的方式來改寫線性代數(shù)問題因相比于其他線性代數(shù)本原的改進(jìn)性能而往往是合乎期望的。通過改變樸素的卷積實(shí)現(xiàn)的環(huán)路排序,可通過將卷積改寫為點(diǎn)積(其可被變換成矩陣乘積)來改進(jìn)性能。
樸素的實(shí)現(xiàn)引入了附加步驟,其中原始輸入(諸如,圖像和濾波器)被變換成矩陣輸入。這些附加步驟指定雙副本,從而矩陣輸入被重打包進(jìn)預(yù)定的存儲(chǔ)器結(jié)構(gòu),諸如因架構(gòu)而異的不透明內(nèi)部存儲(chǔ)器布局。
本公開的各方面涉及通過按期望創(chuàng)建虛擬矩陣和將經(jīng)卷積矩陣直接寫入內(nèi)部存儲(chǔ)器布局來移除前述雙副本。也就是說,虛擬矩陣的創(chuàng)建可繞過線性化過程。
圖1解說根據(jù)本公開的某些方面使用片上系統(tǒng)(soc)100進(jìn)行前述的虛擬矩陣創(chuàng)建的示例實(shí)現(xiàn),soc100可包括通用處理器(cpu)或多核通用處理器(cpu)102。變量(例如,神經(jīng)信號(hào)和突觸權(quán)重)、與計(jì)算設(shè)備相關(guān)聯(lián)的系統(tǒng)參數(shù)(例如,帶有權(quán)重的神經(jīng)網(wǎng)絡(luò))、延遲、頻率槽信息、以及任務(wù)信息可被存儲(chǔ)在與神經(jīng)處理單元(npu)108相關(guān)聯(lián)的存儲(chǔ)器塊、與cpu102相關(guān)聯(lián)的存儲(chǔ)器塊、與圖形處理單元(gpu)104相關(guān)聯(lián)的存儲(chǔ)器塊、與數(shù)字信號(hào)處理器(dsp)106相關(guān)聯(lián)的存儲(chǔ)器塊、專用存儲(chǔ)器塊118中,或者可跨多個(gè)塊分布。在通用處理器102處執(zhí)行的指令可從與cpu102相關(guān)聯(lián)的程序存儲(chǔ)器加載或可從專用存儲(chǔ)器塊118加載。
soc100還可包括為具體功能定制的附加處理塊(諸如gpu104、dsp106、連通性塊110(其可包括第四代長期演進(jìn)(4glte)連通性、無執(zhí)照wi-fi連通性、usb連通性、藍(lán)牙連通性等))以及例如可檢測和識(shí)別姿勢的多媒體處理器112。在一種實(shí)現(xiàn)中,npu實(shí)現(xiàn)在cpu、dsp、和/或gpu中。soc100還可包括傳感器處理器114、圖像信號(hào)處理器(isp)、和/或?qū)Ш?20(其可包括全球定位系統(tǒng))。
soc100可基于arm指令集。在本公開的一方面,加載到通用處理器102中的指令可包括用于接收?qǐng)D像和濾波器的代碼,圖像和濾波器各自具有存儲(chǔ)器地址。加載到通用處理器102中的指令還可包括用于至少部分地基于所計(jì)算的經(jīng)線性化圖像和所計(jì)算的經(jīng)線性化濾波器將存儲(chǔ)器地址映射到虛擬矩陣地址的代碼。加載到通用處理器102中的指令可進(jìn)一步包括用于將虛擬矩陣中的數(shù)據(jù)轉(zhuǎn)換成預(yù)定義內(nèi)部格式的代碼。加載到通用處理器102中的指令可進(jìn)一步還包括用于至少部分地基于虛擬矩陣地址通過預(yù)定義內(nèi)部格式的數(shù)據(jù)的矩陣乘法來卷積圖像的代碼。
在本公開的另一方面,加載到通用處理器102中的指令可包括用于通過深度卷積網(wǎng)絡(luò)的多個(gè)層一次處理輸入源的一部分以創(chuàng)建針對(duì)每一個(gè)部分的輸出的代碼。加載到通用處理器102中的指令還可包括用于將每一個(gè)部分的輸出聚集到聚集輸出中的代碼。加載到通用處理器102中的指令可進(jìn)一步包括用于由多個(gè)其余層處理聚集輸出的代碼。
在本公開的又一方面,加載到通用處理器102中的指令可包括用于接收?qǐng)D像和濾波器的代碼,圖像和濾波器各自具有存儲(chǔ)器地址。加載到通用處理器102中的指令還可包括用于將圖像的一部分和濾波器的一部分轉(zhuǎn)譯成虛擬矩陣的代碼。加載到通用處理器102中的指令可進(jìn)一步包括用于至少部分地基于虛擬矩陣地址通過矩陣乘法來卷積虛擬矩陣以生成經(jīng)卷積圖像的代碼。加載到通用處理器102中的指令可進(jìn)一步還包括用于由深度卷積網(wǎng)絡(luò)的多個(gè)層處理經(jīng)卷積圖像以創(chuàng)建針對(duì)每一個(gè)部分的輸出的代碼。
圖2解說了根據(jù)本公開的某些方面的系統(tǒng)200的示例實(shí)現(xiàn)。如圖2中所解說的,系統(tǒng)200可具有可執(zhí)行本文所描述的方法的各種操作的多個(gè)局部處理單元202。每個(gè)局部處理單元202可包括局部狀態(tài)存儲(chǔ)器204和可存儲(chǔ)神經(jīng)網(wǎng)絡(luò)的參數(shù)的局部參數(shù)存儲(chǔ)器206。另外,局部處理單元202可具有用于存儲(chǔ)局部模型程序的局部(神經(jīng)元)模型程序(lmp)存儲(chǔ)器208、用于存儲(chǔ)局部學(xué)習(xí)程序的局部學(xué)習(xí)程序(llp)存儲(chǔ)器210、以及局部連接存儲(chǔ)器212。此外,如圖2中所解說的,每個(gè)局部處理單元202可與用于為該局部處理單元的各局部存儲(chǔ)器提供配置的配置處理器單元214對(duì)接,并且與提供各局部處理單元202之間的路由的路由連接處理單元216對(duì)接。
深度學(xué)習(xí)架構(gòu)可通過學(xué)習(xí)在每一層中以逐次更高的抽象程度來表示輸入、藉此構(gòu)建輸入數(shù)據(jù)的有用特征表示來執(zhí)行對(duì)象識(shí)別任務(wù)。以此方式,深度學(xué)習(xí)解決了傳統(tǒng)機(jī)器學(xué)習(xí)的主要瓶頸。在深度學(xué)習(xí)出現(xiàn)之前,用于對(duì)象識(shí)別問題的機(jī)器學(xué)習(xí)辦法可能嚴(yán)重依賴人類工程設(shè)計(jì)的特征,或許與淺分類器相結(jié)合。淺分類器可以是兩類線性分類器,例如,其中可將特征向量分量的加權(quán)和與閾值作比較以預(yù)測輸入屬于哪一類。人類工程設(shè)計(jì)的特征可以是由擁有領(lǐng)域?qū)I(yè)知識(shí)的工程師針對(duì)具體問題領(lǐng)域定制的模版或內(nèi)核。相反,深度學(xué)習(xí)架構(gòu)可學(xué)習(xí)以表示與人類工程師可能會(huì)設(shè)計(jì)的相似的特征,但它是通過訓(xùn)練來學(xué)習(xí)的。另外,深度網(wǎng)絡(luò)可以學(xué)習(xí)以表示和識(shí)別人類可能還沒有考慮過的新類型的特征。
深度學(xué)習(xí)架構(gòu)可以學(xué)習(xí)特征階層。例如,如果向第一層呈遞視覺數(shù)據(jù),則第一層可學(xué)習(xí)以識(shí)別輸入流中的相對(duì)簡單的特征(諸如邊)。在另一示例中,如果向第一層呈遞聽覺數(shù)據(jù),則第一層可學(xué)習(xí)以識(shí)別特定頻率中的頻譜功率。取第一層的輸出作為輸入的第二層可以學(xué)習(xí)以識(shí)別特征組合,諸如對(duì)于視覺數(shù)據(jù)識(shí)別簡單形狀或?qū)τ诼犛X數(shù)據(jù)識(shí)別聲音組合。例如,更高層可學(xué)習(xí)以表示視覺數(shù)據(jù)中的復(fù)雜形狀或聽覺數(shù)據(jù)中的詞語。再高層可學(xué)習(xí)以識(shí)別常見視覺對(duì)象或口語短語。
深度學(xué)習(xí)架構(gòu)在被應(yīng)用于具有自然階層結(jié)構(gòu)的問題時(shí)可能表現(xiàn)特別好。例如,機(jī)動(dòng)交通工具的分類可受益于首先學(xué)習(xí)以識(shí)別輪子、擋風(fēng)玻璃、以及其他特征。這些特征可在更高層以不同方式被組合以識(shí)別轎車、卡車和飛機(jī)。
神經(jīng)網(wǎng)絡(luò)可被設(shè)計(jì)成具有各種連通性模式。在前饋網(wǎng)絡(luò)中,信息從較低層被傳遞到較高層,其中給定層中的每個(gè)神經(jīng)元向更高層中的神經(jīng)元進(jìn)行傳達(dá)。如上所述,可在前饋網(wǎng)絡(luò)的相繼層中構(gòu)建階層式表示。神經(jīng)網(wǎng)絡(luò)還可具有回流或反饋(也被稱為自頂向下(top-down))連接。在回流連接中,來自給定層中的神經(jīng)元的輸出可被傳達(dá)給相同層中的另一神經(jīng)元?;亓骷軜?gòu)可有助于識(shí)別跨越不止一個(gè)按順序遞送給該神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)組塊的模式。從給定層中的神經(jīng)元到較低層中的神經(jīng)元的連接被稱為反饋(或自頂向下)連接。當(dāng)高層級(jí)概念的識(shí)別可輔助辨別輸入的特定低層級(jí)特征時(shí),具有許多反饋連接的網(wǎng)絡(luò)可能是有助益的。
參照?qǐng)D3a,神經(jīng)網(wǎng)絡(luò)的各層之間的連接可以是全連接的(302)或局部連接的(304)。在全連接網(wǎng)絡(luò)302中,第一層中的神經(jīng)元可將它的輸出傳達(dá)給第二層中的每個(gè)神經(jīng)元,從而第二層中的每個(gè)神經(jīng)元將從第一層中的每個(gè)神經(jīng)元接收輸入。替換地,在局部連接網(wǎng)絡(luò)304中,第一層中的神經(jīng)元可連接至第二層中有限數(shù)目的神經(jīng)元。卷積網(wǎng)絡(luò)306可以是局部連接的,并且被進(jìn)一步配置成使得與針對(duì)第二層中每個(gè)神經(jīng)元的輸入相關(guān)聯(lián)的連接強(qiáng)度被共享(例如,308)。更一般化地,網(wǎng)絡(luò)的局部連接層可被配置成使得一層中的每個(gè)神經(jīng)元將具有相同或相似的連通性模式,但其連接強(qiáng)度可具有不同的值(例如,310、312、314和316)。局部連接的連通性模式可能在更高層中產(chǎn)生空間上相異的感受野,這是由于給定區(qū)域中的更高層神經(jīng)元可接收到通過訓(xùn)練被調(diào)諧為到網(wǎng)絡(luò)的總輸入的受限部分的性質(zhì)的輸入。
局部連接的神經(jīng)網(wǎng)絡(luò)可能非常適合于其中輸入的空間位置有意義的問題。例如,被設(shè)計(jì)成識(shí)別來自車載相機(jī)的視覺特征的網(wǎng)絡(luò)300可發(fā)展具有不同性質(zhì)的高層神經(jīng)元,這取決于它們與圖像下部關(guān)聯(lián)還是與圖像上部關(guān)聯(lián)。例如,與圖像下部相關(guān)聯(lián)的神經(jīng)元可學(xué)習(xí)以識(shí)別車道標(biāo)記,而與圖像上部相關(guān)聯(lián)的神經(jīng)元可學(xué)習(xí)以識(shí)別交通信號(hào)燈、交通標(biāo)志等。
dcn可以用受監(jiān)督式學(xué)習(xí)來訓(xùn)練。在訓(xùn)練期間,dcn可被呈遞圖像(諸如限速標(biāo)志的經(jīng)裁剪圖像326),并且可隨后計(jì)算“前向傳遞(forwardpass)”以產(chǎn)生輸出322。輸出322可以是對(duì)應(yīng)于特征(諸如“標(biāo)志”、“60”、和“100”)的值向量。網(wǎng)絡(luò)設(shè)計(jì)者可能希望dcn在輸出特征向量中針對(duì)其中一些神經(jīng)元輸出高得分,例如與經(jīng)訓(xùn)練的網(wǎng)絡(luò)300的輸出322中所示的“標(biāo)志”和“60”對(duì)應(yīng)的那些神經(jīng)元。在訓(xùn)練之前,dcn產(chǎn)生的輸出很可能是不正確的,并且由此可計(jì)算實(shí)際輸出與目標(biāo)輸出之間的誤差。dcn的權(quán)重可隨后被調(diào)整以使得dcn的輸出得分與目標(biāo)更緊密地對(duì)準(zhǔn)。
為了調(diào)整權(quán)重,學(xué)習(xí)算法可為權(quán)重計(jì)算梯度向量。該梯度可指示在權(quán)重被略微調(diào)整情況下誤差將增加或減少的量。在頂層,該梯度可直接對(duì)應(yīng)于連接倒數(shù)第二層中的活化神經(jīng)元與輸出層中的神經(jīng)元的權(quán)重的值。在較低層中,該梯度可取決于權(quán)重的值以及所計(jì)算出的較高層的誤差梯度。權(quán)重可隨后被調(diào)整以減小誤差。這種調(diào)整權(quán)重的方式可被稱為“反向傳播”,因?yàn)槠渖婕霸谏窠?jīng)網(wǎng)絡(luò)中的反向傳遞(“backwardpass”)。
在實(shí)踐中,權(quán)重的誤差梯度可能是在少量示例上計(jì)算的,從而計(jì)算出的梯度近似于真實(shí)誤差梯度。這種近似方法可被稱為隨機(jī)梯度下降法。隨機(jī)梯度下降法可被重復(fù),直到整個(gè)系統(tǒng)可達(dá)成的誤差率已停止下降或直到誤差率已達(dá)到目標(biāo)水平。
在學(xué)習(xí)之后,dcn可被呈遞新圖像326并且在網(wǎng)絡(luò)中的前向傳遞可產(chǎn)生輸出322,其可被認(rèn)為是該dcn的推斷或預(yù)測。
深度置信網(wǎng)絡(luò)(dbn)是包括多層隱藏節(jié)點(diǎn)的概率性模型。dbn可被用于提取訓(xùn)練數(shù)據(jù)集的階層式表示。dbn可通過堆疊多層受限波爾茲曼機(jī)(rbm)來獲得。rbm是一類可在輸入集上學(xué)習(xí)概率分布的人工神經(jīng)網(wǎng)絡(luò)。由于rbm可在沒有關(guān)于每個(gè)輸入應(yīng)該被分類到哪個(gè)類的信息的情況下學(xué)習(xí)概率分布,因此rbm經(jīng)常被用于無監(jiān)督式學(xué)習(xí)。使用混合無監(jiān)督式和受監(jiān)督式范式,dbn的底部rbm可按無監(jiān)督方式被訓(xùn)練并且可以用作特征提取器,而頂部rbm可按受監(jiān)督方式(在來自先前層的輸入和目標(biāo)類的聯(lián)合分布上)被訓(xùn)練并且可用作分類器。
深度卷積網(wǎng)絡(luò)(dcn)是卷積網(wǎng)絡(luò)的網(wǎng)絡(luò),其配置有附加的池化和歸一化層。dcn已在許多任務(wù)上達(dá)成現(xiàn)有最先進(jìn)的性能。dcn可使用受監(jiān)督式學(xué)習(xí)來訓(xùn)練,其中輸入和輸出目標(biāo)兩者對(duì)于許多典范是已知的并被用于通過使用梯度下降法來修改網(wǎng)絡(luò)的權(quán)重。
dcn可以是前饋網(wǎng)絡(luò)。另外,如上所述,從dcn的第一層中的神經(jīng)元到下一更高層中的神經(jīng)元群的連接跨第一層中的神經(jīng)元被共享。dcn的前饋和共享連接可被利用于進(jìn)行快速處理。dcn的計(jì)算負(fù)擔(dān)可比例如類似大小的包括回流或反饋連接的神經(jīng)網(wǎng)絡(luò)小得多。
卷積網(wǎng)絡(luò)的每一層的處理可被認(rèn)為是空間不變模版或基礎(chǔ)投影。如果輸入首先被分解成多個(gè)通道,諸如彩色圖像的紅色、綠色和藍(lán)色通道,那么在該輸入上訓(xùn)練的卷積網(wǎng)絡(luò)可被認(rèn)為是三維的,其具有沿著該圖像的軸的兩個(gè)空間維度以及捕捉顏色信息的第三維度。卷積連接的輸出可被認(rèn)為在后續(xù)層318和320中形成特征圖,該特征圖(例如,320)中的每個(gè)元素從先前層(例如,318)中一定范圍的神經(jīng)元以及從該多個(gè)通道中的每一個(gè)通道接收輸入。特征圖中的值可以用非線性(諸如矯正)max(0,x)進(jìn)一步處理。來自毗鄰神經(jīng)元的值可被進(jìn)一步池化(這對(duì)應(yīng)于降采樣)并可提供附加的局部不變性以及維度縮減。還可通過特征圖中神經(jīng)元之間的側(cè)向抑制來應(yīng)用歸一化,其對(duì)應(yīng)于白化。
深度學(xué)習(xí)架構(gòu)的性能可隨著有更多被標(biāo)記的數(shù)據(jù)點(diǎn)變?yōu)榭捎没螂S著計(jì)算能力提高而提高。現(xiàn)代深度神經(jīng)網(wǎng)絡(luò)用比僅僅十五年前可供典型研究者使用的計(jì)算資源多數(shù)千倍的計(jì)算資源來例行地訓(xùn)練。新的架構(gòu)和訓(xùn)練范式可進(jìn)一步推升深度學(xué)習(xí)的性能。經(jīng)矯正的線性單元可減少被稱為梯度消失的訓(xùn)練問題。新的訓(xùn)練技術(shù)可減少過度擬合(over-fitting)并因此使更大的模型能夠達(dá)成更好的普遍化。封裝技術(shù)可抽象出給定的感受野中的數(shù)據(jù)并進(jìn)一步提升總體性能。
圖3b是解說示例性深度卷積網(wǎng)絡(luò)350的框圖。深度卷積網(wǎng)絡(luò)350可包括多個(gè)基于連通性和權(quán)重共享的不同類型的層。如圖3b所示,該示例性深度卷積網(wǎng)絡(luò)350包括多個(gè)卷積塊(例如,c1和c2)。每個(gè)卷積塊可配置有卷積層、歸一化層(lnorm)、和池化層。卷積層可包括一個(gè)或多個(gè)卷積濾波器,其可被應(yīng)用于輸入數(shù)據(jù)以生成特征圖。盡管僅示出了兩個(gè)卷積塊,但本公開不限于此,而是,根據(jù)設(shè)計(jì)偏好,任何數(shù)目的卷積塊可被包括在深度卷積網(wǎng)絡(luò)350中。歸一化層可被用于對(duì)卷積濾波器的輸出進(jìn)行歸一化。例如,歸一化層可提供白化或側(cè)向抑制。池化層可提供在空間上的降采樣聚集以實(shí)現(xiàn)局部不變性和維度縮減。
例如,深度卷積網(wǎng)絡(luò)的平行濾波器組可任選地基于arm指令集被加載到soc100的cpu102或gpu104上以達(dá)成高性能和低功耗。在替換實(shí)施例中,平行濾波器組可被加載到soc100的dsp106或isp116上。另外,dcn可訪問其他可存在于soc上的處理塊,諸如專用于傳感器114和導(dǎo)航120的處理塊。深度卷積網(wǎng)絡(luò)350還可包括一個(gè)或多個(gè)全連接層(例如,fc1和fc2)。深度卷積網(wǎng)絡(luò)350可進(jìn)一步包括邏輯回歸(lr)層。深度卷積網(wǎng)絡(luò)350的每一層之間是要被更新的權(quán)重(未示出)。每一層的輸出可以用作深度卷積網(wǎng)絡(luò)350中后續(xù)層的輸入以從第一卷積塊c1處提供的輸入數(shù)據(jù)(例如,圖像、音頻、視頻、傳感器數(shù)據(jù)和/或其他輸入數(shù)據(jù))學(xué)習(xí)階層式特征表示。
圖4是解說可使人工智能(ai)功能模塊化的示例性軟件架構(gòu)400的框圖。使用該架構(gòu),應(yīng)用402可被設(shè)計(jì)成可使得soc420的各種處理塊(例如cpu422、dsp424、gpu426和/或npu428)在該應(yīng)用402的運(yùn)行時(shí)操作期間執(zhí)行支持計(jì)算。
ai應(yīng)用402可配置成調(diào)用在用戶空間404中定義的功能,例如,這些功能可提供對(duì)指示該設(shè)備當(dāng)前操作位置的場景的檢測和識(shí)別。例如,ai應(yīng)用402可取決于識(shí)別出的場景是辦公室、報(bào)告廳、餐館、還是室外環(huán)境(諸如湖泊)而以不同方式配置話筒和相機(jī)。ai應(yīng)用402可向與在場景檢測應(yīng)用編程接口(api)406中定義的庫相關(guān)聯(lián)的經(jīng)編譯程序代碼作出請(qǐng)求以提供對(duì)當(dāng)前場景的估計(jì)。該請(qǐng)求可最終依賴于配置成基于例如視頻和定位數(shù)據(jù)來提供場景估計(jì)的深度神經(jīng)網(wǎng)絡(luò)的輸出。
運(yùn)行時(shí)引擎408(其可以是運(yùn)行時(shí)框架的經(jīng)編譯代碼)可進(jìn)一步可由ai應(yīng)用402訪問。例如,ai應(yīng)用402可使得運(yùn)行時(shí)引擎請(qǐng)求特定時(shí)間間隔的場景估計(jì)或由應(yīng)用的用戶接口檢測到的事件觸發(fā)的場景估計(jì)。在使得運(yùn)行時(shí)引擎估計(jì)場景時(shí),運(yùn)行時(shí)引擎可進(jìn)而發(fā)送信號(hào)給在soc420上運(yùn)行的操作系統(tǒng)410(諸如linux內(nèi)核412)。操作系統(tǒng)410進(jìn)而可使得在cpu422、dsp424、gpu426、npu428、或其某種組合上執(zhí)行計(jì)算。cpu422可被操作系統(tǒng)直接訪問,而其他處理塊可通過驅(qū)動(dòng)器(諸如用于dsp424、gpu426、或npu428的驅(qū)動(dòng)器414-418)被訪問。在示例性示例中,深度神經(jīng)網(wǎng)絡(luò)可被配置成在處理塊的組合(諸如cpu422和gpu426)上運(yùn)行,或可在npu428(如果存在的話)上運(yùn)行。
圖5是解說智能手機(jī)502上的ai應(yīng)用的運(yùn)行時(shí)操作500的框圖。ai應(yīng)用可包括預(yù)處理模塊504,該預(yù)處理模塊504可被配置(例如,使用java編程語言被配置)成轉(zhuǎn)換圖像506的格式并隨后對(duì)該圖像進(jìn)行剪裁和/或調(diào)整大小(508)。經(jīng)預(yù)處理的圖像可接著被傳達(dá)給分類應(yīng)用510,該分類應(yīng)用510包含場景檢測后端引擎512,該場景檢測后端引擎512可被配置(例如,使用c編程語言被配置)成基于視覺輸入來檢測和分類場景。場景檢測后端引擎512可被配置成進(jìn)一步通過縮放(516)和剪裁(518)來預(yù)處理(514)該圖像。例如,該圖像可被縮放和剪裁以使所得到的圖像是224像素×224像素。這些維度可映射到神經(jīng)網(wǎng)絡(luò)的輸入維度。神經(jīng)網(wǎng)絡(luò)可由深度神經(jīng)網(wǎng)絡(luò)塊520配置以使得soc100的各種處理塊進(jìn)一步借助深度神經(jīng)網(wǎng)絡(luò)來處理圖像像素。深度神經(jīng)網(wǎng)絡(luò)的結(jié)果可隨后被取閾(522)并被傳遞通過分類應(yīng)用510中的指數(shù)平滑塊524。經(jīng)平滑的結(jié)果可接著使得智能手機(jī)502的設(shè)置和/或顯示改變。
在一種配置中,機(jī)器學(xué)習(xí)模型被配置成用于圖像和濾波器到虛擬矩陣的地址轉(zhuǎn)譯以通過矩陣乘法執(zhí)行卷積。該模型包括接收裝置、映射裝置、轉(zhuǎn)換裝置、和/或卷積裝置。在一個(gè)方面,接收裝置、映射裝置、轉(zhuǎn)換裝置、和/或卷積裝置可以是配置成執(zhí)行所敘述功能的通用處理器102、與通用處理器102相關(guān)聯(lián)的程序存儲(chǔ)器、存儲(chǔ)器塊118、局部處理單元202、和/或路由連接處理單元216。在另一配置中,前述裝置可以是被配置成執(zhí)行由前述裝置所敘述功能的任何模塊或任何裝置。
在另一配置中,機(jī)器學(xué)習(xí)模型被配置成用于通過深度卷積網(wǎng)絡(luò)來處理輸入源。該模型包括處理裝置和/或聚集裝置。在一個(gè)方面,處理裝置和/或聚集裝置可以是配置成執(zhí)行所敘述功能的通用處理器102、與通用處理器102相關(guān)聯(lián)的程序存儲(chǔ)器、存儲(chǔ)器塊118、局部處理單元202、和/或路由連接處理單元216。在另一配置中,前述裝置可以是被配置成執(zhí)行由前述裝置所敘述功能的任何模塊或任何裝置。
在又一配置中,機(jī)器學(xué)習(xí)模型被配置成用于通過深度卷積網(wǎng)絡(luò)來處理輸入源。該模型包括接收裝置、轉(zhuǎn)譯裝置、卷積裝置、和/或處理裝置。在一個(gè)方面,接收裝置、轉(zhuǎn)譯裝置、卷積裝置、和/或處理裝置可以是配置成執(zhí)行所敘述功能的通用處理器102、與通用處理器102相關(guān)聯(lián)的程序存儲(chǔ)器、存儲(chǔ)器塊118、局部處理單元202、和/或路由連接處理單元216。在另一配置中,前述裝置可以是被配置成執(zhí)行由前述裝置所敘述功能的任何模塊或任何裝置。
根據(jù)本公開的某些方面,每個(gè)局部處理單元202可被配置成基于機(jī)器學(xué)習(xí)網(wǎng)絡(luò)的一個(gè)或多個(gè)期望功能特征來確定該網(wǎng)絡(luò)的參數(shù),以及隨著所確定的參數(shù)被進(jìn)一步適配、調(diào)諧和更新來使這一個(gè)或多個(gè)功能特征朝著期望的功能特征發(fā)展。
卷積矩陣相乘
如先前所討論的,本公開的各方面涉及通過按期望創(chuàng)建虛擬矩陣和將經(jīng)卷積矩陣直接寫入內(nèi)部存儲(chǔ)器布局來移除前述雙副本。也就是說,虛擬矩陣的創(chuàng)建可繞過線性化過程。
改進(jìn)中央處理單元(cpu)和/或圖形處理單元(gpu)的矩陣乘法的性能往往是合乎期望的。例如,可通過改進(jìn)矩陣乘法的過程來改進(jìn)依賴性庫。矩陣乘法與其他本原相比因其增大的計(jì)算強(qiáng)度(被定義為flop(每秒浮點(diǎn)運(yùn)算次數(shù))/存儲(chǔ)器)而是合乎期望的。作為示例,諸如axpy(α*x+y)之類的本原針對(duì)每個(gè)操作(兩次讀和一次寫)執(zhí)行兩個(gè)flop。對(duì)于兩個(gè)長度為n的向量,這變成(2n)/(3n)=2/3。相反,矩陣相乘針對(duì)每個(gè)操作執(zhí)行(2n3)/(4n2)個(gè)flop,其為n/2。
在大部分情形中,存儲(chǔ)器處于比計(jì)算慢的數(shù)量級(jí)。因此,具有增大的計(jì)算強(qiáng)度的過程(諸如矩陣相乘)是更合乎期望的,因?yàn)榫哂性龃笥?jì)算強(qiáng)度的過程為每個(gè)存儲(chǔ)器單元提取更多工作。常規(guī)系統(tǒng)基于相比于執(zhí)行另一任務(wù)(諸如,獲取輸入或?qū)懭胼敵?用來產(chǎn)生結(jié)果的時(shí)間量來測量矩陣相乘的效率。
在常規(guī)系統(tǒng)中,圖像和濾波器對(duì)于矩陣相乘本原不是可識(shí)別輸入。因此,為了可被矩陣相乘本原識(shí)別,圖像和濾波器通過復(fù)制圖像的各部分而被轉(zhuǎn)換成矩陣輸入。該復(fù)制因額外存儲(chǔ)器使用而降低了性能。具體而言,附加副本被指定用于矩陣相乘實(shí)現(xiàn),因?yàn)榇鎯?chǔ)器被重打包(基于l1和l2高速緩存存儲(chǔ)器的大小和最內(nèi)里矩陣相乘內(nèi)核的寄存器分塊)成因架構(gòu)而異的布局以用于最內(nèi)里矩陣相乘內(nèi)核的順序存儲(chǔ)器存取。
該重打包可被用于存儲(chǔ)器的分塊(用于高速緩存)和存儲(chǔ)器的流送(從高速緩存到寄存器)。應(yīng)注意,重打包在常規(guī)系統(tǒng)中被指定用于具有深度存儲(chǔ)器階層(諸如cpu)的矩陣相乘實(shí)現(xiàn)。與cpu形成對(duì)比,常規(guī)gpu不對(duì)存儲(chǔ)器重新排序。確切而言,gpu可在結(jié)果矩陣上瓦片化以在各處理單元之間劃分工作并且隨后將輸入矩陣分塊成足夠小的塊以納入在高速緩存中。也就是說,gpu不改變被高速緩存的存儲(chǔ)器的布局。此外,常規(guī)gpu在兩個(gè)維度(m和n,參見圖5)上分塊,而cpu在三個(gè)維度上分塊。
圖6a解說了兩個(gè)矩陣(具有維度mxk的矩陣a和具有維度kxn的矩陣b)的矩陣乘法的示例。矩陣乘法的乘積是具有維度mxn的矩陣c。
本公開的各方面涉及執(zhí)行矩陣相乘而無需前述雙副本。在一種配置中,矩陣相乘本原被指定成識(shí)別圖像但不識(shí)別矩陣。
具體而言,根據(jù)本公開的各方面,改進(jìn)的矩陣相乘本原使用常規(guī)卷積自變量(諸如,圖像、濾波器、跨步、填充、濾波器數(shù)量、和/或輸入和輸出的維度)。此外,改進(jìn)的矩陣相乘本原重用在常規(guī)矩陣相乘本原中使用的矩陣相乘內(nèi)核來計(jì)算卷積。因此,改進(jìn)的矩陣相乘本原可通過跳過線性化步驟來避免雙副本。也就是說,線性化步驟可被跳過,因?yàn)樵紙D像和濾波器輸入被使用和重打包到由矩陣相乘內(nèi)核指定的內(nèi)部存儲(chǔ)器布局。
圖6b解說了用于常規(guī)矩陣相乘的圖像和濾波器的線性化。如圖6b所示,3x3圖像的各部分被復(fù)制到經(jīng)線性化矩陣中,其中經(jīng)線性化圖像的每一行代表將應(yīng)用2x2濾波器的單個(gè)位置。該3x3圖像可以是更大圖像的一部分。濾波器也被線性化以被描述為點(diǎn)積。
如圖6b所示,將向圖像應(yīng)用2x2濾波器,一次四個(gè)像素。以圖像的左上部分開始,濾波器將被應(yīng)用于像素i00、i01、i10、i11。因此,經(jīng)線性化圖像的第一行是i00、i01、i10、i11。按從左向右移動(dòng)的方式,用于濾波器的接下來的四個(gè)像素是i01、i02、i11和i12。因此,經(jīng)線性化圖像的第二行是i01、i02、i11和i12。矩陣的內(nèi)容(諸如i00、i01等)對(duì)應(yīng)于地址位置。
另外,如圖6b所示,濾波器也被線性化,以使得通過向經(jīng)線性化的圖像應(yīng)用經(jīng)線性化的濾波器來推導(dǎo)卷積。例如,c00是((i00xf00)+(i01xf01)+(i10xf10)+(i11xf11))的結(jié)果。也就是說,當(dāng)濾波器被應(yīng)用于圖像上的單個(gè)位置時(shí),它產(chǎn)生若干部分點(diǎn)積,這些點(diǎn)積隨后被加總。點(diǎn)積的數(shù)目等于濾波器的面積。例如,圖6b的2x2濾波器產(chǎn)生四個(gè)部分點(diǎn)積。在另一示例中,3x3濾波器產(chǎn)生九個(gè)部分點(diǎn)積。任何個(gè)體點(diǎn)積的長度等于圖像中的通道數(shù)目和濾波器的面積的乘積。通道的數(shù)目基于在先前階段被應(yīng)用于圖像的濾波器數(shù)目而增多或減少。
關(guān)注單個(gè)階段,為了獲得一個(gè)完整的點(diǎn)積,濾波器內(nèi)部的每一個(gè)個(gè)體的像素(針對(duì)所有通道)被組成成單個(gè)向量。如果點(diǎn)積是并行產(chǎn)生的,從而每一個(gè)點(diǎn)積是被應(yīng)用于單個(gè)位置的濾波器,則結(jié)果是矩陣相乘。仍然,在前述向量的總長度大于針對(duì)k的分塊大小時(shí),該向量的僅一部分可針對(duì)特定迭代被存儲(chǔ)和計(jì)算。因此,在最內(nèi)里環(huán)路已完成之后計(jì)算剩余的計(jì)算。應(yīng)注意,本公開中引述的值k和m是基于來自圖6a的k和m的值的示例。例如,k是矩陣a的長度和矩陣b的寬度的大小。
因此,對(duì)于矩陣相乘實(shí)現(xiàn)的外環(huán)的每次迭代,重打包例程首先基于k的當(dāng)前值來計(jì)算經(jīng)線性化圖像中的當(dāng)前位置。假定k是對(duì)k的分塊大小的倍數(shù)。相應(yīng)地,增大量的存儲(chǔ)器被指定以將圖像矩陣和濾波器矩陣復(fù)制到經(jīng)線性化的圖像矩陣和經(jīng)線性化的濾波器矩陣。因此,該復(fù)制和臨時(shí)空間均可通過移除線性化步驟來繞過。經(jīng)線性化的圖像矩陣可被稱為經(jīng)線性化的圖像,并且經(jīng)線性化的濾波器矩陣可被稱為經(jīng)線性化的濾波器。
在常規(guī)系統(tǒng)中,內(nèi)部存儲(chǔ)器布局被指定以使得當(dāng)前操作的存儲(chǔ)器能夠被納入在高速緩存內(nèi)部并改進(jìn)用于下一片存儲(chǔ)器的流送(即,預(yù)獲取)。此外,順序存取被用于改進(jìn)的預(yù)獲取。
圖7解說了預(yù)定內(nèi)部存儲(chǔ)器格式702的示例。在常規(guī)系統(tǒng)中,圖像704被線性化成矩陣706。如以下所討論的,在矩陣相乘期間,驅(qū)動(dòng)器(圖7中未示出)可向打包器(圖7中未示出)請(qǐng)求矩陣706的一部分(例如,塊708)。打包器將矩陣706的塊708轉(zhuǎn)換成內(nèi)部存儲(chǔ)器格式702。
在大部分情形中,由于cpu高速緩存的大小有限,所以在任何給定時(shí)間僅可引用矩陣a的僅一個(gè)塊。該塊的大小可以基于針對(duì)m的分塊大小和針對(duì)k的分塊大小,它們基于用于給定cpu的高速緩存的大小。前述塊可被重打包成內(nèi)部格式。該內(nèi)部格式可具有等于最內(nèi)里內(nèi)核的寄存器分塊大小的寬度以及基于針對(duì)k的分塊大小的長度。矩陣的該塊將由打包例程順序地打包成內(nèi)部格式。應(yīng)注意,k或m都不與圖像一起存在,更不要提矩陣。然而,矩陣相乘內(nèi)核以內(nèi)部格式指定分塊大小以用于改進(jìn)的性能。因此,圖像和濾波器應(yīng)當(dāng)經(jīng)由打包例程轉(zhuǎn)換,該打包例程接收?qǐng)D像的輸入和濾波器的輸入并且輸出內(nèi)部存儲(chǔ)器布局。
應(yīng)注意,在圖7中,矩陣706的塊708不是單獨(dú)的矩陣。確切而言,塊708是可在矩陣相乘期間向驅(qū)動(dòng)器請(qǐng)求的矩陣706的部分的視覺化。
圖8解說了用于將矩陣a802和b804相乘以輸出乘積矩陣c812的常規(guī)矩陣相乘800的示例。如圖8所示,第一矩陣a802和第二矩陣b804被輸入打包器806。打包器806處置來自驅(qū)動(dòng)器808的對(duì)矩陣a802和矩陣b804的特定部分的請(qǐng)求以經(jīng)由矩陣乘法生成矩陣c812的一部分。響應(yīng)于該請(qǐng)求,打包器806將所請(qǐng)求的矩陣a802和矩陣b804的部分轉(zhuǎn)換成內(nèi)部格式。如先前所討論的,常規(guī)系統(tǒng)將矩陣a802和矩陣b804的各部分寫到內(nèi)部格式以改進(jìn)性能。該內(nèi)部格式被傳送給驅(qū)動(dòng)器808,驅(qū)動(dòng)器808進(jìn)而將矩陣a802和矩陣b804的經(jīng)轉(zhuǎn)換部分傳送給矩陣相乘內(nèi)核810。矩陣相乘內(nèi)核可被稱為內(nèi)核。內(nèi)核810接收矩陣a802和矩陣b804的內(nèi)部格式的經(jīng)轉(zhuǎn)換部分,并且內(nèi)核810將經(jīng)轉(zhuǎn)換的部分寫到矩陣c812的該部分。矩陣乘法可被重復(fù)直至矩陣c812的所有部分都被確定。
應(yīng)注意,該內(nèi)部格式可被稱為不透明格式。此外,該內(nèi)部格式可被系統(tǒng)根據(jù)系統(tǒng)規(guī)范指定,從而該內(nèi)部格式也可被稱為預(yù)定義內(nèi)部格式。
圖9解說了用于卷積的常規(guī)系統(tǒng)900的另一示例。如先前所討論的,矩陣乘法可以不解讀標(biāo)準(zhǔn)圖像和濾波器。因此,圖像和濾波器在矩陣乘法之前被線性化。也就是說,如圖9所示,圖像902和濾波器904被輸入線性化器906以被線性化(即,轉(zhuǎn)換)成矩陣a908和矩陣b910。矩陣a908和矩陣b910根據(jù)關(guān)于圖8描述的常規(guī)矩陣相乘來相乘。具體而言,類似于圖8的示例,圖9的矩陣相乘塊920包括打包器912、驅(qū)動(dòng)器914和內(nèi)核916。矩陣相乘塊920的輸出是矩陣c918的一部分。
如圖9所示,常規(guī)卷積系統(tǒng)包括雙副本。第一副本被指定成將圖像902和濾波器904轉(zhuǎn)換成相應(yīng)的矩陣908和910。第二副本被指定成將矩陣(諸如矩陣a908和矩陣b910)轉(zhuǎn)換成內(nèi)部格式。如先前所討論的,雙副本可降低系統(tǒng)性能。
圖10a解說了根據(jù)本公開的一方面的卷積1000的示例。如圖10a所示,雙副本可不被執(zhí)行,因?yàn)榇虬鞅慌渲贸勺x取圖像。也就是說,如圖10a所示,圖像1002和濾波器1004被輸入打包器1006。具體而言,在該配置中,驅(qū)動(dòng)器1008向打包器請(qǐng)求矩陣a的一部分和矩陣b的一部分。此外,打包器1006解讀該請(qǐng)求并確定與經(jīng)線性化矩陣中與矩陣a和矩陣b的被請(qǐng)求部分相對(duì)應(yīng)的各部分。仍然,由于圖像1002和濾波器1004尚未被線性化成矩陣a和矩陣b,所以打包器1006基于圖像1002和濾波器1004生成虛擬矩陣a和b(圖10a中未示出)。此外,打包器1006將位于虛擬矩陣的各地址處的數(shù)據(jù)寫到內(nèi)部格式,其被傳遞給驅(qū)動(dòng)器1008。此外,驅(qū)動(dòng)器1008向內(nèi)核1010傳送從虛擬矩陣生成的內(nèi)部格式。內(nèi)核1010接收該內(nèi)部格式并且內(nèi)核1010將從虛擬矩陣生成的經(jīng)轉(zhuǎn)換部分寫到矩陣c1012的該部分。
作為示例,驅(qū)動(dòng)器可請(qǐng)求經(jīng)線性化圖像(如圖6b所示)的左邊一半(即,左邊兩列)。本配置的打包器將經(jīng)線性化的圖像的各位置與實(shí)際圖像的各像素進(jìn)行關(guān)聯(lián)。例如,在經(jīng)線性化圖像中,第一列的首兩個(gè)元素(即,i00和i01)與圖像的該行的首兩個(gè)元素(即,i00和i01)相關(guān)聯(lián)。因此,打包器執(zhí)行地址轉(zhuǎn)譯以尋找圖像中與驅(qū)動(dòng)器請(qǐng)求的矩陣部分相關(guān)聯(lián)的正確部分?;诘刂忿D(zhuǎn)譯,打包器將圖像的該部分寫到內(nèi)部格式,由此繞過將圖像寫到矩陣以及隨后將矩陣寫到內(nèi)部格式的步驟。
更具體地,每一個(gè)圖像和濾波器(諸如,圖10a的圖像1002和濾波器1004)具有存儲(chǔ)器地址。在一種配置中,打包器將存儲(chǔ)器地址映射到虛擬矩陣地址。該映射基于針對(duì)驅(qū)動(dòng)器所請(qǐng)求的矩陣部分所計(jì)算的經(jīng)線性化圖像和所計(jì)算的經(jīng)線性化濾波器。此外,打包器將虛擬矩陣地址轉(zhuǎn)換成內(nèi)部格式。也就是說,在將從圖像和濾波器生成的虛擬矩陣寫到內(nèi)部格式時(shí),打包器向驅(qū)動(dòng)器傳送內(nèi)部格式。最終,圖像和濾波器基于虛擬矩陣地址通過內(nèi)部格式的數(shù)據(jù)的矩陣乘法來卷積。具體地,該矩陣乘法可以類似于關(guān)于圖8描述的矩陣相乘。
圖10b解說了根據(jù)本公開的一方面的卷積1000的示例。如圖10b所示,內(nèi)核1010可向回調(diào)塊1014輸出矩陣相乘的乘積?;卣{(diào)塊1014可使用卷積和/或矩陣相乘的乘積以供進(jìn)一步處理(諸如,深度瓦片化)。也就是說,諸如深度瓦片化之類的處理可被執(zhí)行而沒有必要等待全部矩陣c1012被寫入并且可對(duì)矩陣c1012的一部分執(zhí)行。應(yīng)注意,驅(qū)動(dòng)器1008可指令內(nèi)核1010向回調(diào)塊1014輸出數(shù)據(jù)。
深度瓦片化
如先前所討論的,深度卷積神經(jīng)網(wǎng)絡(luò)(dnn)和/或深度卷積網(wǎng)絡(luò)(dcn)被指定對(duì)數(shù)據(jù)進(jìn)行分類。典型地,該數(shù)據(jù)是圖像數(shù)據(jù)并且該深度卷積神經(jīng)網(wǎng)絡(luò)確定圖像中存在的對(duì)象。仍然,該數(shù)據(jù)可以是音頻數(shù)據(jù)或者遭受分類或回歸的其他數(shù)據(jù)。在本申請(qǐng)中,深度卷積神經(jīng)網(wǎng)絡(luò)可指代深度卷積網(wǎng)絡(luò)。在輸出為實(shí)數(shù)(諸如,圖像中的對(duì)象周圍的定界框的角的估計(jì))時(shí)可應(yīng)用回歸。
本公開的各方面涉及通過跨深度卷積神經(jīng)網(wǎng)絡(luò)的多個(gè)層瓦片化來改進(jìn)深度卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)行時(shí)性能、存儲(chǔ)器使用和功率使用。另外,本公開的各方面從采用特定量(諸如,1mb)的l2高速緩存的cpu視點(diǎn)來描述。仍然,本公開的各方面可被應(yīng)用于定制硬件實(shí)現(xiàn)(諸如,具有1mb的可用本地sram存儲(chǔ)器的專用集成電路(asic))或任何其他配置。
深度卷積神經(jīng)網(wǎng)絡(luò)可包括多個(gè)層。每一層可向數(shù)據(jù)應(yīng)用一變換。此外,每一層的輸出被用作下一層的輸入。附加或替換地,這些層可形成有向無環(huán)圖。該數(shù)據(jù)從輸入層變換到最終輸出層。輸出層可稱為柔性最大(softmax)層。具體而言,輸出層輸出圖像中可見的事物(諸如,樹、汽車、或人)的概率。通過使用隨機(jī)梯度下降設(shè)置深度卷積神經(jīng)網(wǎng)絡(luò)的權(quán)重來訓(xùn)練該網(wǎng)絡(luò)以執(zhí)行分類任務(wù)。深度卷積神經(jīng)網(wǎng)絡(luò)可具有一個(gè)或多個(gè)輸出。此外,深度卷積神經(jīng)網(wǎng)絡(luò)可針對(duì)回歸問題(諸如,估計(jì)輸入數(shù)據(jù)中的對(duì)象周圍的定界框)來訓(xùn)練。
作為深度卷積神經(jīng)網(wǎng)絡(luò)的示例,檢測應(yīng)用所使用的深度卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)和屬性在表1中提供。具體而言,表1提供了層名稱、窗口矩陣大小、權(quán)重大小、輸出文件大小以及執(zhí)行時(shí)間。
表1
每一層的圖像處理是本領(lǐng)域技術(shù)人員已知的。這些層可包括激活層(act)、歸一化層(norm)層、卷積層(conv)、池化層(pool)、退出者層(dropout)、以及全連接層(fullycon)。本公開的各方面并不關(guān)注于在每一層執(zhí)行的功能。仍然,應(yīng)注意,每一層對(duì)前一層的輸出的局部窗口進(jìn)行操作。
在表1中,該窗口具有1x1與7x7像素之間的大小,如在表的窗口矩陣大小列中列出的。應(yīng)注意,原始圖像可具有比該窗口大小大的大小。例如,輸入圖像可具有200x200像素的大小并且可包括三個(gè)通道,諸如,紅、綠和藍(lán)。在本配置中,來自前一層的nxn窗口的數(shù)據(jù)被用來產(chǎn)生當(dāng)前層的輸出。
如表1中所示,在接收到輸入圖像之后,對(duì)圖像執(zhí)行第一卷積(conv1)。7x7的窗口大小可被用于第一卷積。第一卷積可基于濾波器的使用來確定圖像中是否存在某些圖案或邊緣。對(duì)于200x200像素的圖像大小,第一卷積可被執(zhí)行約96次。也就是說,7x7窗口可被應(yīng)用于圖像的96個(gè)不同位置。另外,如表1中所示,第一卷積的輸出大小約為4800k,其可大于常規(guī)高速緩存的大小。
在執(zhí)行第一卷積之后,可執(zhí)行第一激活(act1)。激活將小于0的像素的值設(shè)為0。激活的輸出也可約為4800k。此外,可在第一激活之后執(zhí)行第一歸一化。歸一化層可被用于對(duì)卷積濾波器的輸出進(jìn)行歸一化。例如,歸一化層可提供白化或側(cè)向抑制。
在第一歸一化之后,可執(zhí)行第一池化(pool1)。池化通過減小窗口(諸如3x3窗口)中像素的最大像素值來減小圖像的大小。池化將輸出減小到約1200k。
如表1中所示,卷積、激活和池化可在全連接層(fullycon)被處理之前針對(duì)數(shù)個(gè)表被重復(fù)。全連接層執(zhí)行矩陣相乘,使用pool5的全部輸出來產(chǎn)生輸出。退出者層隨機(jī)地將全連接層的輸出值設(shè)為指定概率(諸如,50%)下的零。退出者層可防止全連接層產(chǎn)生的特征的共適配。最終層是輸出層。輸出層基于先前層的輸入來提供圖像中存在的一個(gè)或多個(gè)對(duì)象的確定。
應(yīng)注意,卷積層和全連接層的權(quán)重可經(jīng)由后向傳播來確定。后向傳播是用于基于已知圖像標(biāo)記來訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的過程。
到每一層的輸入的大小(即,前一層的權(quán)重和輸出的總和)影響系統(tǒng)性能。表1列出了每一層的輸出大小,假定所有值都使用32位浮點(diǎn)格式來存儲(chǔ)。仍然,本公開的各方面還被構(gòu)想用于使用16位有符號(hào)整數(shù)或任何其他整數(shù)量。
注意,層conv1到conv2的輸入和輸出的大小的總和大于cpu的常規(guī)l2高速緩存的大小(例如,1mb)。因此,在常規(guī)系統(tǒng)中,對(duì)于每一層,cpu從主存儲(chǔ)器讀取整個(gè)輸入并且將輸出寫回主存儲(chǔ)器。
前述高速緩存性能影響如在層act1和act2(表1)的定時(shí)中示出的性能。激活層對(duì)其數(shù)據(jù)執(zhí)行運(yùn)算,諸如,輸出=max(0,輸入)?;诒?的示例,層act2使用0.1ms來處理800k的數(shù)據(jù)(注意,800k納入在l2高速緩存中)。此外,基于表1的示例,第一激活層處理6倍多的數(shù)據(jù)(4800k,這不納入在l2高速緩存中)。仍然,在激活層處理數(shù)據(jù)的時(shí)間量不是工作量的六倍(6x0.1ms=0.6ms)。確切而言,平均時(shí)間是2.5ms。也就是說,約2ms用于對(duì)主存儲(chǔ)器的讀和寫。
瓦片化在常規(guī)系統(tǒng)中用來改進(jìn)性能。數(shù)據(jù)一次一個(gè)瓦片(2d數(shù)據(jù)塊)地處理。瓦片的大小足夠小以使得數(shù)據(jù)納入在(l1,l2)高速緩存中是合乎期望的。
當(dāng)前深度卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)在每層級(jí)別使用瓦片化。例如,一些層使用矩陣乘法并且被隱式地瓦片化。本公開的各方面涉及跨各層瓦片化,其可被稱為深度瓦片化。
在一種配置中,如圖11所示,針對(duì)輸入圖像110處理瓦片1102。每一個(gè)瓦片通過指定數(shù)目的輸入層(參見表1)被處理直至瓦片層被聲明有效。瓦片的大小可因局部窗口大小而在每一層變化。此外,在一種配置中,先前層中作為窗口的一部分的所有像素應(yīng)當(dāng)被聲明有效。也就是說,在針對(duì)指定層對(duì)像素的處理完成時(shí),瓦片可被聲明有效。例如,每一個(gè)瓦片可從輸入層到第一池化層(pool1)地處理。在本示例中,在針對(duì)第一池化層對(duì)像素的處理完成時(shí),瓦片可被聲明有效。指定數(shù)目的層的處理可在高速緩存(諸如,l1和/或l2高速緩存)中執(zhí)行。相應(yīng)地,在每一瓦片的各層已被處理之后,整個(gè)圖像可針對(duì)任何其余的層處理。
如先前所討論的,在一個(gè)示例中,每一個(gè)瓦片可從輸入層到第一池化層單獨(dú)地處理。另外,在從輸入層到第一池化層處理每一個(gè)瓦片時(shí),整個(gè)圖像可從第二卷積層(conv2)到輸出層地處理。當(dāng)然,本公開的各方面并不限于從輸入層向第一池化層地處理每一個(gè)瓦片,因?yàn)橥咂稍谄谕那闆r下行進(jìn)以處理附加層。
此外,有效瓦片的聲明可按特定圖案(例如,以zig-zag(之字形)次序從頂?shù)降坠ぷ?一次一個(gè)瓦片地執(zhí)行。該次序可以是任意的并且可基于期望輸出而改變。也就是說,本公開的各方面并不限于之字形次序。有效區(qū)域通過計(jì)算其輸入有效的輸出來逐層傳播。這導(dǎo)致在任何時(shí)間在任何層有效的l形區(qū)域。
通過跨多個(gè)層瓦片化,針對(duì)各層(諸如,conv1到pool1)的所有計(jì)算可以在可能時(shí)從高速緩存執(zhí)行。該處理可由不同核執(zhí)行。用于conv2的權(quán)重可能當(dāng)前過大而不能納入在1mb高速緩存中,但切換到不同表示(諸如,16位表示)可緩解大小差異。應(yīng)注意,前述圖像和濾波器到虛擬矩陣的地址轉(zhuǎn)譯以通過矩陣乘法來執(zhí)行卷積可被指定成生成每一個(gè)卷積層的輸出。
深度瓦片化過程可以基于以下偽代碼來執(zhí)行:
在并非所有瓦片有效時(shí):
●聲明輸入層中的新瓦片有效
●對(duì)于瓦片化_層中的層:
o從前一層獲得有效區(qū)域(l形)
o計(jì)算什么區(qū)域u可針對(duì)該層更新
(這將通常為矩形)
o計(jì)算區(qū)域u的輸出
o為層設(shè)置新的有效區(qū)域
前述偽代碼是深度瓦片化的概述。具體而言,在瓦片已被聲明有效之后,偽代碼進(jìn)入環(huán)路以確定來自前一層的值區(qū)域,計(jì)算可針對(duì)當(dāng)前層更新的區(qū)域,確定當(dāng)前層的輸出,以及將當(dāng)前層設(shè)為有效。應(yīng)注意,該偽代碼是深度瓦片化的示例。本公開的概念并不限于該偽代碼。
在一種配置中,為每一層指定新的功能性。具體而言,每一層應(yīng)當(dāng)在給定當(dāng)前和先前有效輸入?yún)^(qū)域的情況下能夠告訴它可使什么新區(qū)域有效。另外,每一層應(yīng)當(dāng)將其操作應(yīng)用于有限區(qū)域。
應(yīng)注意,圖10b的回調(diào)可被用于前述深度瓦片化。
圖12解說了圖像和濾波器到虛擬矩陣的地址轉(zhuǎn)譯以通過矩陣乘法執(zhí)行卷積的方法。在框1202,接收?qǐng)D像和濾波器,其各自具有存儲(chǔ)器地址。在框1204,基于所計(jì)算的經(jīng)線性化圖像和所計(jì)算的經(jīng)線性化濾波器將存儲(chǔ)器地址映射到虛擬矩陣地址。在框1206,將虛擬矩陣地址轉(zhuǎn)換成預(yù)定義內(nèi)部格式。在框1208,基于虛擬矩陣地址通過內(nèi)部格式的數(shù)據(jù)的矩陣乘法來卷積圖像和濾波器。
圖13解說了由深度卷積網(wǎng)絡(luò)(dcn)處理輸入源的方法。在框1302,由dcn的各層一次一個(gè)部分地處理輸入源以創(chuàng)建針對(duì)每一個(gè)部分的輸出。在框1304,將每一個(gè)部分的輸出聚集到聚集輸出中。在框1306,由其余層處理聚集輸出。
圖14解說了由深度卷積網(wǎng)絡(luò)處理輸入源的方法。在框1402,接收?qǐng)D像和濾波器,其各自具有存儲(chǔ)器地址。在框1404,將圖像的一部分和濾波器的一部分轉(zhuǎn)譯成虛擬矩陣。在框1406,基于虛擬矩陣地址通過矩陣乘法來卷積虛擬矩陣以生成經(jīng)卷積圖像。在框1408,由dcn的各層處理經(jīng)卷積圖像以創(chuàng)建針對(duì)每一個(gè)部分的輸出。
圖15解說了根據(jù)本公開的一方面的卷積和深度瓦片化過程1500的示例。如圖15所示,在框1502,將圖像和濾波器輸入到打包器。此外,在框1504,驅(qū)動(dòng)器向打包器請(qǐng)求矩陣a的一部分和矩陣b的一部分?;谠撜?qǐng)求,打包器確定經(jīng)線性化矩陣中與矩陣a和矩陣b的被請(qǐng)求部分相對(duì)應(yīng)的各部分(框1506)。仍然,由于圖像和濾波器尚未被線性化成矩陣a和矩陣b,因此打包器基于圖像和濾波器生成虛擬矩陣a和b(框1508)。
此外,在框1510,打包器將位于虛擬矩陣的各地址處的數(shù)據(jù)寫到內(nèi)部格式,其被傳遞給驅(qū)動(dòng)器。此外,在框1512,驅(qū)動(dòng)器將內(nèi)部格式傳送給內(nèi)核。在框1514,內(nèi)核確定是否要將從虛擬矩陣生成的經(jīng)轉(zhuǎn)換部分寫到矩陣c的該部分(框1516)和/或向回調(diào)塊輸出矩陣相乘的乘積(框1518)?;卣{(diào)塊可使用卷積和/或矩陣相乘的乘積以供進(jìn)一步處理(諸如,深度瓦片化)。
以上所描述的方法的各種操作可由能夠執(zhí)行相應(yīng)功能的任何合適的裝置來執(zhí)行。這些裝置可包括各種硬件和/或(諸)軟件組件和/或(諸)模塊,包括但不限于電路、專用集成電路(asic)、或處理器。一般而言,在附圖中有解說的操作的場合,那些操作可具有帶相似編號(hào)的相應(yīng)配對(duì)裝置加功能組件。
如本文所使用的,術(shù)語“確定”涵蓋各種各樣的動(dòng)作。例如,“確定”可包括演算、計(jì)算、處理、推導(dǎo)、研究、查找(例如,在表、數(shù)據(jù)庫或其他數(shù)據(jù)結(jié)構(gòu)中查找)、探知及諸如此類。另外,“確定”可包括接收(例如接收信息)、訪問(例如訪問存儲(chǔ)器中的數(shù)據(jù))、及類似動(dòng)作。而且,“確定”可包括解析、選擇、選取、確立及類似動(dòng)作。
如本文中所使用的,引述一列項(xiàng)目中的“至少一個(gè)”的短語是指這些項(xiàng)目的任何組合,包括單個(gè)成員。作為示例,“a、b或c中的至少一個(gè)”旨在涵蓋:a、b、c、a-b、a-c、b-c、以及a-b-c。
結(jié)合本公開所描述的各種解說性邏輯框、模塊、以及電路可用設(shè)計(jì)成執(zhí)行本文所描述功能的通用處理器、數(shù)字信號(hào)處理器(dsp)、專用集成電路(asic)、現(xiàn)場可編程門陣列信號(hào)(fpga)或其他可編程邏輯器件(pld)、分立的門或晶體管邏輯、分立的硬件組件或其任何組合來實(shí)現(xiàn)或執(zhí)行。通用處理器可以是微處理器,但在替換方案中,處理器可以是任何市售的處理器、控制器、微控制器、或狀態(tài)機(jī)。處理器還可以被實(shí)現(xiàn)為計(jì)算設(shè)備的組合,例如dsp與微處理器的組合、多個(gè)微處理器、與dsp核心協(xié)同的一個(gè)或多個(gè)微處理器、或任何其它此類配置。
結(jié)合本公開描述的方法或算法的步驟可直接在硬件中、在由處理器執(zhí)行的軟件模塊中、或在這兩者的組合中實(shí)施。軟件模塊可駐留在本領(lǐng)域所知的任何形式的存儲(chǔ)介質(zhì)中。可使用的存儲(chǔ)介質(zhì)的一些示例包括隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、閃存、可擦除可編程只讀存儲(chǔ)器(eprom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、寄存器、硬盤、可移動(dòng)盤、cd-rom,等等。軟件模塊可包括單條指令、或許多條指令,且可分布在若干不同的代碼段上,分布在不同的程序間以及跨多個(gè)存儲(chǔ)介質(zhì)分布。存儲(chǔ)介質(zhì)可被耦合到處理器以使得該處理器能從/向該存儲(chǔ)介質(zhì)讀寫信息。在替換方案中,存儲(chǔ)介質(zhì)可以被整合到處理器。
本文所公開的方法包括用于達(dá)成所描述的方法的一個(gè)或多個(gè)步驟或動(dòng)作。這些方法步驟和/或動(dòng)作可以彼此互換而不會(huì)脫離權(quán)利要求的范圍。換言之,除非指定了步驟或動(dòng)作的特定次序,否則具體步驟和/或動(dòng)作的次序和/或使用可以改動(dòng)而不會(huì)脫離權(quán)利要求的范圍。
所描述的功能可在硬件、軟件、固件或其任何組合中實(shí)現(xiàn)。如果以硬件實(shí)現(xiàn),則示例硬件配置可包括設(shè)備中的處理系統(tǒng)。處理系統(tǒng)可以用總線架構(gòu)來實(shí)現(xiàn)。取決于處理系統(tǒng)的具體應(yīng)用和整體設(shè)計(jì)約束,總線可包括任何數(shù)目的互連總線和橋接器??偩€可將包括處理器、機(jī)器可讀介質(zhì)、以及總線接口的各種電路鏈接在一起??偩€接口可用于尤其將網(wǎng)絡(luò)適配器等經(jīng)由總線連接至處理系統(tǒng)。網(wǎng)絡(luò)適配器可用于實(shí)現(xiàn)信號(hào)處理功能。對(duì)于某些方面,用戶接口(例如,按鍵板、顯示器、鼠標(biāo)、操縱桿,等等)也可以被連接到總線??偩€還可以鏈接各種其他電路,諸如定時(shí)源、外圍設(shè)備、穩(wěn)壓器、功率管理電路以及類似電路,它們?cè)诒绢I(lǐng)域中是眾所周知的,因此將不再進(jìn)一步描述。
處理器可負(fù)責(zé)管理總線和一般處理,包括執(zhí)行存儲(chǔ)在機(jī)器可讀介質(zhì)上的軟件。處理器可用一個(gè)或多個(gè)通用和/或?qū)S锰幚砥鱽韺?shí)現(xiàn)。示例包括微處理器、微控制器、dsp處理器、以及其他能執(zhí)行軟件的電路系統(tǒng)。軟件應(yīng)當(dāng)被寬泛地解釋成意指指令、數(shù)據(jù)、或其任何組合,無論是被稱作軟件、固件、中間件、微代碼、硬件描述語言、或其他。作為示例,機(jī)器可讀介質(zhì)可包括隨機(jī)存取存儲(chǔ)器(ram)、閃存、只讀存儲(chǔ)器(rom)、可編程只讀存儲(chǔ)器(prom)、可擦式可編程只讀存儲(chǔ)器(eprom)、電可擦式可編程只讀存儲(chǔ)器(eeprom)、寄存器、磁盤、光盤、硬驅(qū)動(dòng)器、或者任何其他合適的存儲(chǔ)介質(zhì)、或其任何組合。機(jī)器可讀介質(zhì)可被實(shí)施在計(jì)算機(jī)程序產(chǎn)品中。該計(jì)算機(jī)程序產(chǎn)品可以包括包裝材料。
在硬件實(shí)現(xiàn)中,機(jī)器可讀介質(zhì)可以是處理系統(tǒng)中與處理器分開的一部分。然而,如本領(lǐng)域技術(shù)人員將容易領(lǐng)會(huì)的,機(jī)器可讀介質(zhì)或其任何部分可在處理系統(tǒng)外部。作為示例,機(jī)器可讀介質(zhì)可包括傳輸線、由數(shù)據(jù)調(diào)制的載波、和/或與設(shè)備分開的計(jì)算機(jī)產(chǎn)品,所有這些都可由處理器通過總線接口來訪問。替換地或補(bǔ)充地,機(jī)器可讀介質(zhì)或其任何部分可被集成到處理器中,諸如高速緩存和/或通用寄存器文件可能就是這種情形。雖然所討論的各種組件可被描述為具有特定位置,諸如局部組件,但它們也可按各種方式來配置,諸如某些組件被配置成分布式計(jì)算系統(tǒng)的一部分。
處理系統(tǒng)可以被配置為通用處理系統(tǒng),該通用處理系統(tǒng)具有一個(gè)或多個(gè)提供處理器功能性的微處理器、以及提供機(jī)器可讀介質(zhì)中的至少一部分的外部存儲(chǔ)器,它們都通過外部總線架構(gòu)與其他支持電路系統(tǒng)鏈接在一起。替換地,該處理系統(tǒng)可以包括一個(gè)或多個(gè)神經(jīng)元形態(tài)處理器以用于實(shí)現(xiàn)本文所述的神經(jīng)元模型和神經(jīng)系統(tǒng)模型。作為另一替換方案,處理系統(tǒng)可以用帶有集成在單塊芯片中的處理器、總線接口、用戶接口、支持電路系統(tǒng)、和至少一部分機(jī)器可讀介質(zhì)的專用集成電路(asic)來實(shí)現(xiàn),或者用一個(gè)或多個(gè)現(xiàn)場可編程門陣列(fpga)、可編程邏輯器件(pld)、控制器、狀態(tài)機(jī)、門控邏輯、分立硬件組件、或者任何其他合適的電路系統(tǒng)、或者能執(zhí)行本公開通篇所描述的各種功能性的電路的任何組合來實(shí)現(xiàn)。取決于具體應(yīng)用和加諸于整體系統(tǒng)上的總設(shè)計(jì)約束,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到如何最佳地實(shí)現(xiàn)關(guān)于處理系統(tǒng)所描述的功能性。
機(jī)器可讀介質(zhì)可包括數(shù)個(gè)軟件模塊。這些軟件模塊包括當(dāng)由處理器執(zhí)行時(shí)使處理系統(tǒng)執(zhí)行各種功能的指令。這些軟件模塊可包括傳送模塊和接收模塊。每個(gè)軟件模塊可以駐留在單個(gè)存儲(chǔ)設(shè)備中或者跨多個(gè)存儲(chǔ)設(shè)備分布。作為示例,當(dāng)觸發(fā)事件發(fā)生時(shí),可以從硬驅(qū)動(dòng)器中將軟件模塊加載到ram中。在軟件模塊執(zhí)行期間,處理器可以將一些指令加載到高速緩存中以提高訪問速度。隨后可將一個(gè)或多個(gè)高速緩存行加載到通用寄存器文件中以供處理器執(zhí)行。在以下述及軟件模塊的功能性時(shí),將理解此類功能性是在處理器執(zhí)行來自該軟件模塊的指令時(shí)由該處理器來實(shí)現(xiàn)的。
如果以軟件實(shí)現(xiàn),則各功能可作為一條或多條指令或代碼存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上或藉其進(jìn)行傳送。計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)兩者,這些介質(zhì)包括促成計(jì)算機(jī)程序從一地向另一地轉(zhuǎn)移的任何介質(zhì)。存儲(chǔ)介質(zhì)可以是能被計(jì)算機(jī)訪問的任何可用介質(zhì)。作為示例而非限定,此類計(jì)算機(jī)可讀介質(zhì)可包括ram、rom、eeprom、cd-rom或其他光盤存儲(chǔ)、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備、或能用于攜帶或存儲(chǔ)指令或數(shù)據(jù)結(jié)構(gòu)形式的期望程序代碼且能被計(jì)算機(jī)訪問的任何其他介質(zhì)。另外,任何連接也被正當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。例如,如果軟件是使用同軸電纜、光纖電纜、雙絞線、數(shù)字訂戶線(dsl)、或無線技術(shù)(諸如紅外(ir)、無線電、以及微波)從web網(wǎng)站、服務(wù)器、或其他遠(yuǎn)程源傳送而來,則該同軸電纜、光纖電纜、雙絞線、dsl或無線技術(shù)(諸如紅外、無線電、以及微波)就被包括在介質(zhì)的定義之中。如本文中所使用的盤(disk)和碟(disc)包括壓縮碟(cd)、激光碟、光碟、數(shù)字多用碟(dvd)、軟盤、和
因此,某些方面可包括用于執(zhí)行本文中給出的操作的計(jì)算機(jī)程序產(chǎn)品。例如,此類計(jì)算機(jī)程序產(chǎn)品可包括其上存儲(chǔ)(和/或編碼)有指令的計(jì)算機(jī)可讀介質(zhì),這些指令能由一個(gè)或多個(gè)處理器執(zhí)行以執(zhí)行本文中所描述的操作。對(duì)于某些方面,計(jì)算機(jī)程序產(chǎn)品可包括包裝材料。
此外,應(yīng)當(dāng)領(lǐng)會(huì),用于執(zhí)行本文中所描述的方法和技術(shù)的模塊和/或其它恰適裝置能由用戶終端和/或基站在適用的場合下載和/或以其他方式獲得。例如,此類設(shè)備能被耦合至服務(wù)器以促成用于執(zhí)行本文中所描述的方法的裝置的轉(zhuǎn)移。替換地,本文所述的各種方法能經(jīng)由存儲(chǔ)裝置(例如,ram、rom、諸如壓縮碟(cd)或軟盤等物理存儲(chǔ)介質(zhì)等)來提供,以使得一旦將該存儲(chǔ)裝置耦合至或提供給用戶終端和/或基站,該設(shè)備就能獲得各種方法。此外,可利用適于向設(shè)備提供本文所描述的方法和技術(shù)的任何其他合適的技術(shù)。
將理解,權(quán)利要求并不被限定于以上所解說的精確配置和組件??稍谝陨纤枋龅姆椒ê脱b置的布局、操作和細(xì)節(jié)上作出各種改動(dòng)、更換和變形而不會(huì)脫離權(quán)利要求的范圍。