Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android tensorflow lite选择tf ops,从源tflite模型构建的tensorflow lite AAR找不到org.tensorflow.lite.解释器_Android_Tensorflow_Build.gradle_Tensorflow Lite_Aar - Fatal编程技术网

Android tensorflow lite选择tf ops,从源tflite模型构建的tensorflow lite AAR找不到org.tensorflow.lite.解释器

Android tensorflow lite选择tf ops,从源tflite模型构建的tensorflow lite AAR找不到org.tensorflow.lite.解释器,android,tensorflow,build.gradle,tensorflow-lite,aar,Android,Tensorflow,Build.gradle,Tensorflow Lite,Aar,我按照tensorflow android指南生成了tensorflow lite.aar和tensorflow lite从源代码中选择tf ops.aar 我当前的应用程序与 dependencies { ... implementation 'org.tensorflow:tensorflow-lite:2.3.0' implementation 'org.tensorflow:tensorflow-lite-gpu:2.3.0' implementatio

我按照tensorflow android指南生成了
tensorflow lite.aar
tensorflow lite从源代码中选择tf ops.aar

我当前的应用程序与

dependencies {
    ...
    implementation 'org.tensorflow:tensorflow-lite:2.3.0'
    implementation 'org.tensorflow:tensorflow-lite-gpu:2.3.0'
    implementation 'org.tensorflow:tensorflow-lite-select-tf-ops:2.3.0'
}
我希望减小
tensorflow lite选择tf ops.aar的大小
以减小app
apk
大小

我正在按照
build\u aar.sh
流程使用我的tflite模型缩小尺寸。使用的命令

bash tensorflow/lite/tools/build_aar.sh --input_models=custom_model.tflite --target_archs=arm64-v8a
这将生成
tensorflow lite.aar
tensorflow lite在
bazel bin/tmp
文件夹中为
custom_model.tflite
选择tf ops.aar
。tflite模型是量化的

使用新生成的aar文件实现

dependencies {
    ...
//    implementation 'org.tensorflow:tensorflow-lite-select-tf-ops:2.3.0'
//    implementation 'org.tensorflow:tensorflow-lite:2.3.0'
    implementation 'org.tensorflow:tensorflow-lite-gpu:2.3.0'

    implementation files('libs/tensorflow-lite.aar')
//    implementation files('libs/tensorflow-lite-gpu.aar')
    implementation files('libs/tensorflow-lite-select-tf-ops.aar')
}
但当它们包含在android应用程序编译中时,会发生错误

C:\folder\myapp\app\src\main\java\com\example\mapp\tflite\YoloV4Classifier.java:19: error: cannot find symbol
import org.tensorflow.lite.Interpreter;
                          ^
  symbol:   class Interpreter
  location: package org.tensorflow.lite
tensorflow lite.aar
使用
bazel build-c opt--fat\u apk\u cpu=arm64-v8a--host\u crosstool\u top=@bazel\u tools//tools/cpp:toolschain tensorflow/lite/java:tensorflow lite
构建时,这个问题就消失了。但这会引入未满足的链接错误:dlopen失败:无法使用先前的
tensorflow-lite选择tf ops.aar
和使用上述命令新建的
tensorflow-lite.aar
找到符号

如果我把以前的
tensorflow lite.aar
和新的
tensorflow lite.aar
都放在
bazel build-c opt--fat\u apk\u cpu=arm64-v8a--host\u crosstool\u top=@bazel\u tools//cpp:toolschain tensorflow/lite/java:tensorflow lite
中生成,那么就出现了构建错误

More than one file was found with OS independent path 'lib/arm64-v8a/libtensorflowlite_jni.so'

我按照基于非输入tflite模型的命令生成
tensorflow lite.aar
tensorflow lite gpu.aar
tensorflow lite从源代码中选择tf ops.aar
,但应用程序大小变得非常大。我已经尝试过了,但每一个都会带来一种新的错误。

问题已修复,如下所述


在将tflite AAR添加到项目中时遇到一些问题,请尝试方法adding AAR工作正常,但问题是从源代码构建的tensorflow lite找不到解释器。我的意思是,我遇到了相同的问题(解释器未找到,但具有正常构建),并且该方法解决了问题。