首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到量化matmul/conv2D运算的浮点输出范围

如何找到量化matmul/conv2D运算的浮点输出范围
EN

Stack Overflow用户
提问于 2018-10-26 14:59:34
回答 1查看 240关注 0票数 0

我是tensorflow和量化的新手,我正在尝试为两个int8输入实现量化矩阵操作。很好奇地想知道操作背后的数学原理。我在tensorflow中看到,他们只对uint8输入实现了同样的方法,想知道如何将其用于带符号的int8 matmul/conv2D。

更准确地说,我想知道如何获得matmul/conv2D操作的浮点输出范围。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-10-30 17:01:47

我对tensorflow中的量化进行了一些研究,并将其应用于将浮点运算转换为量化运算。

在我的例子中,我仍然有一个到网络的浮点输入。输入在进入量化操作之前被量化。Tensorflow喜欢尽可能长时间地保留浮点值,以便与浮点操作兼容。这也是为什么tensorflow在浮点输入量化为8位整数格式后保持最小和最大浮点范围的原因。量化后的最小和最大浮点值也是量化运算的输入。

在您的示例中,Quant_conv2d操作对输入进行卷积:

无符号8位数据表单qunatization

  • unsigned 8位量化内核值

输出结果为:

  • 结果为32位
  • 新的最小和最大范围为浮点值

新的浮点范围是根据核心值的范围和输入的范围,使用中说明的QuantizationRangeForMultiplication函数计算得出的:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/quantization_utils.h

如上所述,输出是带有最小和最大浮点值的32位,以映射到绝对值,并可能将8位量化格式转换回浮点数。

希望这对理解Tensorflow量化算法有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53003155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档