【问题标题】:What results can I expect from a quantized Tensoflow model?我可以从量化的 Tensorflow 模型中得到什么结果?
【发布时间】:2019-08-30 16:08:33
【问题描述】:

我有一个非常简单的 Tensorflow 模型,它根据来自 6 个传感器的输入(输入范围从 0.0 到 1.0)输出 3 个值(左、直、右)

inputSensor = Input(shape=(3))
modelSensor = Dense(32, activation="relu")(inputSensor)
modelSensor = Dense(32, activation="relu")(modelSensor)
modelSensor = Dense(numClasses, activation="softmax")(modelSensor)
model = Model(inputs=inputSensor, outputs=modelSensor)

训练模型后,我可以使用将其转换为普通的 TFLite 模型

converter = tf.compat.v1.lite.TFLiteConverter.from_keras_model_file("models/modelpath.h5")
converter.optimizations = [tf.lite.Optimize.DEFAULT]

tflite_model = converter.convert()

然后我在模型上运行一些推理测试,得到我期望的结果。 3 个输出之一 为 99%,其他都非常低。

测试权 输入 [0.0,0.0,1.0] 结果[[0.00089144 0.00154889 0.99755967]]

测试直 输入 [0.0,1.0,0.0] 结果[[0.00087439 0.996424 0.00270158]]

测试左 输入 [1.0,0.0,0.0] 结果[[0.9948014 0.00256803 0.00263061]]

然后我对模型进行量化(以便在边缘 TPU 上使用它)

converter =tf.compat.v1.lite.TFLiteConverter. from_keras_model_file 
("models/modelpath.h5")
converter.representative_dataset = representativeDataset_gen
converter.target_spec.supported_ops = 
[tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
converter.optimizations = [tf.lite.Optimize.DEFAULT]

我运行与上面相同的测试。结果仍然正确,但最大输出为 132,其他输出为 62。

测试权 输入 [0.0,0.0,1.0] [[ 62 62 132]]

测试直 输入 [0.0,1.0,0.0] [[ 62 132 62]]

测试左 输入 [1.0,0.0,0.0] [[132 62 62]]

我希望得到 [[255 0 0]] 范围内的结果

当我使用整数输入时,也会发生同样的事情 输入 [0,0,255]

量化转换有问题吗? 我应该使用浮点整数作为输入吗?

【问题讨论】:

    标签: python tensorflow tpu


    【解决方案1】:

    当您进行训练后量化时,小型模型肯定会遭受较大的准确度下降。事实上,TensorFlow 团队已建议在应用训练后量化后执行准确性检查。

    如果准确性受到严重影响,建议使用quantization-aware-training

    在撰写此答案时,量化意识培训尚未启动。

    【讨论】:

      【解决方案2】:

      我自己发现了问题。

      我用于量化转换的代表性数据集不够代表性。它由一个零数组组成。使用适当的数据集(与用于训练的数据集相同)修复了输出 -> [[255 0 0]]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-27
        • 1970-01-01
        • 2021-08-11
        • 1970-01-01
        • 2022-01-01
        相关资源
        最近更新 更多