作者:stong_lxm | 来源:互联网 | 2023-08-27 14:15
我已经创建了一个自定义模型。
之后,复制了此链接“ 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
模式下,一切正常。
您应该知道,根据docs使用TF-Lite,tflite.run()的两个参数都必须是张量。但是对于输出参数,您仅传递单个浮点数。因此,我很确定这是tfLite.run
模式错误"cannot resolve DataType of java.lang.Float"
的根本原因。
注意:同样根据文档,原始ByteBuffers
以及支持的数据类型(float
,int
,long
,{{1} })支持。您只需对输出执行相同的操作。
我为您上传了我的项目。
使用此link进行下载。
您还可以从here克隆它
如有任何疑问,请随时发表评论。