我正在训练一个Keras模型,我想在一个量化的8位环境(微控制器)中使用TFLite来部署它。为了提高量化性能,我进行量化感知训练。然后,我使用我的验证集作为一个有代表性的数据集创建量化的TFLite模型。性能使用验证集进行评估,并在此图像中加以说明:
如果不是简单地从经过QA训练的模型(图中红色)生成TFLite模型(图中的青色),而是将经过QA训练的模型中的权重复制到原始模型中,然后生成TFLite模型到努力解决某一问题 (图中的紫色),则会给出稍微不同的预测。,为什么?
我理解TFLite模型与QA培训模型略有不同,因为转换使用基于验证集的训练后量化。但是,如果网络的结构、权重和偏倚是相同的,那么量化不应该是相同的吗?
子问题:为什么TFLite模型平均比普通的Keras模型稍差?由于我正在对验证集进行量化和评估,如果有什么需要的话,我希望它能够人工地更好地执行。
发布于 2021-03-04 08:40:49
听起来你是在结合训练后量化和量化感知训练。如果我正确地理解了您的意思,您正在训练一个量化的模型,然后只将浮动权复制到原始的浮动模型,然后运行训练后的量化。
这个过程有点奇怪--问题是,模型的量化版本也会量化激活,所以仅仅复制权重就不会产生相同的网络。量化TF模型所使用的用于激活的量化参数最终可能与从代表性数据集中计算出来的参数不同,并将导致不同的答案。
我认为您可以期望QAT模型比结果的TFLite模型工作得更好,因为对激活的量化参数是经过训练的。
我建议解决你先前的问题,这将导致一个更好的解决办法和更高的准确性。
https://stackoverflow.com/questions/66447121
复制相似问题