android - Android中的自定义 tensorflow 模型

标签 android tensorflow deep-learning tensorflow-lite finetunning

我创建了一个自定义模型。

之后,复制了此链接“ https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/android
用自己的.tflite更改了默认.tflite
更改缓冲区后(我的模型未量化)(我应该由缓冲区1080000设置,默认值为270000)
但是错误在TFLiteObjectDetectionAPIModel.java和行tfLite.runForMultipleInputsOutputs(inputArray, outputMap);

控制台中的错误是“ java.lang.IllegalArgumentException:无效的输出张量索引:1”
我用谷歌搜索并测试了大多数答案,但是我找不到真正的答案!

我已将“ tfLite.runForMultipleInputsOutputs(inputArray, outputMap);”更改为“ tfLite.run(imgData, outputLocations);
而且该错误没有任何问题,但是此代码“ tfLite.runForMultipleInputsOutputs(inputArray, outputMap);”没有任何响应
有什么建议的帮助吗?

我的模型是“ https://dinasys.ir/androidTF/assets2.zip”或“ https://dinasys.ir/androidTF/assets3.zip
它们是相同的,但是资产3已接受了11个小时的培训,而其他3则少于10个小时。

最佳答案

我在我的项目中尝试使用您的模型。

tfLite.run模式下存在问题,它无法解析DataType,但是在tfLite.runForMultipleInputsOutputs模式下一切正常。

您应该知道,根据文档使用TF-Lite for Java,tflite.run()的两个参数都必须是张量。但是对于输出参数,您仅传递单个浮点数。因此,我很确定这是tfLite.run模式错误"cannot resolve DataType of java.lang.Float"的根本原因。

注意:根据文档,还支持原始的ByteBuffers以及支持的数据类型(floatintlongbyte)的多维数组。您只需要对输出执行相同的操作。

我为您上传项目。

使用此link进行下载。

您也可以从here克隆它

如有任何疑问,请随时发表评论。

关于android - Android中的自定义 tensorflow 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58745286/

相关文章:

android - 启用后退按钮时工具栏标题不在中心

java - 如何捕获 Firebase Auth 特定异常

tensorflow - 多头注意层 - Keras 中的包装多头层是什么?

machine-learning - Caffe 损失层、均值和准确度

Android 相机未保存在特定文件夹中 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

java - 编码 Android/Java 连接到 ASP.Net Web API

python - 如何在 tensorflow 的回调中访问训练和测试数据?

tensorflow - 如何在 tensorflow 2.0 RNN 中使用预训练的嵌入矩阵作为嵌入层的初始权重?

machine-learning - Keras 中的一对多 LSTM

python - 如何在 Watson Studio 的 WML 存储库中保存 keras 模型?