android - Android:将 Tensorflow 2.0 SavedModel 转换为具有置信度值的 TFLite 问题
问题描述
您好,在使用此源代码https://gist.github.com/mypapit/e3b26787c95caf840e5c16a79327d443在 TFHub MobileNet 模块(SavedModel TF2.0)上使用迁移学习技术后,我已将 SavedModel 文件转换为 TFLite 文件,我尝试在 Tensorflow 上运行它Poet 示例 Android 应用程序
生成的 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 一起使用时不会发生这种情况
我已经不知所措了,有人可以帮助我吗?:(
解决方案
好像您缺少最后一个 softmax 层,它使所有标签输出的总和为 1。
https://medium.com/data-science-bootcamp/understand-the-softmax-function-in-minutes-f3a59641e86d
推荐阅读
- aspnetboilerplate - ASPNET Boilerplate,扩展审计日志
- python - 我可以同时而不是顺序地在列表上执行 python 代码吗?
- r - 如何从R中的重复数组中只保留一个值(最新的)
- javascript - 如何在 JavaScript 中实时预览输入元素?
- kotlin - Kotlin 智能转换为不可为空的类型和 ::class 语法无法按预期协同工作
- azure-cosmosdb - Client.CreateDocumentAsync( ) 和documents.AddAsync( ) 的区别;
- svelte - Svelte 条件组件渲染
- mongodb - MongDB 无法在 OpenShift v3.11 上启动,因为即使可以从终端读取文件,也无法读取 WiredTiger.wt
- math - 从两点和角度计算第三点的公式
- java - 如何获得在 Java 中键入句子所花费的时间