【发布时间】:2022-12-07 04:15:52
【问题描述】:
我需要评估 CNN(卷积神经网络)在边缘设备上的性能。我开始了解什么是量化以及如何使用解释器(模拟器)在 colab 中运行它。完整代码在这里 -> https://github.com/aravindchakravarti/OptimizeNetworks/blob/main/Quantization_Aware_Training.ipynb
我试图将 CNN 转换为 Float-16 (F16) 和 Int-8 (T8) 量化级别,想看看有什么区别
- 推理时间
- 模型尺寸
我使用 F16 模型转换
converter_fl16 = tf.lite.TFLiteConverter.from_keras_model(q_aware_model)
converter_fl16.optimizations = [tf.lite.Optimize.DEFAULT]
converter_fl16.target_spec.supported_types = [tf.float16]
quantized_tflite_model_f16 = converter_fl16.convert()
并转换为T8
converter_t8 = tf.lite.TFLiteConverter.from_keras_model(q_aware_model)
converter_t8.optimizations = [tf.lite.Optimize.DEFAULT]
quantized_tflite_model_t8 = converter_t8.convert()
interpreter = tf.lite.Interpreter(model_content=quantized_tflite_model_t8)
interpreter.allocate_tensors()
当我评估推理时间时,
F32(无量化)= 1.3s
F16(带量化)= 0.6s
T8(带量化)= 0.59s
当我评估模型尺寸时,
F32(无量化)= 83KB
F16(带量化)= 25KB
T8(带量化)= 25KB
我的问题是, 为什么 F16 和 T8 的模型大小和推理时间相同?我没有正确量化吗?
【问题讨论】:
标签: tensorflow tensorflow-lite quantization