是否可以量化tflite模型?

时间:2018-06-19 08:20:32

标签: android tensorflow tensorflow-lite firebase-mlkit

我有一个.pb模型,我想将其用作自定义MLKit模型。 MLKit只支持.tflite模型,但即使我使用toco获取TensorFlow Lite模型,文件大小对于Firebase来说太大了(95 MB,只允许40 MB)。

有没有办法量化图表,然后转换为TFLite或量化.tflite图?

当我执行前者时,收到以下错误消息:Unsupported TensorFlow op: Dequantize) for which the quantized form is not yet implemented. Sorry, and patches welcome (that's a relatively fun patch to write, mostly providing the actual quantized arithmetic code for this op).

1 个答案:

答案 0 :(得分:3)

由于您主要对减小模型大小感兴趣,因此可以将--post_training_quantize标志传递给TOCO。这应将权重存储在8位,并在推理期间进行量化以进行浮点计算。根据模型和问题,这可能会影响准确性,因此请在结果模型上运行eval并确保其达到所需标准。

如果要使用整数计算来运行模型,则可以进行量化训练,并使用以下训练重写来将带有TOCO的结果图转换为TFLite:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize

这涉及更多,并且涉及在冻结并提供给TOCO之前对张量流模型进行一些重新训练。

此外,我们将在接下来的几周内为--post_training_quantize标志的延迟添加一些较小的修复,并提供更简单的完全量化模型以快速推断的方法。