可以将tflite模型量化吗?

3
我有一个.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个回答

5
由于你主要关心减小模型大小,你可以在TOCO中传递 --optimizations=[tf.lite.Optimizations.DEFAULT] 标志。这将以8位存储权重,并在推理期间去量化以进行浮点计算。根据模型和问题,这可能会对精度产生影响,因此请务必在结果模型上运行eval并确保其符合您的要求。
如果您想使用整数计算运行模型,您可以进行量化训练,并使用这些训练重写使用TOCO将结果图转换为TFLite:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize
这需要进行一些tensorflow模型的重新训练,然后再将其冻结并提供给TOCO。

当我使用这个标志时,运行它会导致一个零 KB 的图形。 - nerdcortex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接