1. 程式人生 > >深度學習模型壓縮方法和框架

深度學習模型壓縮方法和框架

模型壓縮的兩種方法:

一、設計輕量級的模型(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