通道剪枝Channel Pruning

2021-09-28 14:21:12 字數 2571 閱讀 8907

你感覺不舒服的時候,就是成長的時候……

**:channel pruning for accelerating very deep neural networks

github:

iccv2017 曠視科技

**提出了新的通道剪枝方法,基於2步迭代的剪枝方法。首先基於lasso回歸選擇通道,然後基於最小均方誤差,進行權值的重新學習。該方法在vgg-16上取得了5倍的加速,並且只產生0.3%的誤差。

同時,**給出了殘差結構,多分支結構網路的剪枝方法。

model

speed-up

accuracy

vgg-16 channel pruning5x

88.1 (top-5), 67.8 (top-1)

vgg-16 3c1

4x 89.9 (top-5), 70.6 (top-1)

resnet-502x

90.8 (top-5), 72.3 (top-1)

faster rcnn2x

36.7 ([email protected]:.05:.95)

faster rcnn4x

35.1 ([email protected]:.05:.95)

傳統的cnn加速方法,fft,freeze ,optimize, quantize ,binarynet ,distlation,structured simplification。

結構簡化(structured simplification)的加速方法:

(a)乙個網路的3個卷積層

(b)讓網路變得稀疏,去掉網路中的稀疏連線

(c)張量分解,分解乙個矩陣為多個

(d)通道剪枝

通道剪枝:

n:樣本數目,batch數目

n:輸出通道數

kh,kw:卷積核大小

卷積核濾波器w大小為n*c

輸入特徵圖大小x為n*c*kh*kw

輸出特徵圖y大小為n*n

c』:剪枝後的通道數

||.||f表示弗洛貝尼烏斯範數,也就是2範數

βi表示第i個特徵圖通道的

整個剪枝過程,在輸入x一定的情況下,需要選擇剪掉第幾個通道,同時還需要在通道被剪後,進行weights的重新學習,保證,剪枝前和剪枝後,輸出的特徵圖具有最小的l2範數。

另外這裡和pocketflow一樣,所謂剪枝,就是找乙個mask,也就是β給乘上去,並不是真正的剪掉,只有在最後匯出模型的時候,才會真正把mask為0的通道刪掉。

由於上面的式子中有β和w2個需要優化的變數,是乙個np hard問題。所以,作者提出,首先固定w學習β,得到要剪枝的通道,再固定β,只學習w,這樣來實現整體的剪枝過程。

(1)只學習β.

這裡採用lasso回歸,增加基於β.的l1範數,可以學習到非常稀疏的β.數值。λ引數控制剪枝率,越大,表示剪枝率越大,最後模型越小。

(2)只學習w

這裡,對w除以了w的2範數,進行了歸一化操作,更方便學習優化。為了保證最終x*w的輸出不變,對β乘以了w的2範數

剪枝殘差結構模組:

殘差模組的最後一層:

對於最後乙個1x1 conv的pruning,我們不僅要考慮residual分支上的資訊恢復,同樣要考慮到identity maping分支上面的資訊丟失。因此最終用於恢復的目標值並非是y2,而是y1 - y'1 + y2。

這樣就可以在w的計算中考慮進去identity maping上資訊的恢復了。

殘差模組的第一層:

由於identity maping分支和shortcut 分支共享輸入,所以不能直接進行剪枝。而是通過對

identity maping分支的輸入進行通道取樣,從c0取樣為c0『,實現了通道的剪枝,而shortcut分支通道沒有進行剪枝,因為該分支沒有卷積引數可以學習。

實驗結果:

本文的channel pruning方法在單個層pruning比filter pruning方法的效果要好。在相同加速比的情況下,具有更小的誤差。

總結:

通道剪枝,可以實現主流網路結構vgg,inception ,resnet等的加速。

學習筆記 深度學習之通道剪枝

最近剛接觸深度學習專案,負責網路模型壓縮與加速。基於自己的理解,寫一下對通道剪枝的理解。博主主要通過敘述幫助你理解為什麼要進行通道剪枝,本文涉及的數學理論知識較少,希望閱讀本文後能幫助你建立乙個概念,我為什麼要幹這件事?以及這件事幹了有意義嗎?文中有出錯的地方,歡迎批評指正。通道剪枝,顧名思義,就是...

通道與通道棧

在通道層,若干通道首尾相連組成乙個管道,我們將其稱為通道棧。wcf採用基於訊息的通訊手段,通道棧提供乙個訊息傳輸和處理的通道。關於通道棧處理訊息的方式,我們可以通過自來水廠的淨水流程做乙個模擬。有乙個為居民提供飲用水的自來水廠,它的任務就是抽取自然水源,進行必要的淨化處理,最終輸送到居民區。淨化處理...

後剪枝之悲觀剪枝法

把一顆子樹 具有多個葉子節點 的分類用乙個葉子節點來替代的話,在訓練集上的誤判率肯定是上公升的,但是在新資料上不一定。於是我們需要把子樹的誤判計算加上乙個經驗性的懲罰因子。對於一顆葉子節點,它覆蓋了n個樣本,其中有e個錯誤,那麼該葉子節點的錯誤率為 e 0.5 n。這個0.5就是懲罰因子,那麼一顆子...