当前位置: 首页 > 知识库问答 >
问题:

TensorFlow Lite GPU代理故障

督宏旷
2023-03-14

我正在尝试使用TensorFlow Lite和Android上的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接口来编写跨平台代码。

任何想法/建议赞赏。

共有2个答案

宋昕
2023-03-14

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

  • 用于Android的TFLite GPU委托的所用(主分支)版本无法正确准备在GPU上运行标准(用于回归任务)输出节点组合=扁平密集
  • 如果用整形卷积(逐点)压缩代替它,则效果良好
程鸿畅
2023-03-14

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

 类似资料:
  • Webpack 的配置比较复杂,很容出现错误,下面是一些通常的故障处理手段。 一般情况下,webpack 如果出问题,会打印一些简单的错误信息,比如模块没有找到。我们还可以通过参数 --display-error-details 来打印错误详情。 $ webpack --display-error-details Hash: a40fbc6d852c51fceadb Version: webpa

  • Envoy提供了一套开箱即用, 选择加入的故障恢复功能,可以在应用程序中受益。功能包括: 超时 带超时预算有限重试以及重试之间的可变抖动 并发连接数和上游服务请求数限制 对负载均衡池的每个成员进行主动(定期)运行健康检查 细粒度熔断器(被动健康检查)- 适用于负载均衡池中的每个实例 这些功能可以通过Istio的流量管理规则在运行时进行动态配置。 重试之间的抖动使重试对重载的上游服务的影响最小化,而

  • 由于未知的原因,在生产和测试中通常每周几次,我们无法与 Kafka 代理通信,并且此消息在日志中重复出现:无法建立与节点 nnnn 的警告连接。经纪人可能不可用。(org.apache.kafka.clients.NetworkClient) 奇怪的是,这反过来又阻止了Kafka的工作(我们不能生产/消费)。 OpenShift没有意识到它不起作用,Kafka也没有识别它。 如果没有执行Broke

  • 问题内容: 我有一个用于捕获任何分段错误或ctrl- c的应用程序。使用下面的代码,我能够捕获分段错误,但是该处理程序一次又一次地被调用。我该如何阻止他们。供您参考,我不想退出我的申请。我只是可以小心释放所有损坏的缓冲区。 可能吗? 处理程序就是这样。 在这里,对于Segmentation故障信号,处理程序被多次调用,并且很明显MyfreeBuffers()给我释放已释放的内存的错误。我只想释放一

  • 我有一个应用程序,我用它来捕捉任何分割错误或ctrl-c。使用下面的代码,我能够捕获分段错误,但是处理程序被一次又一次地调用。我怎样才能阻止他们。告诉你,我不想退出我的申请。我只是可以小心释放所有损坏的缓冲区。 可能吗? handler是这样的。 这里的分段故障信号,处理程序被多次调用,因为明显的MyFreeBuffers()给我释放已经释放的内存的错误。我只想免费一次,但仍然不想退出应用程序。

  • 处理 new 故障的方法有多种。到目前为止,我们介绍过用宏 assert 测试 new 返回的值。如果返回值为0,则assert宏终止程序。这不是处理new故障的健壮机制,它不允许我们用任何方法从故障恢复。ANSI/ISO C++ 草案标准指定,出现 new 故障时抛出bad_alloc异常(在头文件<new>中定义)。但许多编译器目前还不支持草案标准,仍然在new故障时返回0。本节介绍三个new