当前位置: 首页 > 知识库问答 >
问题:

如何量化优化tflite模型的输入和输出

卢伟志
2023-03-14

我使用以下代码生成量化的tflite模型

import tensorflow as tf

def representative_dataset_gen():
  for _ in range(num_calibration_steps):
    # Get sample input data as a numpy array in a method of your choosing.
    yield [input]

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()

但是根据训练后量化:

生成的模型将完全量化,但为了方便起见,仍然采用浮点输入和输出。

要为Google Coral Edge TPU编译tflite模型,我还需要量化输入和输出。

在模型中,我看到第一个网络层将浮点输入转换为input\u uint8,最后一个网络层将output\u uint8转换为浮点输出。如何编辑tflite模型以除去第一个和最后一个浮动层?

我知道我可以在转换期间将输入和输出类型设置为uint8,但这与任何优化都不兼容。唯一可用的选择是使用假量化,这会导致坏的模型。

共有2个答案

孟华晖
2023-03-14
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir
converter.optimizations = [tf.lite.Optimize.DEFAULT] 
converter.representative_dataset = representative_dataset
#The below 3 lines performs the input - output quantization
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
tflite_model = converter.convert()
井誉
2023-03-14

通过设置推断\输入\类型和推断\输出\类型,可以避免浮点为int8和int8浮点为“定量/定量”运算(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/python/lite.py#L460-L476)至int8。

 类似资料:
  • 请参阅文章末尾的可能解决方案 我正在尝试完全量化rcmalli中的keras VGFace模型,以便在NPU上运行。该模型是一个Keras模型(不是tf.Keras)。 使用TF 1.15进行量化时: 模型已转换,但由于我需要完整的int8量化,我添加: 出现以下错误消息: ValueError:无法设置tensor:获取的值类型为UINT8,但输入0的类型应为FLOAT32,名称:input_1

  • 我已经训练了一个简单的CNN模型在Ciafer-10上使用假量化(https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize)。然后我用toco生成了一个. tflite文件。现在我想使用一个python解释器来测试tflite模型。 因为我用了tf。形象在训练期间,按图像标准化减去平均值并除以方

  • 这是我在Android Studio上导入的tensorflow Lite模型的代码: 在此处输入图像描述 这是我运行应用程序时的输出: 在此处输入图像描述 我不明白,怎么才能得到模型输出?? 更新: 输出是6个元素的浮点数组,但我想要的是 Largesse 元素的索引,我尝试了这样的代码: 在此处输入图像描述 对吗??我在每个预测上都得到相同的输出

  • 对于简单的数据净化,使用 htmlentities() 函数, 复杂的数据净化则使用 HTML Purifier 库 经 HTML Purifier 4.4.0 测试 在任何 wbe 应用中展示用户输出时,首先对其进行“净化”去除任何潜在危险的 HTML 是非常必要的。 一个恶意的用户可以制作某些 HTML,若被你的 web 应用直接输出,对查看它的人来说会很危险。 虽然可以尝试使用正则表达式

  • 我训练了一个模型,输入了张量:输入形状:[150]输入类型: 在输出中,该张量为:输出形状:[1 50 17]输出类型: 如何在Java中创建这些?在Android设备上使用它?谢谢

  • 我正在开发一个端到端训练和量化感知的训练示例。使用CIFAR10数据集,我加载了一个预训练的MobilenetV2模型,然后使用TensorFlow指南中的代码来量化我的模型。整个过程适当结束后,我得到以下结果: 注意,我并没有更改我从TensorFlow指南中附带的代码,我只是使用了一个不同的数据集和模型。