TensorFlow Lite GPU委托失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow Lite GPU委托失败相关的知识,希望对你有一定的参考价值。

我试图在android上使用TensorFlow Lite和GPU委托。我正在使用从repo主分支的源代码构建的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 ++接口来实现我的跨平台代码。

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

答案

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

另一答案

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

  • 用于Android的TFLite GPU委托的已使用(主分支)版本无法正确准备在GPU上运行标准(用于回归任务)输出节点组合=展平+密集。
  • 如果用reshape + convolution(逐点)+挤压替换它,那么它工作正常。

以上是关于TensorFlow Lite GPU委托失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tensorflow Lite 上为 CoreML 委托设置填充类型以修复未设置“PoolingLayerBuilder (MEAN)_1”。

tensorflow-gpu 不适用于 Blas GEMM 启动失败

使用 toco 将假量化 tensorflow 模型(.pb)转换为 tensorflow lite 模型(.tflite)失败

tensorflow lite 转换失败。 “未定义符号:_ZTIN10tensorflow6DeviceE”发生

Tensorflow-gpu 获取卷积算法失败

centos7下安装部署tensorflow GPU 版本