tensorflow模型的定点化


为什么量化是可能的?
由于神经元只抽取必要信息并给出响应,这样整个网络是抗噪和鲁棒的。训练完成后进行推断时,减低精度的定点化量化也可以考虑为噪声,因此不会产生大影响。

如何量化和量化意义?
网络参数是按层组织,每层数值都在同一数量级,即范围相差不大,如[-6.0,4.0],有大量论文研究表明确认值最大和最小后每层数据使用8bit定点化量化已可以很好满足推断计算。
量化最直接结果是参数存储空间要求变小,经验值是减少约3/4;减少内存读取数据量,节省带宽;使用simd进行计算加速,如果有dsp进行8bit加速计算节能,使得移动设备上进行推断计算变得更强大有效。


怎么量化模型?

需要使用tensorflow提供的量化工具,使用示例如下

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


该工具需要下载tensorflow源码,安装bazel(可参见blog.csdn.net/u010510350/article/details/52247972),并进行配置和编译生成。

编译前请确认tensorflow源码下载后,已进行./configure, 这个过程会配置相关的依赖程序和库。为了使得依赖少一些,可以在configure时选择不打开一些选项。

bazel build tensorflow/tools/quantization:quantize_graph  #具体路径可能会随版本变化

生成的可执行文件在bazel-bin/tensorflow/tools/quantization/quantize_graph,此时即可进行量化转化了,--help可以打开使用帮助。


此时需要了解输出节点的名称,如上“softmax”,如果你是网络的原本的开发人员,这个不是问题。如果手头得到的就是一个pb文件。那么就需要自己分析文件了。这个下个文档再介绍。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值