【问题标题】:TensorFlow Lite GPU delegate failureTensorFlow Lite GPU 委托失败
【发布时间】:2019-04-22 12:56:38
【问题描述】:

我正在尝试在 Android 上将 TensorFlow Lite 与 GPU 委托一起使用。我正在使用从 repo 的 ma​​ster 分支的源构建的 lib 版本(.so 文件)。问题是:ModifyGraphWithDelegate 函数总是返回错误。并且日志中有如下错误信息:

2019-04-22 15:21:16.212 688-688/com.my.app E/tflite: TfLiteGpuDelegate Prepare: Shader compilation failed: ERROR: 0:6: 'unknown' : not a legal layout qualifier id 
    ERROR: 0:6: 'unknown' : Syntax error:  syntax error
    INTERNAL ERROR: no main() function!
    ERROR: 2 compilation errors.  No code generated.
2019-04-22 15:21:16.212 688-688/com.my.app E/tflite: Node number 54 (TfLiteGpuDelegate) failed to prepare.

如果我像在官方示例项目中那样使用 JAVA/JNI 预构建的 lib 版本('org.tensorflow:tensorflow-lite:0.0.0-gpu-experimental') - 就没有这样的错误。但我确实需要为我的跨平台代码使用 C++ 接口。

任何想法/建议表示赞赏。

【问题讨论】:

  • 您好,您是如何使用 c++ 接口为 android 构建 gpu 委托的?我在 tf repo 中没有看到任何相同的文档。
  • 查看对应的BUILD文件。底部有一个名为“libtensorflowlite_gpu_gl.so”的 cc_binary 目标,其上方是构建命令行示例。您还需要将 soname 参数添加到 linkopts 以允许在运行时正确加载库。

标签: android tensorflow-lite


【解决方案1】:

如果您正在构建本机共享库,那么您可能需要手动加载 .so 库。 见https://groups.google.com/a/tensorflow.org/forum/#!topic/tflite/5YhFsCFtKi4

【讨论】:

  • 我肯定会这样做。库已加载且其功能可用。函数调用过程中出现错误。
【解决方案2】:

我终于成功了。错误的内部原因对我来说仍然完全未知,但重点是:

  • 用于 Android 的 TFLite GPU 委托的已使用(主分支)版本未能正确准备在 GPU 上运行标准(用于回归任务)输出节点组合 = 扁平化 + 密集。
  • 如果将其替换为重塑 + 卷积(逐点)+ 挤压,则效果很好。

【讨论】:

  • 在链接到 GPU 代表时,我不断收到 error: undefined reference to 'TfLiteGpuDelegateV2Delete,而 libtensorflowlite.so CPU 版本仍然有效。你能帮忙吗?
猜你喜欢
  • 2022-08-10
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
  • 2011-09-10
相关资源
最近更新 更多