這種是直接提出新的卷機計算方式,從而減小參數,達到壓縮模型的效果,例如SqueezedNet,mobileNet網絡
SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size學習
修改網絡結構,相似於mobileNet編碼
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applicationslua
修改卷機計算方式,depth-wise 卷積.net
這種就是在訓練好的模型上作一些修改,而後在fine-tuning到原來的準確率,主要有一些方法blog
剪枝:神經網絡是由一層一層的節點經過邊鏈接,每一個邊上會有權重,所謂剪枝,就是當咱們發現某些邊上的權重很小,能夠認爲這樣的邊不重要,進而能夠去掉這些邊。在訓練的過程當中,在訓練完大模型以後,看看哪些邊的權值比較小,把這些邊去掉,而後繼續訓練模型;ci
權值共享:就是讓一些邊共用一個權值,達到縮減參數個數的目的。假設相鄰兩層之間是全鏈接,每層有1000個節點,那麼這兩層之間就有1000*1000=100萬個權重參數。能夠將這一百萬個權值作聚類,利用每一類的均值代替這一類中的每一個權值大小,這樣同屬於一類的不少邊共享相同的權值,假設把一百萬個權值聚成一千類,則能夠把參數個數從一百萬降到一千個。get
量化:通常而言,神經網絡模型的參數都是用的32bit長度的浮點型數表示,實際上不須要保留那麼高的精度,能夠經過量化,好比用0~255表示原來32個bit所表示的精度,經過犧牲精度來下降每個權值所須要佔用的空間。it
神經網絡二值化:比量化更爲極致的作法就是神經網絡二值化,也即將全部的權值不用浮點數表示了,用二進制的數表示,要麼是+1,要麼是-1,用二進制的方式表示,原來一個32bit權值如今只須要一個bit就能夠表示,能夠大大減少模型尺寸。io
XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
網絡權重二值化、輸入二值化,從頭開始訓練一個二值化網絡,不是在已有的網絡上二值化
Learning both Weights and Connections for Efficient Neural Networks
學習重要的鏈接,根據鏈接的權重進行裁剪,fine-tuning讓網絡保持稀疏的鏈接
Exploiting linear structure within convolutional networks for efficient evaluation.
對已經訓練好的網絡應用奇異值分解
Eie: Efficient inference engine on compressed deep neural network.
加速器
Deep compression: Compressing DNNs with pruning, trained quantization and huffman coding.
裁剪(閾值)、量化(8bit,存儲方式)、哈夫曼編碼
http://blog.csdn.net/may0324/article/details/52935869
Deep Model Compression: Distilling Knowledge from Noisy Teachers
Teacher-student Framework,一個網絡指導另一個網絡的訓練
PerforatedCNNs: Acceleration through Elimination of Redundant Convolutions
在一些稀疏位置跳過CNN求值,加速效果不明顯,且不能壓縮模型
Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or −1
訓練二值化網絡
https://tensortalk.com/?cat=model-compression-parameter-pruning
PRUNING FILTERS FOR EFFICIENT CONVNETS
計算filter的L1範數,直接過濾掉較小L1範數對應的feature map, 而後再次訓練,有兩種,一是每裁剪一層訓練一下,一是直接裁剪整個網絡,而後fine-tuning. 相比權值鏈接的裁剪,這種比較暴力,好處就是不會引入稀疏矩陣的計算,從而也不須要稀疏矩陣庫,壞處就是可能沒法恢復到最開始的準確率。