tensorflow 模型壓縮


模型壓縮

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

在這個項目中,我使用了 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」文件夾。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM