【问题标题】:tflite model outputs different predictions on CPU and NNAPItflite 模型输出对 CPU 和 NNAPI 的不同预测
【发布时间】:2021-05-28 12:09:00
【问题描述】:

我在 Ubuntu 18.04 机器上训练和量化了一个 Tensorflow 模型,并将其转换为 tflite 格式。然后我将它部署在配备 NPU 加速器的 Linux Yocto 板上,tflite_runtimeNNAPI。我注意到,当使用 PC 上的 CPU 和板上的 NPU+NNAPI 进行推理时,相同的 tflite 模型会输出不同的预测。这些预测通常是相似的,但在某些情况下它们是完全不同的。我尝试在板上禁用 NNAPI 并使用 CPU 进行推理,结果与 PC CPU 上的结果相同。所以我认为问题在于NNAPI。但是,我不知道为什么会这样。有没有办法防止它或使网络在训练期间更加健壮?

【问题讨论】:

  • 我以前没听说过。 tflite 团队会非常感兴趣。我认为您应该在 github 页面上打开一个包含足够信息的问题。

标签: python deep-learning tensorflow2.0 tensorflow-lite nnapi


【解决方案1】:

飞利昂,

NNAPI 团队也有兴趣了解更多信息。

可以预料会有微小的变化,但不应该出现完全不同的结果。

您尝试过不同的设备吗?您是否看到相同的变化?

您提到了 Linux Yocto 构建。您是在 Yocto 上使用 Android 运行测试,还是使用 NNAPI 的 Linux 版本?

【讨论】:

  • 我也尝试使用 pyarmnn 而不是 NNAPI 委托,但问题仍然存在。所以问题出在NNAPI层之下。然而,经过一些试验,我设法显着减少了这种行为。我的网络的原始版本没有量化最后一个 Dense+Sigmoid 层,因为我无法做到。我将 Sigmoid 更改为 Softmax,并尝试对整个网络进行量化。现在预测几乎相同。我正在使用 Linux 版本。
  • 感谢您提供详细信息。看来您已经解决了该错误。但是,最好弄清楚原始错误是什么。你认为你可以产生一个最小的测试用例吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多