python - 我可以从量化的 Tensoflow 模型中获得什么结果?
问题描述
我有一个非常简单的 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 = 转换器.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]] 范围内的结果
当我使用像 Input [0,0,255] 这样的整数输入时,也会发生同样的事情
量化转换有问题吗?我应该使用浮点整数作为输入吗?
解决方案
我自己发现了问题。
我用于量化转换的代表性数据集不够代表性。它由一个零数组组成。使用正确的数据集(与用于训练的数据集相同)修复了输出 -> [[255 0 0]]
推荐阅读
- go - 如何在 GO 中创建具有扩展名和属性值的证书签名请求?
- jquery - 仅当 div 包含“someText”时,Jquery 才提交表单
- windows - 错误由于错误而停止(org.apache.kafka.connect.cli.ConnectStandalone)java.lang.NoClassDefFoundError:io/debezium/util/IoUtil
- java - 如何使用 Java 获取 CSRF Token 并将其传递到 Selenium WebDriver 以自动化网站登录功能,防止自动化脚本
- rpa - 当机器人通过 Studio 运行时,Firefox 启动,但通过 Orchestrator IE 启动
- python - 在 Pandas 数据框中检索字符串的特定部分
- javascript - Accordion jQuery - 一次打开一个项目并关闭其他项目
- office365 - 是否可以实现 MS Teams 的扩展以将文件与自定义文档流集成
- javascript - Web 音频仅适用于 URL.createObjectURL
- vue.js - 我无法使用 Vuex 在 Vue 中使用 mapState 获取数据