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

如何在AndroidTensorflow Lite上使用HAL 1.2版?

喻渊
2023-03-14

我有一个量化的TensorflowLite模型,我正在加载到运行Android 11的Pixel 3上。我使用TensorflowLite 2.5构建了这个模型,我正在使用Android的Tensorflow每晚构建。

我正在使用默认提供的NNAPI委托初始化TFLite解释器

但是,当我加载模型时,我从NNAPI收到以下错误:

/OperationsUtils(16219): NN_RET_CHECK failed (frameworks/ml/nn/common/OperationsUtils.cpp:111): Operation QUANTIZE with inputs {TENSOR_FLOAT32} and outputs {TENSOR_QUANT8_ASYMM} is only supported since HAL version 1.2 (validating using HAL version 1.0)
E/Utils   (16219): Validation failed for operation QUANTIZE
E/OperationsUtils(16219): NN_RET_CHECK failed (frameworks/ml/nn/common/OperationsUtils.cpp:111): Operation QUANTIZE with inputs {TENSOR_FLOAT32} and outputs {TENSOR_QUANT8_ASYMM} is only supported since HAL version 1.2 (validating using HAL version 1.0)

Android 11应该支持NNAPI 1.2。TensorFlow或Android是否缺少一些参数来支持NNAPI的更高版本?

作为参考,以下是我的gradle文件中的依赖项:

dependencies {
    // snip
    implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
    implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly-SNAPSHOT'
}

共有1个答案

杜绍元
2023-03-14

事实证明,这些错误是来自NNAPI的更多警告。Tensorflow Lite正在为所有可用设备创建模型,NNAPI根据操作选择最佳设备。添加详细登录这一切的最终结果是,NNAPI决定唯一能够处理模型的设备是qti默认设备。错误来自paintbox和nnapi参考设备,这些设备随后未用于模型的执行。

我假设这些消息是在NNAPI上执行模型失败的原因,但还有其他错误。

因此,这个问题的答案是TensorFlow Lite和NNAPI尽可能选择受支持的最佳设备,尽管有可怕的错误消息

 类似资料:
  • 本文向大家介绍如何在BigDecimal上使用>,=,相关面试题,主要包含被问及如何在BigDecimal上使用>,=,时的应答技巧和注意事项,需要的朋友参考一下 Class的每个对象都有一个可用来将其与另一个BigDecimal进行比较的方法。然后比较的结果,或者根据需要进行比较。阅读文档,您将找到答案。 运营商,,等只能在基本数据类型等中使用,,或它们的包装类等和。 从以下文档中: 将其与指定

  • 问题内容: 在浏览Android WebView文档时遇到了ServiceWorkerController,并决定尝试一下。不幸的是,我无法截获任何电话。我知道WebViewClient.shouldInterceptRequest,但有兴趣了解有关ServiceWorkerController的更多信息。不幸的是,这些文档比我下面已经实现的稀疏。任何帮助,将不胜感激。 我整理了一个由单个Acti

  • 问题内容: 我必须对ffmpeg使用以下命令 我已经在Mac上成功安装了ffmpeg。我尝试使用FFMPEGWrapper,但是使用“ map”似乎没有任何此类参数。 我需要知道如何从视频中提取流。我已经可以访问流了,因为服务器端在端使用ffprobe向我提供了这些流。 问题答案: 将FFMpeg用于IOS的最佳方法是MobileFFMpeg库。 这是来源:https : //github.com

  • 问题内容: 如您所愿,您可以在Java 8中使用lambda,例如,以替换匿名方法。 可以在此处看到Java 7与Java 8的示例: 可以用Java 8中的以下两种方式表示: 要么 这是因为它是一个功能接口,仅具有一个(抽象的)公共非默认方法。 但是…因为我们有以下几点: 看起来很熟悉吧? 但是,使用lambda表达式不起作用,因为它是一个抽象类,即使它只有一个抽象的公共非默认方法,它也不是接口

  • 问题内容: 我想知道如何在Windows XP 32位上使用PyPy 1.8。我从网站上下载了zip文件,并将其安装到“我的文档”文件中。最初,我认为它与psyco类似,因为我必须“导入psyco”,但是我发现PyPy.exe的行为类似于Python命令行。 我尝试将脚本拖到PyPy.exe中运行它们,但似乎根本不起作用。尝试在PyPy中使用“ python”命令会产生“未定义全局名称’pytho

  • 问题内容: 如果我没记错的话,Android准则说您应该将ActionBar用于应用程序内的全局导航。 但是同时,您通常希望定位最古老的API,以实现最大的兼容性。 我正在开始开发应用程序,并将目标设置为Android 2.2。 是否可以在此处使用操作栏?如果没有,我该怎么用? 谢谢凯文 问题答案: 使用ActionBarSherlock。 确保您的项目使用Android 4.0+作为构建目标,并

  • 问题内容: 该文档指出: 装饰器还提供用于清除或使高速缓存无效的功能。 它没有提供任何示例或使用指导 我有两个问题: 如何从其他功能运行? 如果我有条件地在正在缓存的函数中进行调用,它将永远执行吗? 问题答案: 除了缓存之外,decorator还向修饰后的函数-和中添加了新功能。下面是一个简单的示例,应解释它们如何工作: 回答您的问题: 如果我有条件地将cache_clear()调用放在正在缓存的

  • 我用那个代码来控制我的android设备剪贴板,但是它给了我错误。我在远程设备Android6.0上测试这段代码。这是我的错误 Oct 06,2018年7:47:01 AM org.openqa.selenium.remote.errorcodes to status info:HTTP status:“404”->线程“main”org.openqa.selenium.unsupportedCo