我已经在 keras 中训练了自己的图像分类模型,并将其转换为 tflite,然后我想通过 tensorflow lite 在 android 中使用该模型。为此,我使用了一个 github 项目来直接获取该项目的应用程序链接,如下:
https://github.com/amitshekariitbhu/Android-TensorFlow-Lite-Example/tree/master/app/src/main/java/com/amitshekhar/tflite https://github.com/amitshekhariitbhu/Android-TensorFlow-Lite-Example/tree/master/app/src/main/java/com/amitshekhar/tflite
但我在 logcat 中遇到了这个错误:
2020-03-30 14:50:48.747 27421-27421/com.amitshekhar.tflite E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.amitshekhar.tflite, PID: 27421
java.lang.IllegalArgumentException: Cannot copy between a TensorFlowLite tensor with shape [2] and a Java object with shape [1, 2].
at org.tensorflow.lite.Tensor.throwIfShapeIsIncompatible(Tensor.java:342)
at org.tensorflow.lite.Tensor.throwIfDataIsIncompatible(Tensor.java:305)
at org.tensorflow.lite.Tensor.copyTo(Tensor.java:183)
at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:166)
at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:311)
at org.tensorflow.lite.Interpreter.run(Interpreter.java:272)
at com.amitshekhar.tflite.TensorFlowImageClassifier.recognizeImage(TensorFlowImageClassifier.java:70)
at com.amitshekhar.tflite.MainActivity$1.onImage(MainActivity.java:75)
at com.wonderkiln.camerakit.EventDispatcher$1.run(EventDispatcher.java:42)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7094)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:536)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:928)
任何与此相关的帮助将不胜感激,此外,除了我的模型的输入大小和我自己的 tflite 模型以及资产文件夹中的 labels.txt 文件之外,我没有对代码进行任何更改。
我已经解决了我的问题。这是我的 .h5 keras 模型到 tflite 的转换过程的问题。因此,这导致了错误的输出张量。因此,任何遇到这种情况的人都应该确保
-
您的 Android 应用程序输入大小应与模型中指定的大小相同。
-
使用这个出色的工具在转换之前和之后始终检查您的模型,下面是该工具的链接。
[适用于所有类型模型的 Netron 可视化工具]
https://www.electronjs.org/apps/netron https://www.electronjs.org/apps/netron
- 使用此笔记本转换为 .pb 或 .tflite。我也为新手解释了其中的几乎每一步。
[谷歌 Colab 笔记本]
https://colab.research.google.com/drive/1wgy0vqS6IRO0rHju7l_InCUiatCo85y6#scrollTo=0tZma5ebnzZN https://colab.research.google.com/drive/1wgy0vqS6IRO0rHju7l_InCUiatCo85y6#scrollTo=0tZma5ebnzZN
Thanks..
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)