亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于量化和模型剪枝的卷積神經(jīng)網(wǎng)絡(luò)壓縮方法

        2021-10-28 07:50:58吳衛(wèi)賢黃曉丹
        軟件導(dǎo)刊 2021年10期
        關(guān)鍵詞:方法模型

        吳衛(wèi)賢,趙 鳴,黃曉丹

        (長(zhǎng)江大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,湖北 荊州 434023)

        0 引言

        近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)已成為各種計(jì)算機(jī)視覺(jué)任務(wù)的主導(dǎo)方法,如圖像分類(lèi)、目標(biāo)檢測(cè)、語(yǔ)義分割。大規(guī)模數(shù)據(jù)集、高端現(xiàn)代GPU 和新的網(wǎng)絡(luò)體系結(jié)構(gòu)允許開(kāi)發(fā)前所未有的大型CNN模型。例如,AlexNet[1]、VGGNet[2]、GoogleNet[3]和Resnet[4],目標(biāo)檢測(cè)任務(wù)中的Rcnn[5]、FastRcnn[6]、FasterRcnn[7],以及最近熱門(mén)的YOLOv3[8]所使用的darknet 模型。圖像網(wǎng)絡(luò)分類(lèi)的卷積神經(jīng)網(wǎng)絡(luò)模型已經(jīng)從8 層發(fā)展到100 多層甚至更多層[9]。從一個(gè)大型的網(wǎng)絡(luò)開(kāi)始訓(xùn)練很重要,因?yàn)檫@種模型具有一定的高性能,可以安全地刪除一組冗余參數(shù)而不會(huì)顯著地?fù)p失準(zhǔn)確率[10]。相比從頭開(kāi)始訓(xùn)練一個(gè)小的網(wǎng)絡(luò)模型,這通常是一種更好的方法,因此目前常見(jiàn)的用于模式識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)模型越來(lái)越大型化。在一個(gè)152 層卷積層的Resnet 模型中有6 000 萬(wàn)以上的參數(shù),在輸入一個(gè)224*224 的圖像時(shí),其計(jì)算量超過(guò)了20G FLOPs,這對(duì)于移動(dòng)端和物聯(lián)網(wǎng)設(shè)備應(yīng)用是負(fù)擔(dān)不起的[11]。因此,需要對(duì)這些大型卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行壓縮,降低其體積和計(jì)算成本,并且在此基礎(chǔ)上對(duì)其精度進(jìn)行一定程度的提升。

        卷積神經(jīng)網(wǎng)絡(luò)模型剪枝方法分為結(jié)構(gòu)化和非結(jié)構(gòu)化剪枝。結(jié)構(gòu)化是修剪整個(gè)過(guò)濾器,非結(jié)構(gòu)化剪枝則是直接對(duì)每層參數(shù)進(jìn)行單獨(dú)剪枝。為了解決卷積神經(jīng)網(wǎng)絡(luò)模型占用空間和計(jì)算量過(guò)大的問(wèn)題,不少研究者想通過(guò)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行剪枝以盡可能地壓縮體積、提升速度。早期,Hassibi[12]利用二階泰勒展開(kāi)選擇參數(shù)并進(jìn)行剪枝,以改善訓(xùn)練和泛化能力;Han 等[13]通過(guò)權(quán)值大小確定修剪訓(xùn)練后網(wǎng)絡(luò)中的不重要連接,以減少網(wǎng)絡(luò)所需參數(shù);CP 算法采用LASSO 回歸方式選擇剪枝通道并進(jìn)行逐層剪枝[14];SFP 采用動(dòng)態(tài)剪枝方法,主要依靠權(quán)重的范數(shù),保留BN 層的偏置系數(shù)[15]。上述剪枝方法中都出現(xiàn)了剪枝后模型精度下降的問(wèn)題,使得模型在剪枝后的識(shí)別效果不佳。

        鑒于此,本文提出一種結(jié)合剪枝和數(shù)據(jù)量化的模型壓縮方法。該方法首先通過(guò)對(duì)卷積神經(jīng)網(wǎng)絡(luò)中常見(jiàn)的卷積層和全連接層中訓(xùn)練后的權(quán)值進(jìn)行重要性評(píng)價(jià);然后,對(duì)權(quán)值及相應(yīng)通道進(jìn)行剪枝以達(dá)到降低卷積神經(jīng)網(wǎng)絡(luò)模型體積的目的;最后,對(duì)剩余權(quán)值進(jìn)行量化處理,降低卷積神經(jīng)網(wǎng)絡(luò)計(jì)算成本,并對(duì)量化后的模型進(jìn)行一定微調(diào),以恢復(fù)精度。

        1 現(xiàn)有優(yōu)化方法

        目前,針對(duì)卷積神經(jīng)網(wǎng)絡(luò)的剪枝方法主要分為兩種:權(quán)值剪枝和濾波器剪枝。兩個(gè)方法都是針對(duì)卷積層中的卷積通道進(jìn)行剪枝,但判定方法不同,一個(gè)是通過(guò)權(quán)值判定,另一個(gè)是通過(guò)濾波器判定。網(wǎng)絡(luò)模型優(yōu)化通常是針對(duì)模型占用空間大小、模型識(shí)別準(zhǔn)確率、模型識(shí)別速度3 個(gè)目標(biāo)。在目前圖形識(shí)別的CNN 網(wǎng)絡(luò)剪枝方法中,最為典型的是將CNN 網(wǎng)絡(luò)BN 層中的γ 參數(shù)作為網(wǎng)絡(luò)剪枝的縮放因子[16]。由于BN 層具有加速訓(xùn)練和有效減少過(guò)擬合現(xiàn)象的作用,因此已經(jīng)被大部分常用的圖像識(shí)別卷積神經(jīng)網(wǎng)絡(luò)模型所使用。在引入縮放因子γ 之后,通過(guò)對(duì)每個(gè)卷積通道后特征圖的特征值γ 進(jìn)行排序,然后根據(jù)排序結(jié)果設(shè)定剪枝的閾值。即當(dāng)前通道特征圖的γ 參數(shù)小于該閾值,則對(duì)當(dāng)前特征圖對(duì)應(yīng)的卷積核進(jìn)行剪枝處理??s放因子扮演的是通道選擇的角色,縮放因子的正則項(xiàng)和權(quán)重?fù)p失函數(shù)聯(lián)合優(yōu)化,網(wǎng)絡(luò)自動(dòng)鑒別不重要的通道并將其移除掉,幾乎不影響網(wǎng)絡(luò)的泛化性能。這樣可以人為設(shè)定對(duì)整個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型的剪枝幅度。例如,設(shè)定的閾值在所有卷積核的所有閾值中排列第60%,則可以減掉60%卷積核,只保留γ 參數(shù)大于60%的特征圖所對(duì)應(yīng)的卷積核。對(duì)于不同的圖像識(shí)別和不同的神經(jīng)網(wǎng)絡(luò)模型,閾值設(shè)定會(huì)有很大區(qū)別。然而,這種全局閾值設(shè)定方法有一定的局限性。當(dāng)剪枝百分比數(shù)值設(shè)定過(guò)小,則節(jié)省資源非常有限,剪枝效果不佳;當(dāng)剪枝百分比數(shù)值設(shè)定過(guò)大,則會(huì)出現(xiàn)準(zhǔn)確率大幅度下降的現(xiàn)象,這種準(zhǔn)確率的損失無(wú)法通過(guò)后期微調(diào)加以恢復(fù)。

        在神經(jīng)網(wǎng)絡(luò)模型壓縮加速方法中,通過(guò)對(duì)參數(shù)的量化壓縮參數(shù)量,并達(dá)到加速神經(jīng)網(wǎng)絡(luò)、減少計(jì)算成本的目的[17]。然而在量化過(guò)程中參數(shù)的壓縮會(huì)導(dǎo)致準(zhǔn)確率下降。為了減少參數(shù)量化帶來(lái)的準(zhǔn)確率損失,Han 等[13]提出了一種共享權(quán)重和通過(guò)權(quán)重進(jìn)行索引編碼以減小權(quán)重?cái)?shù)量和存儲(chǔ)空間的方法。該方法是指定一系列權(quán)值,然后將這些權(quán)值進(jìn)行數(shù)值共享,最后所有的權(quán)值都只能從指定的權(quán)值中進(jìn)行選擇,而這些指定的權(quán)值則通過(guò)K-means 聚類(lèi)初始化質(zhì)心。K-means 質(zhì)心的初值對(duì)最終結(jié)果影響較大,通過(guò)實(shí)驗(yàn)對(duì)比最終選擇均勻量化方法完成質(zhì)心初始化。均勻量化的結(jié)果輸出是通過(guò)所有權(quán)值的最大值和最小值之間的均勻間隔實(shí)現(xiàn)。確定質(zhì)心之后再確定量化閾值,一個(gè)權(quán)值簇里的所有權(quán)值都由這個(gè)質(zhì)心代替,最后對(duì)質(zhì)心進(jìn)行微調(diào)以恢復(fù)精度。參數(shù)量化之后對(duì)于神經(jīng)網(wǎng)絡(luò)的壓縮有一定效果,但是在量化質(zhì)心的確定方法上仍有不適用的網(wǎng)絡(luò)。一些神經(jīng)網(wǎng)絡(luò)模型可能更適合按密度量化,比如識(shí)別目標(biāo)單一的神經(jīng)網(wǎng)絡(luò)[18]。該方法只對(duì)卷積神經(jīng)網(wǎng)絡(luò)中的參數(shù)量化方法進(jìn)行了優(yōu)化,因此在選擇最優(yōu)閾值的方法中還有一定的優(yōu)化空間。

        2 剪枝與量化算法

        通過(guò)分析網(wǎng)絡(luò)模型中權(quán)值參數(shù)值的分布可以得知權(quán)值參數(shù)的重要程度。本文使用的評(píng)價(jià)方法是對(duì)權(quán)值參數(shù)的部分和值和標(biāo)準(zhǔn)差值進(jìn)行評(píng)估。將參數(shù)值為0 的權(quán)值對(duì)應(yīng)的卷積層和通道層視為對(duì)最終結(jié)果影響不大的層,再將這些層作剪枝處理。目前用于圖像識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)模型中都加入BN 層以加速訓(xùn)練進(jìn)程[19],BN 層于2015 年被提出,具有防止梯度爆炸和加速網(wǎng)絡(luò)收斂的作用。它一般位于卷積層之后,可以對(duì)卷積層之后的特征圖進(jìn)行歸一化操作。如果BN 層只是單單在卷積層之后作歸一化,然后直接將數(shù)據(jù)送入下一層,網(wǎng)絡(luò)將無(wú)法學(xué)習(xí)特征分布。因?yàn)锽N 層之后還有激活層,如果BN 層之后的數(shù)據(jù)大部分小于0,則經(jīng)過(guò)RELU 激活層之后將失去大部分特征值。因此,BN 層通過(guò)優(yōu)化縮放系數(shù)γ和偏移系數(shù)β對(duì)數(shù)據(jù)進(jìn)行歸一化處理,使得網(wǎng)絡(luò)能夠?qū)W習(xí)輸出的特征分布。BN 層的實(shí)現(xiàn)方式是讓Zin和Zout作為BN 層的輸入和輸出,β表示當(dāng)前最小塊,BN 層執(zhí)行以下轉(zhuǎn)換:

        其中,μβ和σ2分別為當(dāng)前層中輸入值的均值和方差,即:

        最后可以得到一組均值為β的新數(shù)據(jù)。因?yàn)锽N 層中的γ 縮放因子對(duì)應(yīng)每個(gè)卷積層中的特征圖都有一個(gè)不同的值,因此BN 層中的γ縮放因子可以當(dāng)作當(dāng)前層對(duì)于整個(gè)模型準(zhǔn)確率貢獻(xiàn)的評(píng)價(jià)系數(shù)。γ值越大,說(shuō)明當(dāng)前層對(duì)于模型的準(zhǔn)確率貢獻(xiàn)越大,反之貢獻(xiàn)越小。實(shí)際上,γ可以視為BN 層每個(gè)通道的權(quán)重。如果當(dāng)前輸入通道對(duì)應(yīng)的權(quán)重γ出現(xiàn)γ=0 或γ≈0 的情況,特征圖對(duì)應(yīng)的輸出通道即全為常數(shù)0,不會(huì)再對(duì)接下來(lái)的運(yùn)算產(chǎn)生影響。因此,可以通過(guò)對(duì)BN 層中的縮放因子γ的數(shù)值評(píng)估,進(jìn)而衡量特征圖中每個(gè)通道對(duì)于模型整體精準(zhǔn)度的貢獻(xiàn),當(dāng)γ=0 或者γ≈0 時(shí),可以認(rèn)為當(dāng)前通道對(duì)模型的影響可以忽略,即可剪去γ對(duì)應(yīng)特征圖的通道,最終剪去γ=0 對(duì)應(yīng)的上下卷積層的卷積核,同時(shí)壓縮模型體積,減少計(jì)算量。

        上述方式獲得的γ值可能會(huì)因?yàn)闇?zhǔn)確率的要求高而導(dǎo)致剪枝率較低,因此對(duì)于剩余的權(quán)值參數(shù)需作進(jìn)一步壓縮處理。目前用于圖像識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)模型使用的參數(shù)一般為32 位浮點(diǎn)數(shù)型。而高精度浮點(diǎn)數(shù)型的計(jì)算成本大于整型數(shù)據(jù),因此可以選用對(duì)剩余參數(shù)進(jìn)行量化的方法,大幅度壓縮剩余權(quán)值參數(shù)量,減少計(jì)算成本。神經(jīng)網(wǎng)絡(luò)對(duì)量化的實(shí)現(xiàn)需要將卷積、矩陣乘法、激活函數(shù)、池化、拼接等操作轉(zhuǎn)換為等價(jià)的8 位整數(shù)操作,然后在操作的前后分別加上量化和反量化操作,將input 從浮點(diǎn)數(shù)轉(zhuǎn)換成8位整數(shù),反量化操作將output 從8 位整數(shù)轉(zhuǎn)回浮點(diǎn)數(shù)。

        將剩余的網(wǎng)絡(luò)權(quán)值由高精度的32 位浮點(diǎn)float32 轉(zhuǎn)化成低精度的8 位定點(diǎn)數(shù)int8,使得模型大小有效變小,但是精度影響不大,運(yùn)行速度加快。具體做法是將傳入的float32 型數(shù)據(jù)轉(zhuǎn)換為int8 傳入卷積層,對(duì)應(yīng)卷積層中的權(quán)值也轉(zhuǎn)換成int8 類(lèi)型。并且,在此過(guò)程中還可以同時(shí)將BN層融入卷積層,一起作量化處理。量化操作需要將一組float 輸入轉(zhuǎn)換成uint8(0~255),先求出這組輸入的最小值min 和最大值max,然后對(duì)每個(gè)輸入數(shù)據(jù),可根據(jù)如下公式求出其量化值與反量化值。

        量化后引入的量化誤差為(max -min)/255。本文將float32 數(shù)據(jù)類(lèi)型量化成定點(diǎn)數(shù)據(jù)類(lèi)型的公式如下:

        其中,s是量化間隔,n是量化的bit 數(shù),φx是=0 時(shí)對(duì)應(yīng)的量化值,即零點(diǎn)。rfmax和rfmin是float 型數(shù)據(jù)的最大值和最小值。在tensorflow 的框架中,[]表示取整函數(shù):

        卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)卷積計(jì)算,卷積神經(jīng)網(wǎng)絡(luò)經(jīng)過(guò)量化之后,卷積操作計(jì)算原理如下:

        其中,xq、ωq、ɑq分別是量化之后的輸入、權(quán)重、卷積輸出;sx、sω、sɑ分別是輸入、權(quán)重、卷積輸出的尺度因子;φx、φω、φɑ分別是輸入、權(quán)重、卷積輸出的零點(diǎn)。

        對(duì)于真實(shí)值0 的量化誤差問(wèn)題,其解決方式是直接量化成一個(gè)整數(shù)qzero表示,如果量化值qzero所表示的值和真實(shí)值0 之間有一定誤差,則對(duì)一些操作有較大影響。在卷積或者池化層進(jìn)行padding 時(shí)需要在邊緣補(bǔ)0,Relu 激活層需要截?cái)嘈∮? 的輸入,對(duì)于不同的庫(kù),所使用的量化策略會(huì)不同。Tensorflow 庫(kù)中量化方法分為有符號(hào)輸入和無(wú)符號(hào)輸入兩種情況。有符號(hào)輸入則調(diào)整min 和max,max=MAX(-min,max),min=-max,這樣范圍就會(huì)成為對(duì)稱(chēng)的形式,[min,max]被量化至[-127,127]。無(wú)符號(hào)則min=0,將[0,max]量化至[0,255]。在nnlib 中因?yàn)椴粎^(qū)分是否為有符號(hào),因此統(tǒng)一量化到0~255。

        本文提出的結(jié)合剪枝和參數(shù)量化的模型壓縮剪枝方法為:先通過(guò)訓(xùn)練集將模型訓(xùn)練至收斂,然后通過(guò)BN 層參數(shù)和整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)中的卷積層和全連接層中的權(quán)值對(duì)整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行剪枝,再對(duì)剪枝之后剩余參數(shù)進(jìn)行量化操作。具體流程為:①設(shè)置網(wǎng)絡(luò)模型訓(xùn)練集;②將對(duì)應(yīng)的網(wǎng)絡(luò)模型訓(xùn)練至收斂;③將收斂的網(wǎng)絡(luò)模型進(jìn)行基于BN 層參數(shù)和基于整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)中卷積層和全連接層的權(quán)值參數(shù)剪枝;④對(duì)剪枝之后剩余參數(shù)進(jìn)行量化操作;⑤微調(diào)訓(xùn)練,以恢復(fù)精度;⑥對(duì)最后得到的模型輸出相關(guān)數(shù)據(jù)并檢測(cè)精度。

        為了最大程度地降低網(wǎng)絡(luò)模型的準(zhǔn)確率損失,需要對(duì)模型中的所有γ 參數(shù)進(jìn)行排序并設(shè)定一個(gè)閾值。對(duì)低于閾值的γ 參數(shù)對(duì)應(yīng)的特征圖和卷積核進(jìn)行剪枝處理。而這里需要一個(gè)對(duì)閾值進(jìn)行設(shè)定的最佳值,使得該閾值能夠?qū)φ麄€(gè)網(wǎng)絡(luò)模型在剪枝程度最大化的同時(shí)還能保留網(wǎng)絡(luò)模型的精確度。針對(duì)這一問(wèn)題,在進(jìn)行不同閾值設(shè)定后,得到不同閾值所對(duì)應(yīng)的網(wǎng)絡(luò)模型大小和準(zhǔn)確率,設(shè)定全部γ 值的3%為步長(zhǎng)。對(duì)網(wǎng)絡(luò)模型精確度與網(wǎng)絡(luò)模型剪枝程度取一個(gè)中間值,使得該閾值既能夠滿(mǎn)足剪枝目標(biāo)還保留有一定的準(zhǔn)確率。該閾值的獲取方式是通過(guò)設(shè)定一個(gè)目標(biāo)準(zhǔn)確率,舍棄低于目標(biāo)準(zhǔn)確率的閾值,然后在符合目標(biāo)準(zhǔn)確率結(jié)果的閾值中取最大值為設(shè)定閾值。具體流程如圖1 所示。

        Fig.1 Pruning process圖1 剪枝流程

        剩余參數(shù)的量化過(guò)程為:首先輸入float 型的參數(shù),然后獲得參數(shù)的最大最小值,根據(jù)其最大最小值對(duì)參數(shù)進(jìn)行量化,然后使用量化后的參數(shù)對(duì)整個(gè)卷積層、全連接層、池化層,以及批量歸一化層中的數(shù)據(jù)進(jìn)行計(jì)算操作,對(duì)最終獲得的輸出值進(jìn)行反量化操作,最后將其輸出。量化訓(xùn)練流程如圖2 所示。

        Fig.2 Quantitative training process圖2 量化訓(xùn)練流程

        構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)是以L(fǎng)enet 為基準(zhǔn),有3 個(gè)卷積層,2 個(gè)全連接層。其中,每個(gè)卷積層之間由一個(gè)池化層相連,第3 個(gè)池化層和第1 個(gè)全連接層之間通過(guò)Flatten 相連。Flatten 函數(shù)的作用是將池化層輸入過(guò)來(lái)的多維數(shù)據(jù)轉(zhuǎn)化成一維數(shù)據(jù)并輸入到全連接層,使用最大池化的方式建立池化層。全連接層所有節(jié)點(diǎn)都與上層節(jié)點(diǎn)連接,然后綜合其提取的特征圖。由于全連接的特性需要,全連接層也含有最大參數(shù)量。全連接層主要負(fù)責(zé)邏輯推斷,參數(shù)經(jīng)過(guò)訓(xùn)練后進(jìn)行調(diào)整以達(dá)到最后收斂效果。全連接層會(huì)鏈接卷積層的輸出,然后通過(guò)將三維矩陣轉(zhuǎn)變成向量的方法去除空間信息,是一種全卷積操作。其中,全連接層和卷積層中的Kernel 都使用L1 正則化方法,以防止過(guò)擬合。卷積層將輸入數(shù)據(jù)加權(quán)后進(jìn)行卷積計(jì)算,加上偏置參數(shù)biases,經(jīng)過(guò)Relu 激活函數(shù)轉(zhuǎn)化成輸出值輸入到下一層。卷積層推理如圖3 所示。

        Fig.3 Convolutional inference process圖3 卷積推理過(guò)程

        此外,在每個(gè)全連接層和全連接層的激活函數(shù)之間,加入一個(gè)BN 層,對(duì)數(shù)據(jù)進(jìn)行批量標(biāo)準(zhǔn)化,防止數(shù)據(jù)收斂過(guò)快導(dǎo)致神經(jīng)元出現(xiàn)大規(guī)模死亡現(xiàn)象。經(jīng)過(guò)卷積層和全連接層計(jì)算后的數(shù)據(jù)會(huì)經(jīng)過(guò)Dropout 層,防止模型參數(shù)與訓(xùn)練數(shù)據(jù)出現(xiàn)過(guò)擬合現(xiàn)象。輸出的數(shù)據(jù)經(jīng)過(guò)Logits 層調(diào)整輸入Softmax 函數(shù)進(jìn)行分類(lèi)輸出處理后,得到最終分類(lèi)結(jié)果和最后的卷積神經(jīng)網(wǎng)絡(luò)模型。整體卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖4 所示。

        Fig.4 Lenet structure圖4 Lenet 結(jié)構(gòu)

        3 實(shí)驗(yàn)過(guò)程與結(jié)果

        本次實(shí)驗(yàn)中,CPU 是i5-4210H,無(wú)顯卡加速。使用MNIST 手寫(xiě)數(shù)字集進(jìn)行訓(xùn)練,構(gòu)建成的卷積神經(jīng)網(wǎng)絡(luò)以L(fǎng)enet 為基準(zhǔn),增加了卷積層和池化層的結(jié)構(gòu),有3 個(gè)卷積層,2 個(gè)全連接層。

        對(duì)每個(gè)卷積層和全連接層中的權(quán)值參數(shù)進(jìn)行剪枝,需先對(duì)訓(xùn)練完成后模型中的各卷積層和全連接層的權(quán)值進(jìn)行重要性評(píng)估。因此,分別獲取covn1、covn2、covn3、fc1、fc2 中權(quán)值的各系數(shù)值分布圖,以便對(duì)各層中的權(quán)值進(jìn)行評(píng)估。在進(jìn)行權(quán)值重要性評(píng)估后,一部分低于閾值的權(quán)重會(huì)在模型中刪除,這些權(quán)重對(duì)應(yīng)的卷積通道也會(huì)在訓(xùn)練過(guò)程中被忽略掉。方法是將其中的數(shù)據(jù)直接置0 處理,得到各卷積層和全連接層中的權(quán)值在訓(xùn)練完成后的分布圖,如圖5—圖9 所示。

        Fig.5 Weight distribution of convolution layer 1圖5 卷積層1 權(quán)值分布

        Fig.6 Weight distribution of convolution layer 2圖6 卷積層2 權(quán)值分布

        Fig.7 Weight distribution of convolution layer 3圖7 卷積層3 權(quán)值分布

        Fig.8 Weight distribution of fully connected layer 1圖8 全連接層1 權(quán)值分布

        Fig.9 Weight distribution of fully connected layer 2圖9 全連接層2 權(quán)值分布

        根據(jù)各卷積層和全連接層中的權(quán)值分布情況分別進(jìn)行不同的通道剪枝處理??梢缘弥珻onv1 中有10 個(gè)Kernel 的權(quán)重和為0,可以認(rèn)定這部分對(duì)整個(gè)模型無(wú)貢獻(xiàn),可以將這部分Kernel 刪除,為了保證Kernel 數(shù)為4 的倍數(shù),刪除8 個(gè)Kernel。同理,在Conv2 中刪除16 個(gè)Kernel。在Conv3中由于權(quán)重和都很小,故做剪枝的依據(jù)是Conv3 中的權(quán)重標(biāo)準(zhǔn)差,根據(jù)Conv3 中標(biāo)準(zhǔn)差的分布,刪除8 個(gè)低于閾值的Kernel。后面的全連接層fc1 和fc2 層進(jìn)行同樣操作,再根據(jù)BN 層的γ 值進(jìn)行剪枝,最后對(duì)所有剪枝結(jié)果進(jìn)行求和,并將所有需要剪枝的通道進(jìn)行剪枝。權(quán)值標(biāo)準(zhǔn)偏差分布如圖10—圖12 所示。

        Fig.10 Standard deviation distribution of weights(1)圖10 權(quán)值標(biāo)準(zhǔn)偏差分布(1)

        Fig.11 Weight standard deviation distribution(2)圖11 權(quán)值標(biāo)準(zhǔn)偏差分布(2)

        Fig.12 Weight standard deviation distribution(3)圖12 權(quán)值標(biāo)準(zhǔn)偏差分布(3)

        完成剪枝后對(duì)權(quán)值數(shù)據(jù)進(jìn)行量化操作,將原數(shù)據(jù)類(lèi)型為float32 的權(quán)值量化為int8 類(lèi)型,進(jìn)行模型計(jì)算后再還原成float32 類(lèi)型數(shù)據(jù)。得到的網(wǎng)絡(luò)模型精確度和原模型相當(dāng),但速度上相對(duì)原模型提升了。對(duì)比方法中,CP 算法采用LASSO 回歸方式進(jìn)行逐層剪枝,精度下降很多。SFP 采用的是動(dòng)態(tài)剪枝方法,主要依靠權(quán)重范數(shù),保留了BN 層的偏置系數(shù),也會(huì)引起精度下降[20-21]。各剪枝方法結(jié)果如表1 所示。

        Table 1 Results of each pruning method表1 各剪枝方法結(jié)果

        4 結(jié)語(yǔ)

        本文主要針對(duì)卷積神經(jīng)網(wǎng)絡(luò)提出了一種剪枝和權(quán)值量化的方法。該方法主要對(duì)卷積神經(jīng)網(wǎng)絡(luò)中常見(jiàn)的卷積層和全連接層中訓(xùn)練后的權(quán)值大小進(jìn)行判別,然后通過(guò)對(duì)權(quán)值及相應(yīng)通道的剪枝以達(dá)到降低卷積神經(jīng)網(wǎng)絡(luò)模型體積的目的。在進(jìn)行權(quán)值剪枝和通道修剪后對(duì)剩余權(quán)值進(jìn)行量化處理,降低卷積神經(jīng)網(wǎng)絡(luò)計(jì)算成本,并對(duì)量化后的模型進(jìn)行一定微調(diào),以恢復(fù)精度,使得模型精度不變但計(jì)算速度提升,從而實(shí)現(xiàn)了模型計(jì)算成本低于原模型并且計(jì)算效率高于原模型。剪枝方法基于模型卷積層和全連接層中的權(quán)重分布以及BN 層的縮放因子進(jìn)行,而量化則是在剪枝過(guò)程后對(duì)所有參數(shù)和數(shù)據(jù)進(jìn)行數(shù)據(jù)量化,將數(shù)據(jù)類(lèi)型簡(jiǎn)化,從而降低計(jì)算成本。這樣雙層壓縮后的模型能更加適用于移動(dòng)端和嵌入式設(shè)備,相對(duì)于其他傳統(tǒng)方法,其在模型大小壓縮、準(zhǔn)確率及推理時(shí)間上均有一定提升。但此方法依然存在一些不足:在卷積層和全連接層中對(duì)需要剪枝的Kernel 進(jìn)行篩選的方法依然存在改善空間,例如可以使用濾波器排序或者濾波器聚類(lèi),對(duì)相似度高的濾波器卷積層進(jìn)行剪枝,使用權(quán)值共享方法減少模型計(jì)算量。量化方法中如何在盡量壓縮數(shù)據(jù)大小的情況下依然使得模型識(shí)別精度保持不變尚有優(yōu)化空間,有待進(jìn)一步研究。

        猜你喜歡
        方法模型
        一半模型
        重要模型『一線(xiàn)三等角』
        重尾非線(xiàn)性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        學(xué)習(xí)方法
        可能是方法不對(duì)
        3D打印中的模型分割與打包
        用對(duì)方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢(qián)方法
        蜜桃av噜噜噜一区二区三区| 人妻激情偷乱一区二区三区| 大陆一级毛片免费播放| 男男互吃大丁视频网站| 中国少妇久久一区二区三区| 免费国产成人肉肉视频大全| 少妇厨房愉情理伦片bd在线观看| 久久国产精品免费一区六九堂| 中文字幕人妻互换激情| 夜夜夜夜曰天天天天拍国产| 日韩电影一区二区三区| 日本道免费精品一区二区| 白色白在线观看免费2| 无码无套少妇毛多18p| 最新亚洲精品国偷自产在线| 国内精品久久久久久久亚洲 | 国产啪精品视频网给免丝袜| 亚洲日本一区二区在线观看| 男女射黄视频网站在线免费观看| 午夜福利试看120秒体验区| 午夜婷婷国产麻豆精品| 亚洲高清av一区二区| 精品亚洲一区二区三区四区五区| 久久综合精品国产二区无码 | 人人妻人人澡人人爽欧美二区| 久久99精品中文字幕在| av网站免费观看入口| 久热re这里精品视频在线6| 精精国产xxxx视频在线| 亚洲乱码中文字幕综合| 日本一区二区视频免费在线看| 蜜桃麻豆www久久囤产精品| 国产精品99精品一区二区三区∴| 国产人妖直男在线视频| 国产亚洲成av人片在线观看| 丁香五月缴情综合网| 岛国av一区二区三区| 日韩精品熟妇一区二区三区| 亚洲av综合av国产av| 天天摸天天做天天爽天天舒服| 日韩中文字幕素人水野一区|