博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【译】Post-training 量化
阅读量:6345 次
发布时间:2019-06-22

本文共 1229 字,大约阅读时间需要 4 分钟。

Post-training 量化

Post-training 量化是一种可以减小模型大小,同时降低 3 倍延迟并且仍然能够保持模型精度的一般方法。Post-training量化将权重从浮点量化为 8 位精度。此技术在 中作为一个功能选项被使用。

import tensorflow as tfconverter = tf.contrib.lite.TocoConverter.from_saved_model(saved_model_dir)converter.post_training_quantize = Truetflite_quantized_model = converter.convert()open("quantized_model.tflite", "wb").write(tflite_quantized_model)复制代码

在推理时,权重值从 8 位精度转换为浮点数,并使用浮点内核进行计算。此转换只执行一次并进行缓存以减少延迟。

Commit suggestion Add suggestion to batch

在推理时,权重值从 8 位精度转换为浮点数,并使用浮点内核进行计算。此转换只执行一次并进行缓存以减少延迟。

为了进一步改善延迟,混合运算符动态地将激活量化为 8 位,并使用 8 位权重和激活函数执行计算。此种优化方式可以提供接近完全定点推断时的延迟。但是,输出仍然使用浮点存储,因此混合运算的加速效果仍然小于完全定点计算。混合操作可用于大多数计算密集型网络:

由于权重在训练后被量化,因此可能存在精度损失,特别是对于较小的网络。提供了为特定网络提供预训练的完全量化模型。检查量化模型的准确性以验证任何精度上的降低是否在可接受的限度内是很重要的。这里有一个工具可以评估 。

如果精确度下降幅度过大,可以考虑使用。

量化张量的表示

TensorFlow 将数字浮点数组转换为 8 位表示形式作为压缩问题。由于训练的神经网络模型中的权重和激活张量倾向于分布在相对小范围内的值。(例如,对于权重为 -15 到 +15 ,对于图像模型激活为 -500 到 1000 )。并且由于神经网络在处理噪声数据时具有健壮性,因此通过量化到一小组值引入的误差将整体结果的精度保持在可接受的阈值内。选定的表示必须执行快速计算,尤其是在运行模型时产生的具有大量计算的大型矩阵乘法。

这用两个浮点表示,它存储对应于最低和最高量化值的总体最小值和最大值。量化阵列中的每个条目表示该范围内的浮点值,在最小值和最大值之间线性分布。例如,当一个 8 位数组的最小值为 -10.0 ,最大值为 30.0f 时,其量化值表示如下:

量化值 浮点值
0 -10.0
128 10.0
255 30.0
表格 2: 量化值范围示例

这种表示方式的好处有:

  • 它有效地表示任意大小的范围。。
  • 数值无需对称。
  • 有符号数和无符号数均可被表示。
  • 线性扩展使乘法变得简单。

转载地址:http://vrcla.baihongyu.com/

你可能感兴趣的文章
java B2B2C Springcloud多租户电子商城系统 (五)springboot整合 beatlsql
查看>>
Throwable是一个怎样的类?
查看>>
Python基础(一)
查看>>
三条代码 搞定 python 生成验证码
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
无线和有线路由哪种性能更好
查看>>
Dwr3.0纯注解(纯Java Code配置)配置与应用浅析三之后端反向调用前端
查看>>
Ubuntu下安装遨游浏览器
查看>>
自定义Linux service脚本
查看>>
微信开发之发红包
查看>>
一键lnmp脚本&&php扩展模块安装(适用于CENTOS6.X系列)
查看>>
二维观察---文字的裁剪
查看>>
矩形覆盖
查看>>
ICMP
查看>>
界面设计模式(第2版)(全彩)
查看>>
解决VMware Workstation错误:未能锁定文件
查看>>
CentOS6 手动编译升级 gcc
查看>>
memcached的安装与开启脚本
查看>>
Linux与Window字符集~~伤不起的幽灵空白符
查看>>