首页 > 解决方案 > Android:将 Tensorflow 2.0 SavedModel 转换为具有置信度值的 TFLite 问题

问题描述

您好,在使用此源代码https://gist.github.com/mypapit/e3b26787c95caf840e5c16a79327d443在 TFHub MobileNet 模块(SavedModel TF2.0)上使用迁移学习技术后,我已将 SavedModel 文件转换为 TFLite 文件,我尝试在 Tensorflow 上运行它Poet 示例 Android 应用程序

图 1

生成的 Android 应用似乎能够正确分类我重新训练的类。但是,准确性差很多(就像离谱一样!),您可以参考屏幕截图。

通常,精度应该在 0.000 到 1.000 的范围内。但是对于我转换后的 TFLite 模型,准确度范围从 -400 到 500.00++ 变化很大

仅供参考,我已经修改了 IMAGE_MEAN 和 IMAGE_STD 值(255f,0f)和(127.5f,127.5f),但无济于事。

有人可以帮助我吗?

我用来测试模型的 Poets Android 源代码的标准 TensorFlow 在这里:https ://gist.github.com/mypapit/f7a9b54ee502f02ca72da3f972d25fb9

转换后的 TFLite 文件在这里:https ://1drv.ms/u/s!AmVw1Hsqu0-CguVlKyCNE0W-NzODEg?e= LkjBXl 及其标签图在这里:https ://gist.github.com/mypapit/56845dde0c47e21d0e18ec86d25a3ff2

我注意到这仅在我将 tfhub 模块(TF2.0 SavedModel)与 Tensorflow 2.x 一起使用时发生,当我将 tfhub 模块与 Tensorflow 1.14 一起使用时不会发生这种情况

我已经不知所措了,有人可以帮助我吗?:(

标签: androidtensorflowtensorflow2.0tensorflow-lite

解决方案


好像您缺少最后一个 softmax 层,它使所有标签输出的总和为 1。

https://medium.com/data-science-bootcamp/understand-the-softmax-function-in-minutes-f3a59641e86d


推荐阅读