当前位置: 首页 > 知识库问答 >
问题:

如何在TensorFlow Lite中优化动态范围量化和全整数量化?

汝岳
2023-03-14

我目前正在使用TensorFlow Lite,我试图理解动态范围量化(DRQ)和全整数量化(FIQ)之间的区别。我知道在第一个(DRQ)中,只有权重是量化的,而在第二个(FIQ)中,权重和激活(输出)都是量化的。

然而,我不确定我是否完全理解这意味着什么。关于权重的量化,它们只是从float32转换到int8,还是进行另一种操作?同样,为什么需要一个有代表性的数据集来量化FIQ中的激活?

此外,我想知道,例如,神经网络的一个层是否具有S形激活,这意味着在FIQ中,该层的所有输出都将“映射”到0或1(不考虑中间的任何其他可能值)?

最后,在DRQ部分,您可以阅读以下句子:“在推理时,权重从8位精度转换为浮点,并使用浮点内核进行计算”。如果在推理时将权重从8位转换为浮点精度,那么相对于完全没有量化的TensorFlow Lite模型,动态范围量化模型有什么优势(除了较小的网络尺寸)?如果不进行这种转换(以整数精度操作),模型会更快吗?

共有1个答案

孔正文
2023-03-14

全整数量化要求代表性数据集确定输入的最小-最大值。当转换器对模型进行量化时,这些是正确确定量化节点所必需的。在TF1中。可以手动将伪量子节点注入模型中,并且伪量子节点似乎仍然存在于当前版本的TensorFlow:TensorFlow文档中。文档页面还回答了您关于量化权重时进行何种操作的问题。

您链接的同一DRQ部分还提到“此转换完成一次并缓存以减少延迟”。

 类似资料:
  • 我试图解决一个优化问题,它非常类似于背包问题,但不能用动态规划来解决。我想解决的问题与这个问题非常相似:

  • 我目前正在测试用TensorFlow Lite转换的CNN的推断延迟。我正在测试两个具有相同体系结构的CNN(我正在使用Windows操作系统的笔记本电脑上测试它们): > 第一个模型:使用TFLite优化的TensorFlow模型,并量化其权重(使用Python TFLite API进行转换,并使用TensorFlow.lite.Optimize.DEFAULT进行量化)。它是动态范围量化。 第

  • 问题内容: 我有一个从或指令属性或任何其他属性中获得的字符串,我想基于此在作用域上创建一个变量。所以: 但是,如果字符串包含一个或多个点,我想将其拆分并实际上“向下钻取”到作用域中。所以应该成为。这意味着简单版本不起作用! 在读取基于字符串的变量时,您可以通过做来获得这种行为,但是在分配值时如何实现呢? 问题答案: 我发现的解决方案是使用$ parse。 “将Angular表达式转换为函数。” 如

  • 我使用以下代码生成量化的tflite模型 但是根据训练后量化: 生成的模型将完全量化,但为了方便起见,仍然采用浮点输入和输出。 要为Google Coral Edge TPU编译tflite模型,我还需要量化输入和输出。 在模型中,我看到第一个网络层将浮点输入转换为,最后一个网络层将转换为浮点输出。如何编辑tflite模型以除去第一个和最后一个浮动层? 我知道我可以在转换期间将输入和输出类型设置为

  • 尝试解决问题 http://www.hackerearth.com/problem/algorithm/sum-of-medians-1/ 并考虑使用多集来解决它,因为它可能包含重复的值。我尝试按如下方式编写代码:

  • 问题内容: 我有以下代码: 这给了我以下错误: 解析错误:语法错误,在第19行的/home/user/Sites/site/registration/inc/registration.class.inc中出现意外的’(’,期待’)’ 所以,我想我做错了什么…但是如果不那样做怎么办?如果我用常规字符串更改mktime内容,它将起作用。所以,我知道我能做到这一点 的那种 像.. 有人有指针吗? 问题答