本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,更具體地涉及一種神經(jīng)網(wǎng)絡(luò)及其構(gòu)建方法、裝置和系統(tǒng)。
背景技術(shù):
神經(jīng)網(wǎng)絡(luò)在圖像識別、語音識別以及文字識別等領(lǐng)域中已經(jīng)有了廣泛且成功的應(yīng)用。實際使用神經(jīng)網(wǎng)絡(luò)時,由于神經(jīng)網(wǎng)絡(luò)參數(shù)多,消耗的計算資源較大。特別在手機等計算能力受限的平臺上,計算造成長延時,還對功耗、散熱等帶來挑戰(zhàn)。
技術(shù)實現(xiàn)要素:
為了解決上述問題而提出了本發(fā)明。根據(jù)本發(fā)明一方面,提供了一種神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法,所述方法包括:獲取包括卷積層的原始神經(jīng)網(wǎng)絡(luò),所述原始神經(jīng)網(wǎng)絡(luò)的卷積層定義為原始卷積層;以及根據(jù)變換規(guī)則,將所述原始神經(jīng)網(wǎng)絡(luò)的至少一個原始卷積層變換為新的卷積層,以用于構(gòu)建新的神經(jīng)網(wǎng)絡(luò);其中,所述新的卷積層包括第一卷積層和與所述第一卷積層連接的第二卷積層,所述第一卷積層為每信道共享卷積的卷積層,所述第二卷積層為與原始卷積層相比卷積核尺寸變小的卷積層,所述新的卷積層的輸入輸出與所述原始卷積層的輸入輸出均相同。
在本發(fā)明的一個實施例中,所述第一卷積層為輸入信道每信道共享卷積的卷積層或輸出信道每信道共享卷積的卷積層。
在本發(fā)明的一個實施例中,所述第一卷積層的輸入等于所述原始卷積層的輸入,所述第一卷積層的輸出作為所述第二卷積層的輸入,所述第二卷積層的輸出等于所述原始卷積層的輸出。
在本發(fā)明的一個實施例中,所述第二卷積層的輸入等于所述原始卷積層的輸入,所述第二卷積層的輸出作為所述第一卷積層的輸入,所述第一卷積層的輸出等于所述原始卷積層的輸出。
在本發(fā)明的一個實施例中,所述第一卷積層的卷積核的尺寸等于所述原始卷積層的卷積核的尺寸。
在本發(fā)明的一個實施例中,所述第二卷積層為1×1卷積層。
在本發(fā)明的一個實施例中,所述第一卷積層的卷積核的維度等于所述原始卷積層的卷積核的維度。
根據(jù)本發(fā)明另一方面,提供了一種神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置,所述裝置包括:獲取模塊,用于獲取包括卷積層的原始神經(jīng)網(wǎng)絡(luò),所述原始神經(jīng)網(wǎng)絡(luò)的卷積層定義為原始卷積層;以及變換模塊,用于根據(jù)變換規(guī)則,將所述原始神經(jīng)網(wǎng)絡(luò)的至少一個原始卷積層變換為新的卷積層,以用于構(gòu)建新的神經(jīng)網(wǎng)絡(luò);其中,所述新的卷積層包括第一卷積層和與所述第一卷積層連接的第二卷積層,所述第一卷積層為每信道共享卷積的卷積層,所述第二卷積層為與原始卷積層相比卷積核尺寸變小的卷積層,所述新的卷積層的輸入輸出與所述原始卷積層的輸入輸出均相同。
在本發(fā)明的一個實施例中,所述第一卷積層為輸入信道每信道共享卷積的卷積層或輸出信道每信道共享卷積的卷積層。
在本發(fā)明的一個實施例中,所述第一卷積層的輸入等于所述原始卷積層的輸入,所述第一卷積層的輸出作為所述第二卷積層的輸入,所述第二卷積層的輸出等于所述原始卷積層的輸出。
在本發(fā)明的一個實施例中,所述第二卷積層的輸入等于所述原始卷積層的輸入,所述第二卷積層的輸出作為所述第一卷積層的輸入,所述第一卷積層的輸出等于所述原始卷積層的輸出。
在本發(fā)明的一個實施例中,所述第一卷積層的卷積核的尺寸等于所述原始卷積層的卷積核的尺寸。
在本發(fā)明的一個實施例中,所述第二卷積層為1×1卷積層。
在本發(fā)明的一個實施例中,所述第一卷積層的卷積核的維度等于所述原始卷積層的卷積核的維度。
根據(jù)本發(fā)明又一方面,提供了一種神經(jīng)網(wǎng)絡(luò)的構(gòu)建系統(tǒng),所述系統(tǒng)包括處理器和存儲裝置,所述存儲裝置上存儲有計算機程序,所述計算機程序在被所述處理器運行時執(zhí)行上述任一項所述的方法。
根據(jù)本發(fā)明再一方面,提供了一種神經(jīng)網(wǎng)絡(luò),所述神經(jīng)網(wǎng)絡(luò)是通過采用上述任一項或幾項所述的方法、裝置或系統(tǒng)而構(gòu)建的。
根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)及其構(gòu)建方法、裝置和系統(tǒng)通過將神經(jīng)網(wǎng)絡(luò)的至少一個卷積層變換為每信道共享卷積的卷積層與卷積核尺寸變小的卷積層的組合來構(gòu)建新的神經(jīng)網(wǎng)絡(luò),可在確保神經(jīng)網(wǎng)絡(luò)實現(xiàn)功能不變的情況下減小神經(jīng)網(wǎng)絡(luò)的計算量。
附圖說明
通過結(jié)合附圖對本發(fā)明實施例進(jìn)行更詳細(xì)的描述,本發(fā)明的上述以及其它目的、特征和優(yōu)勢將變得更加明顯。附圖用來提供對本發(fā)明實施例的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中,相同的參考標(biāo)號通常代表相同部件或步驟。
圖1示出用于實現(xiàn)根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法和裝置的示例電子設(shè)備的示意性框圖;
圖2示出根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法的示意性流程圖;
圖3A~圖3F示例性地示出不同變換規(guī)則下變換為不同的新的卷積層的示意圖;
圖4示出根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置的示意性框圖;以及
圖5示出根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建系統(tǒng)的示意性框圖。
具體實施方式
為了使得本發(fā)明的目的、技術(shù)方案和優(yōu)點更為明顯,下面將參照附圖詳細(xì)描述根據(jù)本發(fā)明的示例實施例。顯然,所描述的實施例僅僅是本發(fā)明的一部分實施例,而不是本發(fā)明的全部實施例,應(yīng)理解,本發(fā)明不受這里描述的示例實施例的限制?;诒景l(fā)明中描述的本發(fā)明實施例,本領(lǐng)域技術(shù)人員在沒有付出創(chuàng)造性勞動的情況下所得到的所有其它實施例都應(yīng)落入本發(fā)明的保護(hù)范圍之內(nèi)。
首先,參照圖1來描述用于實現(xiàn)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法和裝置的示例電子設(shè)備100。
如圖1所示,電子設(shè)備100包括一個或多個處理器102、一個或多個存儲裝置104、輸入裝置106、輸出裝置108以及圖像傳感器110,這些組件通過總線系統(tǒng)112和/或其它形式的連接機構(gòu)(未示出)互連。應(yīng)當(dāng)注意,圖1所示的電子設(shè)備100的組件和結(jié)構(gòu)只是示例性的,而非限制性的,根據(jù)需要,所述電子設(shè)備也可以具有其他組件和結(jié)構(gòu)。
所述處理器102可以是中央處理單元(CPU)或者具有數(shù)據(jù)處理能力和/或指令執(zhí)行能力的其它形式的處理單元,并且可以控制所述電子設(shè)備100中的其它組件以執(zhí)行期望的功能。
所述存儲裝置104可以包括一個或多個計算機程序產(chǎn)品,所述計算機程序產(chǎn)品可以包括各種形式的計算機可讀存儲介質(zhì),例如易失性存儲器和/或非易失性存儲器。所述易失性存儲器例如可以包括隨機存取存儲器(RAM)和/或高速緩沖存儲器(cache)等。所述非易失性存儲器例如可以包括只讀存儲器(ROM)、硬盤、閃存等。在所述計算機可讀存儲介質(zhì)上可以存儲一個或多個計算機程序指令,處理器102可以運行所述程序指令,以實現(xiàn)下文所述的本發(fā)明實施例中(由處理器實現(xiàn))的客戶端功能以及/或者其它期望的功能。在所述計算機可讀存儲介質(zhì)中還可以存儲各種應(yīng)用程序和各種數(shù)據(jù),例如所述應(yīng)用程序使用和/或產(chǎn)生的各種數(shù)據(jù)等。
所述輸入裝置106可以是用戶用來輸入指令的裝置,并且可以包括鍵盤、鼠標(biāo)、麥克風(fēng)和觸摸屏等中的一個或多個。
所述輸出裝置108可以向外部(例如用戶)輸出各種信息(例如圖像或聲音),并且可以包括顯示器、揚聲器等中的一個或多個。
所述圖像傳感器110可以拍攝用戶期望的圖像(例如照片、視頻等),并且將所拍攝的圖像存儲在所述存儲裝置104中以供其它組件使用。
示例性地,用于實現(xiàn)根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法和裝置的示例電子設(shè)備可以被實現(xiàn)為諸如智能手機、平板電腦等。
下面,將參考圖2描述根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法200。
在步驟S210,獲取包括卷積層的原始神經(jīng)網(wǎng)絡(luò),所述原始神經(jīng)網(wǎng)絡(luò)的卷積層定義為原始卷積層。
在一個實施例中,獲取的神經(jīng)網(wǎng)絡(luò)可以為包括卷積層的任意神經(jīng)網(wǎng)絡(luò),例如卷積神經(jīng)網(wǎng)絡(luò)等。此處,將所獲取的神經(jīng)網(wǎng)絡(luò)稱為原始神經(jīng)網(wǎng)絡(luò)是為了與將要構(gòu)建的新的神經(jīng)網(wǎng)絡(luò)相區(qū)別,而非起到任何限定作用。類似地,將所獲取的神經(jīng)網(wǎng)絡(luò)所包括的卷積層定義為原始卷積層是為了與將要構(gòu)建的新的神經(jīng)網(wǎng)絡(luò)的新的卷積層相區(qū)別,而非起到任何限定作用。
在步驟S210中,之所以要獲取包括卷積層的神經(jīng)網(wǎng)絡(luò)以用于后續(xù)的步驟,是因為經(jīng)過本申請的發(fā)明人和申請人研究發(fā)現(xiàn),神經(jīng)網(wǎng)絡(luò)的計算量主要集中在卷積層上(當(dāng)然,是在神經(jīng)網(wǎng)絡(luò)包括卷積層的前提下)。
例如,常用的卷積層的參數(shù)可以表示為(K,C,H,W)。其中,C為該卷積層的輸入信道的數(shù)目,K為該卷積層的輸出信道的數(shù)目,H和W分別為該卷積層的卷積核的高和寬(其決定卷積核的尺寸/大小)。對于該卷積層的計算,上述參數(shù)意味著每次計算會對C個輸入信道采集尺寸為高H寬W的圖片小塊(patch),然后計算K個輸出信道的值。對于該卷積層,一次前向傳播的計算量為上述四個參數(shù)的乘積,即該卷積層的計算量Q1=KCHW。由此,可以注意到該卷積層的計算量和H與W的乘積成正比。此外,該卷積層的參數(shù)個數(shù)也為上述四個參數(shù)的乘積,即該卷積層的參數(shù)個數(shù)N1=KCHW。在本申請中,主要針對原始卷積層的卷積核的大小為H>1、W>1的情況。
在一個示例中,當(dāng)上述卷積層的四個參數(shù)取值為(512,256,3,3)時,該卷積層的一次前向傳播的計算量為512×256×3×3=1179648,參數(shù)個數(shù)為512×256×3×3=1179648。這樣的計算量是相當(dāng)龐大的。因此,可以對其進(jìn)行改進(jìn)以減小計算量。
下面返回參考圖2繼續(xù)描述根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法200的步驟。
在步驟S220,根據(jù)變換規(guī)則,將所述原始神經(jīng)網(wǎng)絡(luò)的至少一個原始卷積層變換為新的卷積層,以用于構(gòu)建新的神經(jīng)網(wǎng)絡(luò)。其中,所述新的卷積層包括第一卷積層和與所述第一卷積層連接的第二卷積層,所述第一卷積層為每信道共享卷積的卷積層,所述第二卷積層為與原始卷積層相比卷積核尺寸變小的卷積層,所述新的卷積層的輸入輸出與所述原始卷積層的輸入輸出均相同。
在一個實施例中,可以將原始神經(jīng)網(wǎng)絡(luò)所包括的所有卷積層(即所有的原始卷積層)都變換為根據(jù)本發(fā)明實施例的新的卷積層(后面將對所述新的卷積層進(jìn)行詳細(xì)描述)。在另一個實施例中,可以將原始神經(jīng)網(wǎng)絡(luò)所包括的一個或一部分原始卷積層變換為根據(jù)本發(fā)明實施例的新的卷積層,這都可以根據(jù)預(yù)定需求來決定。因此,可以根據(jù)預(yù)定需求有選擇地對原始神經(jīng)網(wǎng)絡(luò)的至少一個原始卷積層進(jìn)行變換。
在一個實施例中,將原始神經(jīng)網(wǎng)絡(luò)的原始卷積層變換為新的卷積層可遵循一定的變換規(guī)則,不同的變換規(guī)則將會使原始神經(jīng)網(wǎng)絡(luò)的原始卷積層變換為不同的新卷積層(下文將參考圖3A-3F示例性地描述不同的變換規(guī)則以及變換為的不同的新的卷積層)。
示例性地,多種不同的變換規(guī)則都包括基本變換規(guī)則,即,變換后得到的新的卷積層包括第一卷積層和與第一卷積層連接的第二卷積層。其中,第一卷積層為每信道共享卷積的卷積層,第二卷積層為與原始卷積層相比卷積核尺寸變小的卷積層,新的卷積層的輸入輸出與原始卷積層的輸入輸出均相同。
其中,每信道共享卷積可以指輸入信道每信道共享卷積或輸出信道每信道共享卷積。輸入信道每信道共享卷積的卷積層可以理解為所有的輸入信道共享該卷積層的卷積,也就意味著該卷積層的計算量與輸入信道的個數(shù)無關(guān),僅取決于輸出信道的個數(shù)和卷積核的尺寸。類似地,輸出信道每信道共享卷積的卷積層可以理解為所有的輸出信道共享該卷積層的卷積,也就意味著該卷積層的計算量與輸出信道的個數(shù)無關(guān),僅取決于輸入信道的個數(shù)和卷積核的尺寸。很明顯,不論是輸入信道每信道共享卷積還是輸出信道每信道共享卷積,每信道共享卷積的卷積層的計算量會大大減小。
而對于第二卷積層,其卷積核的尺寸小于原始卷積層的卷積核的尺寸,其輸入信道或輸出信道中的一個取決于原始卷積層的輸入信道或輸出信道。因此,相比較而言,其計算量也會減小。
新的卷積層的計算量等于第一卷積層的計算量加上第二卷積層的計算量,也就是說,通過變換,將參數(shù)均是相乘關(guān)系的計算量變?yōu)榱瞬糠窒喑瞬糠窒嗉拥年P(guān)系,因此可大大減小計算量。下面將通過具體的實施例來描述。
圖3A~圖3F示例性地示出不同變換規(guī)則下變換為不同的新的卷積層的示意圖。示例性地,不同的變換規(guī)則都包括基本變換規(guī)則,即變換后的所述新的卷積層包括第一卷積層和與所述第一卷積層連接的第二卷積層,所述第一卷積層為每信道共享卷積的卷積層,所述第二卷積層為與原始卷積層相比卷積核尺寸變小的卷積層,所述新的卷積層的輸入輸出與所述原始卷積層的輸入輸出均相同。
參考圖3A,圖3A示出了根據(jù)變換規(guī)則R1將原始卷積層300變換為新的卷積層310的示意圖。為了描述簡單,僅在圖3A中示出對原始神經(jīng)網(wǎng)絡(luò)的一個原始卷積層300的變換,但應(yīng)理解,也可以對原始神經(jīng)網(wǎng)絡(luò)的多個或所有原始卷積層進(jìn)行變換。
如圖3A所示,原始卷積層300的參數(shù)為(K,C,H,W)。如前所述,C為原始卷積層300的輸入信道的數(shù)目,K為原始卷積層300的輸出信道的數(shù)目,H和W分別為原始卷積層300的卷積核的高和寬。如前所述,原始卷積層300的計算量Q1=KCHW。
基于變換規(guī)則R1,將原始卷積層300變換為新的卷積層310。如圖3A所示,新的卷積層包括每信道共享卷積的第一卷積層311以及卷積核尺寸小于原始卷積層300的卷積層尺寸的第二卷積層312。其中,第一卷積層311的卷積核的高和寬分別為H0和W0,第二卷積層312的高和寬分別為H1和W1,而且有H1W1<HW。第一卷積層311進(jìn)行的卷積為H0×W0每信道卷積,第二卷積層312進(jìn)行的卷積為H1×W1卷積,如圖3A所示的。
如圖3A所示,新的卷積層310的輸入信道和輸出信道的個數(shù)分別為C和K,即與原始卷積層300相比輸入輸出保持不變。在圖3A中,將第一卷積層311的輸入示出為等于原始卷積層300的輸入,將第二卷積層312的輸出示出為等于原始卷積層300的輸出,但其僅是示例性的,還可以倒置過來,即將第二卷積層312的輸入可以等于原始卷積層300的輸入,第一卷積層311的輸出等于原始卷積層300的輸出(該示例將在圖3B中示出)。此外,在圖3A中,將第一卷積層311與第二卷積層312之間的信道個數(shù)設(shè)為Z(關(guān)于Z的取值稍后討論),即第一卷積層311的輸出的信道的個數(shù)為Z,且第一卷積層311的參數(shù)為(Z,C,H0,W0),第二卷積層312的輸入的信道的個數(shù)為Z,且第二卷積層312的參數(shù)為(K,Z,H1,W1)。
下面討論如圖3A所示的新的卷積層310的計算量和其參數(shù)個數(shù)。新的卷積層310的計算量等于第一卷積層311的計算量加上第二卷積層312的計算量,新的卷積層310的參數(shù)個數(shù)等于第一卷積層311的參數(shù)個數(shù)加上第二卷積層312的參數(shù)個數(shù)。
在一個示例中,當(dāng)?shù)谝痪矸e層311為輸入信道每信道共享卷積的卷積層時,第一卷積層311的計算量為ZH0W0,參數(shù)個數(shù)為ZH0W0/C;第二卷積層312的計算量和參數(shù)個數(shù)均為KZH1W1。因此,此時新的卷積層310的計算量為ZH0W0+KZH1W1,參數(shù)個數(shù)為ZH0W0/C+KZH1W1。
在另一個示例中,當(dāng)?shù)谝痪矸e層311為輸出信道每信道共享卷積的卷積層時,第一卷積層311的計算量為CH0W0,參數(shù)個數(shù)為CH0W0/Z;第二卷積層312的計算量和參數(shù)個數(shù)均為KZH1W1。因此,此時新的卷積層310的計算量為CH0W0+KZH1W1,參數(shù)個數(shù)為CH0W0/Z+KZH1W1。
基于上述兩個示例,鑒于參數(shù)個數(shù)一般為自然數(shù),因此當(dāng)?shù)谝痪矸e層311為輸入信道每信道共享卷積的卷積層時,Z的取值可以為C的倍數(shù)。當(dāng)?shù)谝痪矸e層311為輸出信道每信道共享卷積的卷積層時,Z的取值可以為C的約數(shù)。
只要對第一卷積層311和第二卷積層312的各自的參數(shù)選擇合適的數(shù)值,即可很容易使新的卷積層310的計算量小于原始卷積層300的計算量,即滿足ZH0W0+KZH1W1<KCHW,或滿足CH0W0+KZH1W1<KCHW。
現(xiàn)在描述前面提到的將圖3A中的第一卷積層311和第二卷積層312倒置的情況,參見圖3B。
圖3B示出了根據(jù)變換規(guī)則R1’將原始卷積層300變換為新的卷積層310’的示意圖。由于圖3B與圖3A相比,所示對原始卷積層300的變換的區(qū)別僅在于將第一卷積層和第二卷積層的位置互換,其余配置都不變,因此為了簡潔,與圖3A相同的地方不再詳細(xì)描述。
如圖3B所示,第一卷積層311’的參數(shù)為(K,Z,H0,W0),第二卷積層312’的參數(shù)為(Z,C,H1,W1)。新的卷積層310’的計算量等于第二卷積層312’的計算量加上第一卷積層311’的計算量,新的卷積層310’的參數(shù)個數(shù)等于第二卷積層312’的參數(shù)個數(shù)加上第一卷積層311’的參數(shù)個數(shù)。
在一個示例中,當(dāng)?shù)谝痪矸e層311’為輸入信道每信道共享卷積的卷積層時,第一卷積層311’的計算量為KH0W0,參數(shù)個數(shù)為KH0W0/Z;第二卷積層312’的計算量和參數(shù)個數(shù)均為ZCH1W1。因此,此時新的卷積層310’的計算量為KH0W0+ZCH1W1,參數(shù)個數(shù)為KH0W0/Z+ZCH1W1。
在另一個示例中,當(dāng)?shù)谝痪矸e層311’為輸出信道每信道共享卷積的卷積層時,第一卷積層311’的計算量為ZH0W0,參數(shù)個數(shù)為ZH0W0/K;第二卷積層312’的計算量和參數(shù)個數(shù)均為ZCH1W1。因此,此時新的卷積層310’的計算量為ZH0W0+ZCH1W1,參數(shù)個數(shù)為ZH0W0/K+ZCH1W1。
基于上述兩個示例,鑒于參數(shù)個數(shù)一般為自然數(shù),因此當(dāng)?shù)谝痪矸e層311’為輸入信道每信道共享卷積的卷積層時,Z的取值可以為K的約數(shù)。當(dāng)?shù)谝痪矸e層311’為輸出信道每信道共享卷積的卷積層時,Z的取值可以為K的倍數(shù)。
只要對第一卷積層311’和第二卷積層312’的各自的參數(shù)選擇合適的數(shù)值,即可很容易使新的卷積層310’的計算量小于原始卷積層300的計算量,即滿足KH0W0+ZCH1W1<KCHW,或ZH0W0+ZCH1W1<KCHW。
在一個實施例中,第一卷積層的卷積核的尺寸可以等于原始卷積層的卷積核的尺寸。該實施例體現(xiàn)在圖3A中時,意味著第一卷積層311的卷積核的高H0和寬W0滿足H0=H且W0=W,或者滿足H0W0=HW。這樣對第一卷積層的參數(shù)進(jìn)行設(shè)定可以使計算更為簡便。進(jìn)一步地,在一個實施例中,第二卷積層可以為1×1卷積層。這樣對第二卷積層的參數(shù)進(jìn)行的設(shè)定可以進(jìn)一步簡化計算過程,且因為結(jié)構(gòu)簡單,所以更易于實現(xiàn)。該實施例體現(xiàn)在圖3A中時,意味著第二卷積層312的高H1和寬W1均為1。下面參考圖3C描述這兩個實施例相結(jié)合的實施例。
圖3C示出了根據(jù)變換規(guī)則R2將原始卷積層300變換為新的卷積層320的示意圖。為了描述簡單,僅在圖3C中示出對原始神經(jīng)網(wǎng)絡(luò)的一個原始卷積層300的變換,但應(yīng)理解,也可以對原始神經(jīng)網(wǎng)絡(luò)的多個或所有原始卷積層進(jìn)行變換。
如圖3C所示,原始卷積層300的參數(shù)為(K,C,H,W)。如前所述,C為原始卷積層300的輸入信道的數(shù)目,K為原始卷積層300的輸出信道的數(shù)目,H和W分別為原始卷積層300的卷積核的高和寬。如前所述,原始卷積層300的計算量Q1=KCHW。
基于變換規(guī)則R2,將原始卷積層300變換為新的卷積層320。如圖3C所示,新的卷積層包括每信道共享卷積的第一卷積層321以及卷積核大小為1×1的第二卷積層322。其中,第一卷積層321的卷積核的高和寬分別為H和W,第二卷積層322的卷積核的高和寬均為1。第一卷積層321進(jìn)行的卷積為H×W每信道卷積,第二卷積層322進(jìn)行的卷積為1×1卷積,如圖3C所示的。
如圖3C所示,新的卷積層320的輸入信道和輸出信道的個數(shù)分別為C和K,即與原始卷積層300相比輸入輸出保持不變。在圖3C中,將第一卷積層321的輸入示出為等于原始卷積層300的輸入,將第二卷積層322的輸出示出為等于原始卷積層300的輸出,但其僅是示例性的,還可以倒置過來,即將第二卷積層322的輸入可以等于原始卷積層300的輸入,第一卷積層321的輸出等于原始卷積層300的輸出(該示例將在圖3D中示出)。此外,在圖3C中,將第一卷積層321與第二卷積層322之間的信道個數(shù)設(shè)為Z,即第一卷積層321的參數(shù)為(Z,C,H,W),第二卷積層322的參數(shù)為(K,Z,1,1)。
下面討論如圖3C所示的新的卷積層320的計算量和其參數(shù)個數(shù)。新的卷積層320的計算量等于第一卷積層321的計算量加上第二卷積層322的計算量,新的卷積層320的參數(shù)個數(shù)等于第一卷積層321的參數(shù)個數(shù)加上第二卷積層322的參數(shù)個數(shù)。
在一個示例中,當(dāng)?shù)谝痪矸e層321為輸入信道每信道共享卷積的卷積層時,第一卷積層321的計算量為ZHW,參數(shù)個數(shù)為ZHW/C;第二卷積層322的計算量和參數(shù)個數(shù)均為KZ。因此,此時新的卷積層320的計算量為ZHW+KZ,參數(shù)個數(shù)為ZHW/C+KZ。
在該示例中,繼續(xù)采用先前的示例取(K,C,H,W)=(512,256,3,3),Z通常可取C的倍數(shù),例如簡單地取C的1倍,即Z=256,則新的卷積層320的計算量為ZHW+KZ=256×3×3+512×256=133376,參數(shù)個數(shù)為ZHW/C+KZ=256×3×3/256+512×256=131081。與原始卷積層300的計算量(KCHW=512×256×3×3=1179648)相比,計算量變?yōu)樵瓉淼?1.3%,參數(shù)個數(shù)變?yōu)榱嗽瓉淼?1.1%,達(dá)到了明顯加速與減小模型大小的效果。
在另一個示例中,當(dāng)?shù)谝痪矸e層321為輸出信道每信道共享卷積的卷積層時,第一卷積層321的計算量為CHW,參數(shù)個數(shù)為CHW/Z;第二卷積層322的計算量和參數(shù)個數(shù)均為KZ。因此,此時新的卷積層320的計算量為CHW+KZ,參數(shù)個數(shù)為CHW/Z+KZ。
在該示例中,Z通??扇的約數(shù),例如簡單地取Z=C,則Z=256,則新的卷積層320的計算量為CHW+KZ=256×3×3+512×256=133376,參數(shù)個數(shù)為ZHW/C+KZ=256×3×3/256+512×256=131081。與原始卷積層300相比,計算量變?yōu)樵瓉淼?1.3%,參數(shù)個數(shù)變?yōu)榱嗽瓉淼?1.1%,達(dá)到了明顯加速與減小模型大小的效果。
現(xiàn)在描述前面提到的將圖3C中的第一卷積層321和第二卷積層322倒置的情況,參見圖3D。
圖3D示出了根據(jù)變換規(guī)則R2’將原始卷積層300變換為新的卷積層320’的示意圖。由于圖3D與圖3C相比,所示對原始卷積層300的變換的區(qū)別僅在于將第一卷積層和第二卷積層的位置互換,其余配置都不變,因此為了簡潔,與圖3C相同的地方不再詳細(xì)描述。
如圖3D所示,第一卷積層321’的參數(shù)為(K,Z,H,W),第二卷積層322’的參數(shù)為(Z,C,1,1)。新的卷積層320’的計算量等于第二卷積層322’的計算量加上第一卷積層321’的計算量,新的卷積層320’的參數(shù)個數(shù)等于第二卷積層322’的參數(shù)個數(shù)加上第一卷積層321’的參數(shù)個數(shù)。
在一個示例中,當(dāng)?shù)谝痪矸e層321’為輸入信道每信道共享卷積的卷積層時,第一卷積層321’的計算量為KHW,參數(shù)個數(shù)為KHW/Z;第二卷積層322’的計算量和參數(shù)個數(shù)均為ZC。因此,此時新的卷積層320’的計算量為KHW+ZC,參數(shù)個數(shù)為KHW/Z+ZC。
在該示例中,繼續(xù)采用先前的示例取(K,C,H,W)=(512,256,3,3),Z通??扇的約數(shù),例如簡單地設(shè)Z=K,即Z=512,則新的卷積層320’的計算量為KHW+ZC=512×3×3+512×256=135680,參數(shù)個數(shù)為KHW/Z+ZC=512×3×3/512+512×256=131081。與原始卷積層300的計算量(KCHW=512×256×3×3=1179648)相比,計算量變?yōu)樵瓉淼?1.5%,參數(shù)個數(shù)變?yōu)榱嗽瓉淼?1.1%,達(dá)到了明顯加速與減小模型大小的效果。
在另一個示例中,當(dāng)?shù)谝痪矸e層321’為輸出信道每信道共享卷積的卷積層時,第一卷積層321’的計算量為ZHW,參數(shù)個數(shù)為ZHW/K;第二卷積層322’的計算量和參數(shù)個數(shù)均為ZC。因此,此時新的卷積層320’的計算量為ZHW+ZC,參數(shù)個數(shù)為ZHW/K+ZC。
在該示例中,Z通常可取K的倍數(shù),例如簡單地設(shè)Z=K,即Z=512,則新的卷積層320’的計算量為ZHW+ZC=512×3×3+512×256=135680,參數(shù)個數(shù)為ZHW/K+ZC=512×3×3/512+512×256=131081。與原始卷積層300的計算量(KCHW=512×256×3×3=1179648)相比,計算量變?yōu)樵瓉淼?1.5%,參數(shù)個數(shù)變?yōu)榱嗽瓉淼?1.1%,達(dá)到了明顯加速與減小模型大小的效果。
在又一個實施例中,第一卷積層的卷積核的維度可以等于原始卷積層的卷積核的維度。前述的示例是假定原始卷積層的卷積核的維度為二維的情況,本發(fā)明的方法可以推廣到高維度應(yīng)用中。下面結(jié)合圖3E進(jìn)行描述。
圖3E為在圖3C的基礎(chǔ)上將原始卷積層的卷積核的維度增加到三維的情況,因此,在該示例中,第一卷積層的卷積核的維度也為三維。
圖3E示出了根據(jù)變換規(guī)則R3將原始卷積層300變換為新的卷積層330的示意圖。為了描述簡單,僅在圖3E中將原始卷積層的卷積核的維度示出為三維,但應(yīng)理解,原始卷積層的卷積核的維度可以為更高維度。
如圖3E所示,原始卷積層300的參數(shù)為(K,C,H,W,D)。如前所述,C為原始卷積層300的輸入信道的數(shù)目,K為原始卷積層300的輸出信道的數(shù)目,H、W、D分別為原始卷積層300的卷積核的三個維度的大小。原始卷積層300的計算量Q1=KCHWD。
基于變換規(guī)則R3,將原始卷積層300變換為新的卷積層330。如圖3E所示,新的卷積層包括每信道共享卷積的第一卷積層331以及卷積核大小為1×1的第二卷積層332。其中,第一卷積層331的卷積核的三維參數(shù)分別為H、W和D。第一卷積層331進(jìn)行的卷積為H×W×D每信道卷積,第二卷積層332進(jìn)行的卷積為1×1卷積,如圖3E所示的。
如圖3E所示,新的卷積層330的輸入信道和輸出信道的個數(shù)分別為C和K,即與原始卷積層300相比輸入輸出保持不變。在圖3E中,將第一卷積層331的輸入示出為等于原始卷積層300的輸入,將第二卷積層332的輸出示出為等于原始卷積層300的輸出,但其僅是示例性的,還可以倒置過來,即將第二卷積層332的輸入可以等于原始卷積層300的輸入,第一卷積層331的輸出等于原始卷積層300的輸出(該示例將在圖3F中示出)。此外,在圖3E中,將第一卷積層331與第二卷積層332之間的信道個數(shù)設(shè)為Z,即第一卷積層331的參數(shù)為(Z,C,H,W,D),第二卷積層332的參數(shù)為(K,Z,1,1)。
下面討論如圖3E所示的新的卷積層330的計算量和其參數(shù)個數(shù)。新的卷積層330的計算量等于第一卷積層331的計算量加上第二卷積層332的計算量,新的卷積層330的參數(shù)個數(shù)等于第一卷積層331的參數(shù)個數(shù)加上第二卷積層332的參數(shù)個數(shù)。
在一個示例中,當(dāng)?shù)谝痪矸e層331為輸入信道每信道共享卷積的卷積層時,第一卷積層331的計算量為ZHWD,參數(shù)個數(shù)為ZHWD/C;第二卷積層322的計算量和參數(shù)個數(shù)均為KZ。因此,此時新的卷積層330的計算量為ZHWD+KZ,參數(shù)個數(shù)為ZHWD/C+KZ。
在該示例中,例如可以取(K,C,H,W,D)=(512,256,3,3,3),Z通??扇的倍數(shù),例如Z=C,即Z=256,則新的卷積層330的計算量為ZHWD+KZ=256×3×3×3+512×256=137984,新的卷積層330的參數(shù)個數(shù)為ZHWD/C+KZ=256×3×3×3/256+512×256=131099。原始卷積層計算量和參數(shù)個數(shù)均為KCHWD=512×256×3×3×3=3538944。與原始卷積層300相比,計算量變?yōu)樵瓉淼?.8%,參數(shù)個數(shù)變?yōu)榱嗽瓉淼?.7%。
在另一個示例中,當(dāng)?shù)谝痪矸e層331為輸出信道每信道共享卷積的卷積層時,第一卷積層331的計算量為CHWD,參數(shù)個數(shù)為CHWD/Z;第二卷積層332的計算量和參數(shù)個數(shù)均為KZ。因此,此時新的卷積層330的計算量為CHWD+KZ,參數(shù)個數(shù)為CHWD/Z+KZ。
在該示例中,Z通常可取C的約數(shù),例如Z=C,則新的卷積層330的計算量為CHWD+KZ=256×3×3×3+512×256=137984,參數(shù)個數(shù)為ZHWD/C+KZ=256×3×3×3/256+512×256=131099。與原始卷積層300相比,計算量變?yōu)樵瓉淼?.8%,參數(shù)個數(shù)變?yōu)榱嗽瓉淼?.7%。
在高維度應(yīng)用中,根據(jù)本發(fā)明實施例的方法達(dá)到了更為明顯加速與減小模型大小的效果。
現(xiàn)在描述前面提到的將圖3E中的第一卷積層331和第二卷積層332倒置的情況,參見圖3F。
圖3F示出了根據(jù)變換規(guī)則R3’將原始卷積層300變換為新的卷積層330’的示意圖。由于圖3F與圖3E相比,所示對原始卷積層300的變換的區(qū)別僅在于將第一卷積層和第二卷積層的位置互換,其余配置都不變,因此為了簡潔,與圖3E相同的地方不再詳細(xì)描述。
如圖3F所示,第一卷積層331’的參數(shù)為(K,Z,H,W,D),第二卷積層332’的參數(shù)為(Z,C,1,1)。新的卷積層330’的計算量等于第二卷積層332’的計算量加上第一卷積層331’的計算量,新的卷積層330’的參數(shù)個數(shù)等于第二卷積層332’的參數(shù)個數(shù)加上第一卷積層331’的參數(shù)個數(shù)。
在一個示例中,當(dāng)?shù)谝痪矸e層331’為輸入信道每信道共享卷積的卷積層時,第一卷積層331’的計算量為KHWD,參數(shù)個數(shù)為KHWD/Z;第二卷積層332’的計算量和參數(shù)個數(shù)均為ZC。因此,此時新的卷積層330’的計算量為KHWD+ZC,參數(shù)個數(shù)為KHWD/Z+ZC。
在該示例中,繼續(xù)采用先前的示例取(K,C,H,W)=(512,256,3,3,3),Z通常可取K的約數(shù),例如簡單地設(shè)Z=K,即Z=512,則新的卷積層330’的計算量為KHWD+ZC=512×3×3×3+512×256=144896,參數(shù)個數(shù)為KHWD/Z+ZC=512×3×3×3/512+512×256=131099。與原始卷積層300的計算量(KCHWD=512×256×3×3×3=3538944)相比,計算量變?yōu)樵瓉淼?%,參數(shù)個數(shù)變?yōu)榱嗽瓉淼?.7%,達(dá)到了明顯加速與減小模型大小的效果。
在另一個示例中,當(dāng)?shù)谝痪矸e層331’為輸出信道每信道共享卷積的卷積層時,第一卷積層331’的計算量為ZHWD,參數(shù)個數(shù)為ZHWD/K;第二卷積層332’的計算量和參數(shù)個數(shù)均為ZC。因此,此時新的卷積層330’的計算量為ZHWD+ZC,參數(shù)個數(shù)為ZHWD/K+ZC。
在該示例中,Z通常可取K的倍數(shù),例如簡單地設(shè)Z=K,則新的卷積層330’的計算量為ZHWD+ZC=512×3×3×3+512×256=144896,參數(shù)個數(shù)為ZHWD/K+ZC=512×3×3×3/512+512×256=131099。與原始卷積層300的計算量相比,計算量變?yōu)樵瓉淼?%,參數(shù)個數(shù)變?yōu)榱嗽瓉淼?.7%,達(dá)到了明顯加速與減小模型大小的效果。
以上示例性地描述根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法,重點介紹了將原始神經(jīng)網(wǎng)絡(luò)的原始卷積層進(jìn)行變換的不同變換規(guī)則,以及在這些變換規(guī)則下所得到的新的卷積層的結(jié)構(gòu)及其性能?;谛碌木矸e層,可以用于構(gòu)建新的神經(jīng)網(wǎng)絡(luò)。
值得注意的是,雖然結(jié)合圖3A到圖3F描述了變換為新的卷積層的實施例,但其僅是示例性的而非窮盡的描述,在本發(fā)明的構(gòu)思和教導(dǎo)下的任何修改和替換,都應(yīng)視為在本發(fā)明的范圍之內(nèi)。
基于上面的描述,根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法通過將神經(jīng)網(wǎng)絡(luò)的至少一個卷積層變換為每信道共享卷積的卷積層與卷積核尺寸變小的卷積層的組合來構(gòu)建新的神經(jīng)網(wǎng)絡(luò),可在確保神經(jīng)網(wǎng)絡(luò)實現(xiàn)功能不變的情況下減小神經(jīng)網(wǎng)絡(luò)的計算量。
此外,由于根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法所構(gòu)建的新的神經(jīng)網(wǎng)絡(luò)實現(xiàn)的功能與原始神經(jīng)網(wǎng)絡(luò)相同,因為新的卷積層和原始卷積層的輸入輸出均相同,因此可采用訓(xùn)練原始神經(jīng)網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù)來訓(xùn)練新的神經(jīng)網(wǎng)絡(luò),而無需獲取新的訓(xùn)練數(shù)據(jù)。
示例性地,根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法可以在具有存儲器和處理器的設(shè)備、裝置或者系統(tǒng)中實現(xiàn)。
此外,根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法計算速度快、模型體積小,可以方便地部署到智能手機、平板電腦、個人計算機等移動設(shè)備上。替代地,根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法還可以部署在服務(wù)器端(或云端)。替代地,根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法還可以分布地部署在服務(wù)器端(或云端)和個人終端處。
下面結(jié)合圖4描述本發(fā)明另一方面提供的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置。圖4示出了根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置400的示意性框圖。
如圖4所示,根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置400包括獲取模塊410和變換模塊420。所述各個模塊可分別執(zhí)行上文中結(jié)合圖2描述的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法的各個步驟/功能。以下僅對神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置400的各單元的主要功能進(jìn)行描述,而省略以上已經(jīng)描述過的細(xì)節(jié)內(nèi)容。
獲取模塊410用于獲取包括卷積層的原始神經(jīng)網(wǎng)絡(luò),所述原始神經(jīng)網(wǎng)絡(luò)的卷積層定義為原始卷積層。變換模塊420用于根據(jù)變換規(guī)則,將所述原始神經(jīng)網(wǎng)絡(luò)的至少一個原始卷積層變換為新的卷積層,以用于構(gòu)建新的神經(jīng)網(wǎng)絡(luò),其中,所述新的卷積層包括第一卷積層和與所述第一卷積層連接的第二卷積層,所述第一卷積層為每信道共享卷積的卷積層,所述第二卷積層為與原始卷積層相比卷積核尺寸變小的卷積層,所述新的卷積層的輸入輸出與所述原始卷積層的輸入輸出均相同。獲取模塊410和變換模塊420均可以由圖1所示的電子設(shè)備中的處理器102運行存儲裝置104中存儲的程序指令來實現(xiàn)。
在一個實施例中,獲取模塊410所獲取的神經(jīng)網(wǎng)絡(luò)可以為包括卷積層的任意神經(jīng)網(wǎng)絡(luò),例如卷積神經(jīng)網(wǎng)絡(luò)等。此處,將獲取模塊410所獲取的神經(jīng)網(wǎng)絡(luò)稱為原始神經(jīng)網(wǎng)絡(luò)是為了與將要構(gòu)建的新的神經(jīng)網(wǎng)絡(luò)相區(qū)別,而非起到任何限定作用。類似地,將獲取模塊410所獲取的神經(jīng)網(wǎng)絡(luò)所包括的卷積層定義為原始卷積層是為了與將要構(gòu)建的新的神經(jīng)網(wǎng)絡(luò)的新的卷積層相區(qū)別,而非起到任何限定作用。
在一個實施例中,變換模塊420可以將原始神經(jīng)網(wǎng)絡(luò)所包括的所有卷積層(即原始卷積層)都變換為根據(jù)本發(fā)明實施例的新的卷積層(后面將對所述新的卷積層進(jìn)行詳細(xì)描述)。在另一個實施例中,變換模塊420可以將原始神經(jīng)網(wǎng)絡(luò)所包括的一個或一部分原始卷積層變換為根據(jù)本發(fā)明實施例的新的卷積層,這都可以根據(jù)預(yù)定需求來決定。因此,變換模塊420可以有選擇地對原始神經(jīng)網(wǎng)絡(luò)的至少一個原始卷積層進(jìn)行變換。
在一個實施例中,變換模塊420將原始神經(jīng)網(wǎng)絡(luò)的原始卷積層變換為新的卷積層可遵循一定的變換規(guī)則,不同的變換規(guī)則將會使原始神經(jīng)網(wǎng)絡(luò)的原始卷積層變換為不同的新卷積層,如圖3A~3F示例性地示出根據(jù)不同變換規(guī)則變換得到的不同的新的卷積層。
總體來說,變換后得到的新的卷積層包括第一卷積層和與第一卷積層連接的第二卷積層。其中,第一卷積層為每信道共享卷積的卷積層,第二卷積層為與原始卷積層相比卷積核尺寸變小的卷積層,新的卷積層的輸入輸出與原始卷積層的輸入輸出均相同。
其中,每信道共享卷積可以指輸入信道每信道共享卷積或輸出信道每信道共享卷積。輸入信道每信道共享卷積的卷積層可以理解為所有的輸入信道共享該卷積層的卷積,也就意味著該卷積層的計算量與輸入信道的個數(shù)無關(guān),僅取決于輸出信道的個數(shù)和卷積核的尺寸。類似地,輸出信道每信道共享卷積的卷積層可以理解為所有的輸出信道共享該卷積層的卷積,也就意味著該卷積層的計算量與輸出信道的個數(shù)無關(guān),僅取決于輸入信道的個數(shù)和卷積核的尺寸。很明顯,不論是輸入信道每信道共享卷積還是輸出信道每信道共享卷積,每信道共享卷積的卷積層的計算量會大大減小。
而對于第二卷積層,其卷積核的尺寸小于原始卷積層的卷積核的尺寸,其輸入信道或輸出信道中的一個取決于原始卷積層的輸入信道或輸出信道。因此,相比較而言,其計算量也會減小。
新的卷積層的計算量等于第一卷積層的計算量加上第二卷積層的計算量,也就是說,通過變換模塊420的變換,將參數(shù)均是相乘關(guān)系的計算量變?yōu)榱瞬糠窒喑瞬糠窒嗉拥年P(guān)系,因此可大大減小計算量。請參考上文結(jié)合圖3A-3F描述的不同的變換規(guī)則以及變換為的不同的新的卷積層,為了簡潔,此處不再贅述。
在一個實施例中,第一卷積層的輸入等于原始卷積層的輸入,第一卷積層的輸出作為第二卷積層的輸入,第二卷積層的輸出等于原始卷積層的輸出。在另一個實施例中,第二卷積層的輸入等于原始卷積層的輸入,第二卷積層的輸出作為第一卷積層的輸入,第一卷積層的輸出等于原始卷積層的輸出。換言之,原始卷積層可以變換為第一卷積層和第二卷積層的組合,但是第一卷積層與第二卷積層的位置排列可以是任意的,不論是第一卷積層排列在前還是第二卷積層排列在前,最終均能夠由于其組合而減少計算量。此外,雖然在圖3A到圖3F中將第一卷積層和第二卷積層的數(shù)量都示出為一個,但其僅是示例性的,也可以根據(jù)需求調(diào)整第一卷積層和/或第二卷積層的數(shù)目。
在一個實施例中,第一卷積層的卷積核的尺寸可以等于原始卷積層的卷積核的尺寸。這樣對第一卷積層的參數(shù)進(jìn)行設(shè)定可以使計算更為簡便。進(jìn)一步地,在一個實施例中,第二卷積層可以為1×1卷積層。這樣對第二卷積層的參數(shù)進(jìn)行的設(shè)定可以進(jìn)一步簡化計算過程,且因為結(jié)構(gòu)簡單,所以更易于實現(xiàn)。
在又一個實施例中,第一卷積層的卷積核的維度可以等于原始卷積層的卷積核的維度。根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置可以推廣到高維度應(yīng)用中。在高維度應(yīng)用中,根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置所構(gòu)建的新的神經(jīng)網(wǎng)絡(luò)達(dá)到了更為明顯加速與減小模型大小的效果。
基于上面的描述,根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置通過將神經(jīng)網(wǎng)絡(luò)的至少一個卷積層變換為每信道共享卷積的卷積層與卷積核尺寸變小的卷積層的組合來構(gòu)建新的神經(jīng)網(wǎng)絡(luò),可在確保神經(jīng)網(wǎng)絡(luò)實現(xiàn)功能不變的情況下減小神經(jīng)網(wǎng)絡(luò)的計算量。
圖5示出了根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建系統(tǒng)500的示意性框圖。神經(jīng)網(wǎng)絡(luò)的構(gòu)建系統(tǒng)500包括存儲裝置510以及處理器520。
其中,存儲裝置510存儲用于實現(xiàn)根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法中的相應(yīng)步驟的程序代碼。處理器520用于運行存儲裝置510中存儲的程序代碼,以執(zhí)行根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法的相應(yīng)步驟,并且用于實現(xiàn)根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置中的相應(yīng)模塊。
在一個實施例中,在所述程序代碼被處理器520運行時使得神經(jīng)網(wǎng)絡(luò)的構(gòu)建系統(tǒng)500執(zhí)行以下步驟:獲取包括卷積層的原始神經(jīng)網(wǎng)絡(luò),所述原始神經(jīng)網(wǎng)絡(luò)的卷積層定義為原始卷積層;以及根據(jù)變換規(guī)則,將所述原始神經(jīng)網(wǎng)絡(luò)的至少一個原始卷積層變換為新的卷積層,以用于構(gòu)建新的神經(jīng)網(wǎng)絡(luò);其中,所述新的卷積層包括第一卷積層和與所述第一卷積層連接的第二卷積層,所述第一卷積層為每信道共享卷積的卷積層,所述第二卷積層為與原始卷積層相比卷積核尺寸變小的卷積層,所述新的卷積層的輸入輸出與所述原始卷積層的輸入輸出均相同。
在一個實施例中,所述第一卷積層為輸入信道每信道共享卷積的卷積層或輸出信道每信道共享卷積的卷積層。
在一個實施例中,所述第一卷積層的輸入等于所述原始卷積層的輸入,所述第一卷積層的輸出作為所述第二卷積層的輸入,所述第二卷積層的輸出等于所述原始卷積層的輸出。
在一個實施例中,所述第二卷積層的輸入等于所述原始卷積層的輸入,所述第二卷積層的輸出作為所述第一卷積層的輸入,所述第一卷積層的輸出等于所述原始卷積層的輸出。
在一個實施例中,所述第一卷積層的卷積核的尺寸等于所述原始卷積層的卷積核的尺寸。
在一個實施例中,所述卷積層為1×1卷積層。
在一個實施例中,所述第一卷積層的卷積核的維度等于所述原始卷積層的卷積核的維度。
此外,根據(jù)本發(fā)明實施例,還提供了一種存儲介質(zhì),在所述存儲介質(zhì)上存儲了程序指令,在所述程序指令被計算機或處理器運行時用于執(zhí)行本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法的相應(yīng)步驟,并且用于實現(xiàn)根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置中的相應(yīng)模塊。所述存儲介質(zhì)例如可以包括智能電話的存儲卡、平板電腦的存儲部件、個人計算機的硬盤、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPROM)、便攜式緊致盤只讀存儲器(CD-ROM)、USB存儲器、或者上述存儲介質(zhì)的任意組合。所述計算機可讀存儲介質(zhì)可以是一個或多個計算機可讀存儲介質(zhì)的任意組合,例如一個計算機可讀存儲介質(zhì)包含獲取原始神經(jīng)網(wǎng)絡(luò)的程序代碼,另一個計算機可讀存儲介質(zhì)包含對原始卷積層進(jìn)行變換的計算機可讀的程序代碼。
在一個實施例中,所述計算機程序指令在被計算機運行時可以實現(xiàn)根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置的各個功能模塊,并且/或者可以執(zhí)行根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法。
在一個實施例中,所述計算機程序指令在被計算機或處理器運行時使計算機或處理器執(zhí)行以下步驟:獲取包括卷積層的原始神經(jīng)網(wǎng)絡(luò),所述原始神經(jīng)網(wǎng)絡(luò)的卷積層定義為原始卷積層;以及根據(jù)變換規(guī)則,將所述原始神經(jīng)網(wǎng)絡(luò)的至少一個原始卷積層變換為新的卷積層,以用于構(gòu)建新的神經(jīng)網(wǎng)絡(luò);其中,所述新的卷積層包括第一卷積層和與所述第一卷積層連接的第二卷積層,所述第一卷積層為每信道共享卷積的卷積層,所述第二卷積層為與原始卷積層相比卷積核尺寸變小的卷積層,所述新的卷積層的輸入輸出與所述原始卷積層的輸入輸出均相同。
在一個實施例中,所述第一卷積層為輸入信道每信道共享卷積的卷積層或輸出信道每信道共享卷積的卷積層。
在一個實施例中,所述第一卷積層的輸入等于所述原始卷積層的輸入,所述第一卷積層的輸出作為所述第二卷積層的輸入,所述第二卷積層的輸出等于所述原始卷積層的輸出。
在一個實施例中,所述第二卷積層的輸入等于所述原始卷積層的輸入,所述第二卷積層的輸出作為所述第一卷積層的輸入,所述第一卷積層的輸出等于所述原始卷積層的輸出。
在一個實施例中,所述第一卷積層的卷積核的尺寸等于所述原始卷積層的卷積核的尺寸。
在一個實施例中,所述卷積層為1×1卷積層。
在一個實施例中,所述第一卷積層的卷積核的維度等于所述原始卷積層的卷積核的維度。
根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建裝置中的各模塊可以通過用于實現(xiàn)根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法和裝置的電子設(shè)備的處理器運行在存儲器中存儲的計算機程序指令來實現(xiàn),或者可以在根據(jù)本發(fā)明實施例的計算機程序產(chǎn)品的計算機可讀存儲介質(zhì)中存儲的計算機指令被計算機運行時實現(xiàn)。
此外,根據(jù)本發(fā)明實施例,還提供了一種神經(jīng)網(wǎng)絡(luò),所述神經(jīng)網(wǎng)絡(luò)是通過采用上述任意實施例所述的方法、裝置或系統(tǒng)而構(gòu)建的。
根據(jù)本發(fā)明實施例的神經(jīng)網(wǎng)絡(luò)及其構(gòu)建方法、裝置、系統(tǒng)以及存儲介質(zhì)通過將神經(jīng)網(wǎng)絡(luò)的至少一個卷積層變換為每信道共享卷積的卷積層與卷積核尺寸變小的卷積層的組合來構(gòu)建新的神經(jīng)網(wǎng)絡(luò),可在確保神經(jīng)網(wǎng)絡(luò)實現(xiàn)功能不變的情況下減小神經(jīng)網(wǎng)絡(luò)的計算量。
盡管這里已經(jīng)參考附圖描述了示例實施例,應(yīng)理解上述示例實施例僅僅是示例性的,并且不意圖將本發(fā)明的范圍限制于此。本領(lǐng)域普通技術(shù)人員可以在其中進(jìn)行各種改變和修改,而不偏離本發(fā)明的范圍和精神。所有這些改變和修改意在被包括在所附權(quán)利要求所要求的本發(fā)明的范圍之內(nèi)。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的設(shè)備和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的設(shè)備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個設(shè)備,或一些特征可以忽略,或不執(zhí)行。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本發(fā)明并幫助理解各個發(fā)明方面中的一個或多個,在對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該本發(fā)明的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如相應(yīng)的權(quán)利要求書所反映的那樣,其發(fā)明點在于可以用少于某個公開的單個實施例的所有特征的特征來解決相應(yīng)的技術(shù)問題。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域的技術(shù)人員可以理解,除了特征之間相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的物品分析設(shè)備中的一些模塊的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
以上所述,僅為本發(fā)明的具體實施方式或?qū)唧w實施方式的說明,本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。