【发布时间】:2019-06-14 04:40:02
【问题描述】:
我一直在阅读有关 TensorFlow 将神经网络从浮点数转换为 8 位值的信息。阅读他们存储库中的矩阵乘法代码似乎表明他们使用的是 8 位整数,而不是他们的文档可能指出的固定浮点数。
我想了解它是如何执行转换的。根据我的阅读,我猜测它将权重从 0 缩放到 255。例如,如果我们谈论的是输入图像上的卷积,其范围为 0 到 255。卷积的结果将是 32位整数,然后使用输出的最小值和最大值的统计信息将其缩小到 0 到 255。那是对的吗 ?
如果是这样,为什么会这样?
我检查了他们的代码的存储库 https://github.com/google/gemmlowp/blob/master/standalone/neon-gemm-kernel-benchmark.cc#L573
【问题讨论】:
-
tensorflow.org/performance/quantization 这让我相信 tensorflow 使用的是定点
-
tensorflow.org/performance/quantization 的最小/最大方案的“为什么会这样”似乎太模糊而无法回答。我想从根本上说,浮点格式中经常使用的额外位是不必要的,并且修复指数似乎不会损害实践中的性能。你认为它不应该工作有什么原因吗?
标签: tensorflow