我正在开发一个端到端训练和量化感知训练示例。使用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 时的分类就是一个有力的证据。准确率提高
此外,对于 MNIST,数据很简单,当平均值在 0.9815 左右且方差很小时,准确度并没有太大差异。据我了解,这是合理的。
关于python - 量化 TFLite 模型比 TF 模型具有更好的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64030764/