模型壓縮 剪枝

2021-09-06 13:07:45 字數 1350 閱讀 3846

這篇文章是對自己關於模型壓縮進行學習的總結與歸納。在研究模型壓縮這一塊的內容這麼長時間,發現自己不夠深入,有些混亂,因此希望這篇文章可以讓自己的思路更加清晰。

模型壓縮的方法中,包括剪枝,量化,多值網路,模型蒸餾等。其中剪枝的方法,應用的更多,此篇文章主要就說剪枝。剪枝最初是在決策樹學習演算法中,用於對付「過擬合」的主要手段。因為在決策樹學習中,為了盡可能正確分類訓練樣本,結點劃分過程將不斷重複,有時會造成決策樹分支過多,從而使模型過擬合。因此,可通過主動去除一些分支來降低過擬合的風險。

在模型壓縮的過程中,也是借助於這樣的思想。因為在大型模型中,總是不可避免的存在大量的權重冗餘,這種冗餘,有時甚至會導致模型的準確率降低。因此借助剪枝的方法壓縮模型,在壓縮率合適的情況下,會提高模型準確率同時減少模型大小。也有一些網路為了向移動終端部署,也會考慮損失一部分的準確率,來節省時間和空間。

由我檢視**來看,剪枝分為兩種。第一種,基於幅值的剪枝;第二種,基於通道的剪枝。下面分析一下這兩種剪枝方法:

一、基於幅值的剪枝

deep compression: compressing deep neural network with pruning, trained quantization and huffman coding.

(2)michael zhu and suyog gupta的文章:to prune, or not to prune: exploring the efficacy of pruning for model compression

1、主要思想:將小於一定閾值的權重拋棄。該閾值可根據剪枝率確定。

2、方法:設定乙個跟權重形狀相同的mask(其值為二值張量,0或者1),用來與權重相乘,從而決定哪些權重要被剪掉(剪枝掉的權重不會再接收梯度,不可逆)。而mask中值的設定,可將權重排序,將低於閾值的權重對應的掩碼設定為0.

實驗過程包括三步:第一,訓練原始模型;第二,對訓練得到的模型,進行剪枝;第三,刪除訓練圖中的剪枝結點(這一步必須要做,否則的話會導致模型變大)

二、基於通道的剪枝

channel pruning for accelerating very deep neural networks;

(2)zhuang liu等人的文章:learning efficient convolutional networks through network slimming

(3)hao li等人的文章:pruning filters for efficient convnets

1、主要思想:該方法是將不重要的整個權重通道剪掉,從而將模型變小

2、方法:對已經訓練好的模型,選擇要剪枝的不重要(或不太重要)的通道,刪除這些通道,構造新的模型圖;重新訓練,恢復準確率

模型壓縮工具Distiller 剪枝

distiller自帶一些測試實例如resnet56 cifar 10,下面是對resnet56 cifar 10的測試 version 1 版本 pruners filter pruner 60 後面的60表示剪掉60 的filters,如 16,16,3,3 剪掉之後就是 7,16,3,3 cl...

剪枝後 模型加速 TensorFlow模型剪枝原理

封面 thisisengineering raeng on unsplash 本文是對 to prune,or not to prune exploring the efficacy ofpruning for model compression 的摘抄。在這裡可以找到 原文。背景對於資源有限的移動...

模型壓縮總結

常用的模型壓縮技術有 1 奇異值分解 singular value decomposition svd 2 網路剪枝 network pruning 使用網路剪枝和稀疏矩陣 3 深度壓縮 deep compression 使用網路剪枝,數位化和huffman編碼 4 硬體加速器 hardware a...