基于tensorflow的模型参数量化

本人参考这篇文章https://fjdu.github.io/machine/learning/2016/07/07/quantize-neural-networks-with-tensorflow.html 进行基于tensorflow的模型参数量化工作,尝试将浮点数参数量化成8位。此处主要介绍实践过程中碰到的坑。

已有环境: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/

接着应该安装bazel,这是google推出的软件构建工具,参考文章:https://blog.csdn.net/u010510350/article/details/52247972

使用传统的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。

你可能感兴趣的:(deap,learning,python,ubuntu)