在使用tensorflow这个功能时候需要先下载tensorflow的源代码:
git clone https://github.com/tensorflow/tensorflow.git
进入tensorflow根目录,这里使用tools文件下的两个工具进行量化压缩:graph_transforms、quantization。
安装bazel进行tensorflow工具包的编译。
这里需要注意的是,bazel最好使用最新的,这样编译tensorflow就不会报接口未部署的一些错误。
Linux安装bazel:
https://github.com/bazelbuild/bazel/release
找到bazel-x.x.x-installer-linux-x86_64.sh下载到本地并安装。可以按照git的安装方法进行安装。
安装完毕后开始进行编译tensorflow:
bazel build tensorflow/tools/graph_transforms:transform_graph bazel build tensorflow/tools/quantization:quantize_graph
编译需要占据很多内存以及cpu资源,建议在性能好点的机器上编译。
编译完成后使用:
bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=_train_pb_file --outputs="output_node_name" --out_graph=quantized.pb_file --transforms='quantize_weights'
亲测21M的模型,量化压缩后,模型大小缩小为5.3M。将近4倍的压缩比率。其实在大型的vgg网络上进行压缩,效果更明显,91M模型减小到21M。
对于第二个工具quantize_graph。
bazel-bin/tensorflow/tools/quantization/quantize_graph \ --input=input.pb --output_node_names="softmax2" --print_nodes --output=out.pb \ --mode=eightbit --logtostderr
发现执行上述命令后,模型大小变化不大????
实验结果表示,建议使用transform_graph进行模型量化压缩
文章来源: tensorflow模型量化压缩