检查模型的量化状态

Check quantization status of model

我有一个 Keras(不是 tf.keras)模型,我在嵌入式设备上将其量化(post-训练)到 运行。

为了将模型转换为量化的 tflite 模型,我尝试了不同的方法,最终得到了大约五个版本的量化模型。它们的大小都略有不同,但它们似乎都可以在我的 x86 机器上运行。所有模型都显示不同的推理时间。

现在,我想检查模型实际上是如何量化的(完全,只有权重,...),因为嵌入式解决方案只采用完全量化的模型。我想查看更多详细信息,例如,权重有何差异(也许可以解释不同的模型大小)。模型摘要没有提供任何见解。

谢谢


更多解释:

模型应该完全量化,就像我使用的那样

converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8

转换过程中。但是,我不得不使用TF1.x版本进行转换,或者分别使用tf.compat.v1.lite.TFLiteConverter.from_keras_model_file和TF2.x。所以我不确定使用“经典”TF1.x 版本或 tf.compat.v1 的输出模型。版本。

不同模型的创建方式

  1. 使用TF1.3转换一个h5模型

  2. 使用 TF1.5.3 转换 h5 模型

  3. 使用 TF2.2 转换 h5 模型

  4. 正在使用 TF1.3 将 h5 模型转换为 pb

  5. 正在将 h5 模型转换为 pb TF1.5

  6. 正在使用 TF2.2 将 h5 模型转换为 pb

  7. 使用TF1.5.3转换转换后的pb模型

  8. 使用TF2.2转换转换后的pb模型

Netron 是可视化网络的便捷工具。您可以选择各个层并查看权重、偏差、输入和输出的类型和值。