android - Tensorflow-Lite - 基准测试工具 - 不同的结果

标签 android performance tensorflow tensorflow-lite

我正在尝试使用 TFLite Benchmark tool使用 mobilenet 模型并检查最终结果 inference time以微秒为单位比较不同的模型。我面临的问题是运行之间的结果不同。我还在与 reducing variance between runs on Android 相关的文档中找到了这一部分.它解释了如何在运行基准测试之前设置 CPU 亲和性以获得运行之间的一致结果。目前使用 Redmi Note 4 和 One Plus 进行工作。

  1. 谁能解释一下我应该如何设置 CPU affinity我的实验有什么值(value)?

  2. 是否可以在线或在 Android 手机上找到不同手机的亲和掩码?

  3. 当我增加 --warmup_runs 的数量时参数我得到的结果变化不大。是否有更多方法可以使我的结果更加一致?

  4. Android 手机上的后台进程是否影响我的 inference time有什么方法可以阻止它们以减少结果的差异?

最佳答案

  1. 正如文档所建议的,任何值都可以,只要您在整个实验中与某个值保持一致即可。需要考虑的一件事是是使用大核还是小核(如果您是大.小架构),通常最好同时尝试两者(它们具有不同的缓存大小等)

    <
  2. 是的,您通常可以在线找到此信息。参见 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0515b/CJHBGEBA.html举个例子。您需要查看您的特定手机,查看它使用的特定 CPU,然后通过谷歌搜索获取更多信息。

  3. 我试过 --warmup_runs = 2000+,通常它非常稳定。较小的模型有更多的差异。对于密集型号(至少对于特定设备),您可能想查看设备是否过热等。我还没有在中端手机上看到过这种情况,但听说人们有时会把他们的设备放在凉爽的地方(风扇、冰箱)。

  4. 他们可能会,但这是不可避免的。您能做的最好的事情就是关闭所有应用程序并断开与 Internet 的连接。不过,我个人并没有看到它们引入太多差异。

关于android - Tensorflow-Lite - 基准测试工具 - 不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52462808/

相关文章:

java - 为什么 SparseIntArray 不实现 Map<Integer, Integer>?

java - 上下文切换与并行执行

javascript - 是否可以强制 Node.js 对代码进行 JIT 编译?

python - 使用 Keras 进行贪婪分层训练

python - 即使使用相同的数据,Keras 训练和验证指标值也不同(逻辑回归)

android - 如何删除appbarlayout android中工具栏顶部的额外填充

android - 通过室内地理围栏控制飞利浦色相灯泡

android - 如果子组件与其中一个父组件存在冲突,Dagger 不会抛出异常

javascript - 我如何优化 qTip?

python - 如何使用tf.data.Dataset和tf.keras做多输入和多输出?