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

是否可以将TFLite配置为返回偏差量化为int8的模型?

红智鑫
2023-03-14

我正在与Keras/Tensorflow合作开发一种将部署到低端MCU的ANN。为此,我使用Tensorflow Lite提供的训练后量化机制对原始ANN进行量化。如果权重确实量化为int8,则偏差将从float转换为int32。考虑到我假装在CMSIS-NN中实现这个ANN,这是一个问题,因为它们只支持int8和int16数据。

是否可以将TF Lite配置为也将偏差量化为int8?下面是我正在执行的代码:

def quantizeToInt8(representativeDataset):
    # Cast the dataset to float32
    data = tf.cast(representativeDataset, tf.float32)
    data = tf.data.Dataset.from_tensor_slices((data)).batch(1)

    # Generator function that returns one data point per iteration
    def representativeDatasetGen():
        for inputValue in data:
            yield[inputValue]
    
    # ANN quantization
    model = tf.keras.models.load_model("C:/Users/miguel/Documents/Universidade/PhD/Code_Samples/TensorFlow/originalModel.h5")

    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    converter.optimizations = [tf.lite.Optimize.DEFAULT]
    converter.representative_dataset = representativeDatasetGen
    converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
    converter.target_spec.supported_types = [tf.int8]
    converter.inference_type = tf.int8
    converter.inference_input_type = tf.int8  # or tf.uint8
    converter.inference_output_type = tf.int8  # or tf.uint8
    tflite_quant_model = converter.convert()

    return tflite_quant_model

共有1个答案

仲孙思源
2023-03-14

根据评论

不可能配置TFLite来做到这一点。偏差是有意的int32,否则量化精度将不好。为了做到这一点,你必须添加一个新的操作或自定义操作,然后一起想出一个自定义量化工具。

 类似资料:
  • 我有avro文件要加载到Hive中,但我的文件是二进制的。应该使用什么反序列化程序来获取二进制avro到hive? 我不想要蜂巢中的二进制数据,而是解码的二进制数据。 这就是我如何创建我的表。 CREATE TABLE kst7 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS INPUT AS IN

  • 我已经使用Keras来微调MobileNet v1。现在我有,我需要将其转换为TensorFlow Lite,以便在Android应用程序中使用。 我使用TFLite转换脚本。我可以在没有量化的情况下进行转换,但我需要更高的性能,所以我需要进行量化。 如果我运行此脚本: 它失败了: F tensorflow/contrib/lite/toco/tooling\u util。cc:1634]Arra

  • 问题内容: 我正在Sql Server 2008数据库中创建存储过程。我想返回受影响的行数。SET NOCOUNT OFF或RETURN @@ ROWCOUNT哪个更好? 我知道两者都可以,但是哪个是更好的选择,为什么呢? 经过一番尝试,我得出的结论是,存储过程中默认情况下SET NOCOUNT为OFF。是否可以在我的数据库中更改此行为? 问题答案: 使用@@ RowCount。它是明确且透明的,

  • 问题内容: 我知道可以偏斜,但我看不到以特定角度偏斜每个角的方法。 这是我正在从事的项目: 专门查看菜单中的标签。现在,我正在使用图像,我想针对功能强大的浏览器进行更改。 我知道可以创建CSS trapazoid,但是使用没有内容的边框。最终结果还需要一些圆角。 问题答案: 这可能是一个大概的想法:

  • 我需要为我的反应式spring应用程序实现一个graphql查询解析器。 以下是我的graphlq模式: 我的解析器如下所示: 我使用的是5.0.2和5.2.4