为什么我的 tflite 模型在 Int8 中的所有 Conv2D 权重在动态范围量化转换后都不是所有?

Why are not all the Conv2D weights of my tflite model in Int8 after conversion with dynamic range quantization?

提问人:Christian Steinmeyer 提问时间:9/18/2023 最后编辑:Christian Steinmeyer 更新时间:9/19/2023 访问量:27

问:

我有一个 Keras 模型,并按照训练后动态范围量化指南将其转换为 tflite 模型。然而,在使用 Netron 进行检查时,我感到困惑:模型的一些 Conv2D 层使用 Int8 类型的权重,而其他层仍然使用 Float32。我找不到任何关于为什么只有部分权重可以量化的文档。有人能为我指出正确的方向吗?

我用于转换模型的代码是

import tensorflow as tf

model = tf.keras.Sequential([
    tf.keras.layers.InputLayer(input_shape=(5, None, 1)),
    tf.keras.layers.Conv2D(16, (3, 3), padding='same', activation='relu'),
    tf.keras.layers.DepthwiseConv2D((3, 3), padding='same'),
    tf.keras.layers.Conv2D(16, (3, 3), padding='same', activation='relu'),
    tf.keras.layers.AveragePooling2D((3, 3), padding='same'),
])
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()
Python TensorFlow 量化 dtype

评论

0赞 mhenning 9/19/2023
了解有关模型的更多信息会很有帮助,例如,哪些层使用 int8,哪些层仍然使用 float32。
0赞 Christian Steinmeyer 9/19/2023
我为示例模型添加了代码。

答: 暂无答案