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

2021-10-08 08:45:55 字數 1009 閱讀 7316

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

通道剪枝,顧名思義,就是對卷積通道 進行裁剪,以達到網路模型減小的目的。但是這裡就涉及到兩個問題:如何裁剪?裁剪之後模型效能如何評價?這裡通過乙個例子具體介紹一下。假設現在擁有乙個表現網路,其結構描述如下:

我們用已經處理好的資料集訓練得到了乙個表現最好的模型,並將模型引數進行儲存。那麼我們可以想象,某些位置的卷積核並不重要,有些位置的卷積核比較重要,並且去掉這些不重要的卷積核,網路的效能是幾乎不受影響的,也就是說,經過卷積核(即通道)裁剪之後,模型的表現還是十分優秀的,那麼我們的裁剪是十分有意義的。為什麼這麼說呢,用小的模型就能實現與複雜模型相同的效能,何樂而不為?

問題就來了,我怎麼選擇不重要的卷積核呢?可以這樣做,給所有卷積核打個分,排個名次,得分越低表現就越不好,那麼這些卷積核就是不重要的,我們可以考慮把這些「划水」的卷積核給去掉!常見的衡量卷積核表現好壞的指標有以下幾種:卷積核的l1範數、l2範數的大小。

好了,現在選出了划水卷積核擔當們,那我們可以把它們去掉了,剩下的就是精華了,我們只使用剩下的較少的卷積核,把之前訓練好的模型中與這些精英卷積核對應的引數給賦值過來,那麼這樣乙個**後的模型就誕生了,可是它的表現很差怎麼辦?所以啊,我們要考驗一下這個模型,看它和原來的表現最優的模型相比效能怎麼樣。很簡單!我們只需要使得這個小的模型分類正確率≈原來模型的分類正確率(當然哦,如果準確率下降一丟丟也是可以的!)

最後,我們再對這個小的模型進行進一步提公升,讓它從訓練資料集中再學習一些知識,這個過程稱為fine tune,然後我們可以把fine tune後的模型儲存啦。

數學公式呢,無非就是把上面這些文字變成了數學符號,所以在閱讀文獻時候,要學會「翻譯」!

深度學習學習筆記

神經網路的隱含層越多 模型引數越多,模型擬合能力更強,同時訓練的難度也會增加。減少模型引數的方法有兩種 逐層訓練和權重共享。權重共享思路是現有深度學習的基礎,它大大減少了模型的引數。深度學習並不需要很多的人工特徵工程,利用其強大的建模能力來代替,整個訓練的過程是端到端的過程 end to end 其...

深度學習 筆記之優化演算法

本篇文章根據andrew ng的深度學習課程做個筆記。1.mini batch mini batch size 1 如果size為樣本個數m,就是批量梯度下降 batch gradient descent 2 如果size為1,就是隨機梯度下降法 stochastic gradient descen...

深度學習筆記

在深度神經網路中,通常使用一種叫修正線性單元 rectified linear unit,relu 作為神經元的啟用函式。relu函式其實是分段線性函式,把所有的負值都變為0,而正值不變,這種操作被成為單側抑制。可別小看這個簡單的操作,正因為有了這單側抑制,才使得神經網路中的神經元也具有了稀疏啟用性...