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

为什么TensorFlow Lite模型在动态范围量化时在延迟上表现出色,而在全整数量化时表现不佳?

宁锐
2023-03-14

我目前正在测试用TensorFlow Lite转换的CNN的推断延迟。我正在测试两个具有相同体系结构的CNN(我正在使用Windows操作系统的笔记本电脑上测试它们):

>

  • 第一个模型:使用TFLite优化的TensorFlow模型,并量化其权重(使用Python TFLite API进行转换,并使用TensorFlow.lite.Optimize.DEFAULT进行量化)。它是动态范围量化。

    第二个模型:使用TFLite优化的TensorFlow模型,并量化其权重和激活(使用Python TFLite api转换并使用TensorFlow.lite.Optimize.DEFAULT量化,给出一个具有代表性的数据集)。它是全整数量化。

    事实上,第一个模型(动态范围量化)在时间方面给出了非常好的结果。然而,第二个模型(全整数量化)在时间方面的性能非常差(大约比第一个模型慢10倍)。

    为什么量化激活会使推理过程变得如此缓慢?

  • 共有1个答案

    柴修筠
    2023-03-14

    在CNN中,有比重量更多的激活。激活必须在不同层之间重新量化。在第二种情况下,这两种情况都可能导致时间过长。但是请记住,第二种情况应该会像在嵌入式处理器中一样为您提供更好的精度和更低的缓冲内存需求。

     类似资料:
    • 我目前正在测试使用TensorFlow Lite转换的U-Net网络推理的延迟。我正在测试三个具有相同架构的NN的分段问题(我正在使用Windows操作系统在笔记本电脑上测试它们): 第一个模型:TensorFlow模型(未经优化,使用Keras接口创建)。 第二个模型:使用TFLite优化的TensorFlow模型(使用Python TFLite api转换,无需量化)。它实际上是第一个转换的模

    • 我目前正在使用TensorFlow Lite,我试图理解动态范围量化(DRQ)和全整数量化(FIQ)之间的区别。我知道在第一个(DRQ)中,只有权重是量化的,而在第二个(FIQ)中,权重和激活(输出)都是量化的。 然而,我不确定我是否完全理解这意味着什么。关于权重的量化,它们只是从float32转换到int8,还是进行另一种操作?同样,为什么需要一个有代表性的数据集来量化FIQ中的激活? 此外,我

    • 我正在尝试编辑内容(例如,更改几个字)从下面的回购文件。(我是共同所有者)。这个所有者使用vue创建网站。当我添加更改时,它反映在文件上而不是在网站上。我尝试了几种方法:直接从git编辑,在我的本地分支上编辑并推送到远程repo。等等。但它不起作用。(顺便说一下,我是web开发和git的初学者)。在使用vue之前,一切正常 回购:https://github.com/busase/busase.o

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

    • 问题内容: 我正在努力理解为什么我在使用Swift的iOS项目中遇到此编译器错误。如果我创建以下类: 我在“初始化前使用了变量’self.c’” 这一行上收到编译器错误。 起初我以为这是因为编译器无法验证该方法是否无法访问,但是后来我尝试将init方法混入一点: 这次的错误是“在初始化之前使用了变量’self.b’”(在同一行上)。这表明编译器 是 能够检查其性能的方法访问,所以据我可以看到应该有

    • 问题内容: 好的,所以当我想使用透明度时,我偶然发现了一个问题。 因此,用于更改悬停背景的代码是… 一开始,我为按钮设置了蓝色。 这是显示颜色变化的gif … GifMeme09541718022016.gif https://drive.google.com/file/d/0B9XFyaTVy8oYci1zMmRhMmtYcnM/view?usp=docslist_api 为什么会这样?如果这不