环境:ubuntu 16.04
tensorflow1.12.0
tensorflow源码1.10和1.12量化的脚本不一样,我以前用的1.10,我还存着使用方法,但是我现在就想量化1.12,好折腾一女的,然后今天又折腾了一波这玩意!
先说tensorflow1.10:
官网:
https://github.com/tensorflow/tensorflow/tags
进入文件夹,先编译bazel-bin
bazel build tensorflow/tools/quantization:quantize_graph
量化pb
bazel-bin/tensorflow/tools/quantization/quantize_graph --input=*.pb --output_node_names="*" --output=*.pb --mode=eightbit --logtostderr
--input : 要量化的模型pb文件(完整路径)
--output_node_names : 输出的tensor节点名字
--output : 输出的.pb文件(完整路径)
至此,一个完整的流程就完成了!
tensorflow1.12 tensorflow/tools/quantization/下没有quantize_graph,已经废弃了,需要编译transform_graph工具才可以
bazel build tensorflow/tools/graph_transforms:transform_graph
出现这样的界面就是编译成功了!
量化pb模型
bazel-bin/tensorflow/tools/graph_transforms/transform_graph \
--in_graph=*.pb \
--out_graph=*.pb \
--outputs="*" \
--transforms='quantize_weights'
注意:
--in_graph : 要量化的模型pb文件(完整路径)
--out_graph : 输出的.pb文件(完整路径)
--outputs : 输出的tensor节点名字
我看网上有人说可以用summarize_graph分析量化前后的模型区别,权重量化、模型减小、增加了一些和量化和反量化的节点,所以我又编译了一下summarize_graph
bazel build tensorflow/tools/graph_transforms:summarize_graph
出现这样的界面就是编译成功了!
bazel-bin/tensorflow/tools/graph_transforms/summarize_graph \
--in_graph=*.pb \
--print_structure=true
注意:
--in_graph : 要量化的模型pb文件(完整路径)