深度學習模型壓縮方法和框架
模型壓縮的兩種方法:
一、設計輕量級的模型(SqueezeNet,MobileNet,ShuffleNet等):不需要壓縮。
二、模型結構/記憶體優化:剪枝、權值量化等
二、模型結構/記憶體優化
目前的框架主要有:
Deep Compression、XNorNet、Distilling、PocketFlow騰訊、transform_graph(tensorflow)
框架簡介:
1、 Deep Compression
a) 權值減枝
b) 權值量化(基於權值聚類,連續分佈的權值離散化)
c) 霍夫曼編碼(減少平均編碼長度大小)
論文地址:http://arxiv.org/pdf/1510.00149v5.pdf
專案地址:https://github.com/songhan/Deep-Compression-AlexNet
評價:Deep Compression的主要設計是針對網路儲存尺寸的壓縮,但在前向時,如果將儲存模型讀入展開後,並沒有帶來更大的速度提升。因此Song H.等人專門針對壓縮後的模型設計了一套基於FPGA的硬體前向加速框架EIE
2、 XNorNet
二值網路
3、 Distilling(蒸餾)
其基本思想是通過一個性能好的大網路來教小網路學習,從而使得小網路能夠具備跟大網路一樣的效能,但蒸餾後的小網路引數規模遠遠小於原始大網路,從而達到壓縮網路的目的。
論文地址:https://arxiv.org/abs/1503.02531
專案地址:https://github.com/NervanaSystems/distiller
4、 golw(facebook)(編譯深度學習模型)
專案地址:https://github.com/openai/glow
5、 PocketFlow(騰訊)
說明文件:https://pocketflow.github.io/
專案地址:https://github.com/Tencent/PocketFlow
PocketFlow包含許多模型壓縮方法(通道減枝、權值稀疏化、權重量化、蒸餾、超引數優化)
暫不支援物件檢測型別的模型壓縮:https://github.com/Tencent/PocketFlow/issues/44
6、transform_graph
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/graph_transforms