tensorflow 模型壓縮

模型壓縮node

爲了將tensorflow深度學習模型部署到移動/嵌入式設備上,咱們應該致力於減小模型的內存佔用,縮短推斷時間,減小耗電。有幾種方法能夠實現這些要求,如量化、權重剪枝或將大模型提煉成小模型。sql

在這個項目中,我使用了 TensorFlow 中的量化工具來進行模型壓縮。目前我只使用權重量化來減少模型大小,由於根據 Mac 上的測試結果,完整 8 位轉換沒有提供額外的好處,好比縮短推斷時間。(因爲 requant_range 中的錯誤,沒法在 Pixel 上運行完整的 8 位模型)。因爲 8 位量化工具不適合 CPU,時間甚至翻了一倍。若是你有興趣瞭解更多關於量化的實用建議,能夠閱讀 Pete Warden 這篇很棒的文章(https://petewarden.com/2017/06/22/what-ive-learned-about-neural-network-quantization/)。工具

對模型進行權重量化:學習

  1. 將模型寫入協議緩衝區文件。
  2. 從源安裝和配置 TensorFlow(https://www.tensorflow.org/install/install_sources)。
  3. 在 TensorFlow 目錄下運行下列命令行:
  1. bazel build tensorflow/tools/graph_transforms:transform_graph 
  2. bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=/your/.pb/file  --outputs="output_node_name"  --out_graph=/the/quantized/.pb/file  --transforms='quantize_weights' 

以個人項目爲例,在量化權重後,預訓練的 WaveNet 模型的大小從 15.5Mb 降低到了 4.0Mb。如今能夠將這個模型文件移動到安卓項目中的「assets」文件夾。測試

相關文章
相關標籤/搜索