仅整数:具有 8 位权重的 16 位激活(实验性)
这是一个实验性量化方案 。它与“仅整数”方案类似 , 但会根据激活的范围将其量化为 16 位,权重会被量化为 8 位整数,偏差会被量化为 64 位整数 。这被进一步称为 16x8 量化 。
这种量化的主要优点是可以显著提高准确率 , 但只会稍微增加模型大小 。
import tensorflow as tfconverter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)converter.representative_dataset = representative_datasetconverter.optimizations = [tf.lite.Optimize.DEFAULT]converter.target_spec.supported_ops = [tf.lite.OpsSet.EXPERIMENTAL_TFLITE_BUILTINS_ACTIVATIONS_INT16_WEIGHTS_INT8]tflite_quant_model = converter.convert()如果模型中的部分算子不支持 16x8 量化,模型仍然可以量化,但不受支持的算子会保留为浮点 。要允许此操作,应将以下选项添加到 target_spec 中 。
import tensorflow as tfconverter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)converter.representative_dataset = representative_datasetconverter.optimizations = [tf.lite.Optimize.DEFAULT]converter.target_spec.supported_ops = [tf.lite.OpsSet.EXPERIMENTAL_TFLITE_BUILTINS_ACTIVATIONS_INT16_WEIGHTS_INT8, tf.lite.OpsSet.TFLITE_BUILTINS]tflite_quant_model = converter.convert()这种量化的缺点是:
- 由于缺少优化的内核实现,目前的推断速度明显比 8 位全整数慢 。
- 目前它不兼容现有的硬件加速 TFLite 委托 。
可以在此处找到该量化模型的教程 。
模型准确率
由于权重是在训练后量化的,因此可能会造成准确率损失 , 对于较小的网络尤其如此 。TensorFlow Hub 为特定网络提供了预训练的完全量化模型 。请务必检查量化模型的准确率,以验证准确率的任何下降都在可接受的范围内 。有一些工具可以评估 TensorFlow Lite 模型准确率 。
另外,如果准确率下降过多,请考虑使用量化感知训练 。但是,这样做需要在模型训练期间进行修改以添加伪量化节点,而此页面上的训练后量化技术使用的是现有的预训练模型 。
参考【TensorFlow官方】TensorFlow Lite 指南
推荐阅读
- 请问去未知暗殿怎么走(复古未知暗殿从哪里进图解)
- 神州风闻录最新侍从强度排行是怎么样的
- iphone13几个摄像头_iphone13四个摄像头吗
- DevOps|从特拉斯辞职风波到研发效能中的不靠谱人干的荒唐事
- iqoo9参数详细_iqoo9参数配置
- 小米11 Lite参数配置_小米11 Lite参数详情
- 花心男人面相,可以从3个方面进行分析,助力快速了解
- 宝宝耳朵面相怎么看,可以从这4个方面来看
- fps值太低怎么办(fps从100多突然变低到10几)
- fps太低怎么办(fps从100多突然变低到10几)