python - 量化 TFLite 模型比 TF 模型具有更好的精度

标签 python tensorflow tensorflow-lite quantization-aware-training

我正在开发一个端到端训练量化感知训练示例。使用CIFAR 10数据集,我加载预训练的 MobilenetV2模型,然后使用 code来自 TensorFlow 指南来量化我的模型。整个过程正常完成后,我得到以下结果:

Quant TFLite test_accuracy: 0.94462
Quant TF test accuracy:     0.744700014591217
TF test accuracy:           0.737500011920929

我想知道,这怎么可能?量化应该降低准确性一点。

我注意到,在 TensorFlow 的 Guide 示例中,准确性也有所提高,但与我的示例相比,幅度很小。更具体地说,当运行此 code 时它使用 mnist数据集上,我得到了下面的结果,这是 TensorFlow 开发人员可以接受的,因为他们提到精度没有变化

Quant TFLite test_accuracy: 0.9817
Quant TF test accuracy:     0.9815
TF test accuracy:           0.9811

注意,我没有更改 TensorFlow 指南中附加的代码,我只是使用不同数据集模型

最佳答案

当您的模型未完全收敛并且测试数据集的大小不足以区分这两个时,这可能是可能的。此外,即使您的模型已收敛,减少位推断的方法有时也可以帮助每个节点中的随机变量的范围是有限的,有时可以匹配您的情况并帮助梯度更好地找到最优点。不过,我仍然鼓励您扩展测试集,并检查模型收敛性,因为差距太大了。

亚马逊将 float32 简化为 float16 时的分类就是一个有力的证据。准确率提高 enter image description here

此外,对于 MNIST,数据很简单,当平均值在 0.9815 左右且方差很小时,准确度并没有太大差异。据我了解,这是合理的。

关于python - 量化 TFLite 模型比 TF 模型具有更好的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64030764/

相关文章:

Python 类方法链接

Python 3 和 Unicode - 如何打印换行符(理解这一点的一般问题)

python - AttributeError: 'function' 对象没有属性 'ParseFromString'

python - 没有 fit() 使用 keras 和 tf 的 Tensorboard

tensorflow - 由于内部错误,无法在解释器上运行 tflite 模型

python - 为什么 numpy 的 fft 的每一个第二个系数都是其应有的倒数?

python - CPU秒数的理解

javascript - 解决在chrome中运行的tensorflow js的 "Uncaught (in promise) TypeError: fs.writeFile is not a function"的替代方法

c++ - 为TensorFlow Lite C++编写read_jpeg和解码_jpeg函数

android - Gradle - Artifact : ResolvedArtifact 的空提取文件夹