1. 程式人生 > >基於tensorflow的模型引數量化

基於tensorflow的模型引數量化

已有環境:ubuntu 16.04, tensorflow 1.8, CUDA 9.0, cudnn7

按照文章介紹進行程式安裝。
首先下載樣例模型:

$curl http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz -o /tmp/inceptionv3.tgz
$tar xzf /tmp/inceptionv3.tgz -C /tmp/

使用傳統的API庫安裝:
由於已是Ubuntu 16.4,不用安裝JDK 8,Ubuntu 15.10以前的版本需要安裝。
新增bazel包源:

$ sudo tee /etc/apt/sources.list
.d/bazel.list $ curl https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo apt-key add -

更新安裝Bazel:

$ sudo apt-get update
$ sudo apt-get install bazel

下載完後直接呼叫

bazel build tensorflow/contrib/quantization/tools:quantize_graph

會報The ‘build’ command is only supported from within a workspace 錯誤,這是因為目標檔案中沒有WORKSPACE檔案。解決辦法,cd到目標檔案目錄,在命令列中輸入:

$ sudo touch WORKSPACE

就解決了該錯誤,但是仍會報錯,因為由於tensorflow版本更新,quantize_graph已經不在“tensorflow/contrib/quantization/”目錄中,而是在“tensorflow/tools/quantization”中,但仍有問題,經過多番測試,發現是因為原有的tensorflow缺乏一些檔案,從git上downlad了最新的tensorflow庫,地址:http://github.com/tensorflow/tensorflow, 下載該庫,並在其解壓的路徑下執行:

bazel build tensorflow/tools/quantization/tools:quantize_graph

等待構建完成,在 “bazel-bin/tensorflow/tools/quantization” 中找到檔案quantize_graph,這就是使用量化程式,量化程式碼樣例:

bazel-bin/tensorflow/tools/quantization/quantize_graph \
--input=/tmp/classify_image_graph_def.pb \
--output_node_names="softmax" --output=/tmp/quantized_graph.pb \
--mode=eightbit

針對GoogleNet,其確實把檔案大小從95.7MB壓縮到了24.3MB。