基於tensorflow的模型引數量化
阿新 • • 發佈:2019-01-06
已有環境: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。