Post Bank

よわいエンジニアのブログ

TensorFlow LiteのPost-training quantization

TensorFlow Lite公式ページに従って、以下のコードでweightの量子化をしてみた。

import tensorflow as tf

converter = tf.lite.TocoConverter.from_saved_model(saved_model_dir)
converter.post_training_quantize = True
tflite_quantized_model = converter.convert()
open("quantized_model.tflite", "wb").write(tflite_quantized_model)

これを実行すると、weightはfloat32からuint8に変換されるが、計算自体はfloat32のまま浮動小数点数で行われるそうだ。だから、Interpreter#runの入力はfloat32のまま。Post-training quantizationをしたからといって、デモでQuantized modelへの入力をuint8にしているようには出来ない。Full quantization modelを作成するには、Quantization-aware trainingをしないといけないらしい。参考