TensorFlow Lite GPU委托失败

时间:2019-04-22 12:56:38

标签: android tensorflow-lite

我正在尝试将 TensorFlow Lite 与Android上的GPU委托一起使用。我正在使用从回购的 master 分支的源构建的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 ++接口。

任何想法/建议都值得赞赏。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

  • 用于Android的TFLite GPU委托的使用(主分支)版本无法正确地准备在标准(用于回归任务)输出节点组合= flatten + density上在GPU上运行。
  • 如果将其替换为整形+卷积(逐点)+挤压,则效果很好。