首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从源tflite模型建立的tensorflow-lite -select-tf-op和tensorflow-lite AAR无法找到org.tensorflow.lite.Interpreter。

从源tflite模型建立的tensorflow-lite -select-tf-op和tensorflow-lite AAR无法找到org.tensorflow.lite.Interpreter。
EN

Stack Overflow用户
提问于 2020-11-26 12:08:10
回答 2查看 1K关注 0票数 0

我按照tensorflow android指南从源代码中生成tensorflow-lite.aartensorflow-lite-select-tf-ops.aar

安卓

我现在的应用程序可以用,

代码语言:javascript
复制
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-select-tf-ops.aar apk 的大小,以减少应用程序的大小。

我遵循build_aar.sh过程来缩小我的tflite模型的大小。所用的命令,

代码语言:javascript
复制
bash tensorflow/lite/tools/build_aar.sh --input_models=custom_model.tflite --target_archs=arm64-v8a

这将在tensorflow-lite.aar文件夹中为custom_model.tflite生成bazel-bin/tmptensorflow-lite-select-tf-ops.aar。tflite模型是FP16量子化的。

使用新生成的aar文件实现,

代码语言:javascript
复制
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应用程序中时,就会出现编译错误。

代码语言:javascript
复制
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_apk_cpu=arm64-v8a --host_crosstool_top=@bazel_tools//tools/cpp:toolchain tensorflow/lite/java:tensorflow-lite构建时,这个问题就消失了。但是,这引入了UnsatisfiedLinkError: dlopen failed:无法用前面的tensorflow-lite-select-tf-ops.aar定位符号,以及使用上面的命令找到新构建的tensorflow-lite.aar

如果我把以前从custom_model.tflite生成的tensorflow-lite.aar和用bazel build -c opt --fat_apk_cpu=arm64-v8a --host_crosstool_top=@bazel_tools//tools/cpp:toolchain tensorflow/lite/java:tensorflow-lite生成的新tensorflow-lite.aar放在一起,那么就会出现构建错误,

代码语言:javascript
复制
More than one file was found with OS independent path 'lib/arm64-v8a/libtensorflowlite_jni.so'

我遵循基于非输入tflite模型的命令从源生成tensorflow-lite.aartensorflow-lite-gpu.aartensorflow-lite-select-tf-ops.aar,但是应用程序的大小变得非常大。我已经尝试过其他方式,但是每个错误都会带来一种新的错误类型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-04 20:59:06

Stack Overflow用户

发布于 2022-06-25 12:28:51

只需将这一行添加到应用程序级别的build.gradle中的依赖项中即可。

代码语言:javascript
复制
    implementation 'org.tensorflow:tensorflow-lite-select-tf-ops:2.9.0'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65021800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档