耗时的 Tensorflow C++ Session->运行 - 用于实时推理的图像

Time Consuming Tensorflow C++ Session->Run - Images for Real-time Inference

[Tensorflow (TF) CPU] 我正在使用 GitHub [label_image/main.cc] 为 C++ TF 推理提供的骨架代码,以便 运行 我在 Python 中创建的冻结模型。该模型是具有两个隐藏层的 FC NN。

在我当前项目的 C++ 代码中,我 运行 NN 的每个图像(8x8 像素)的冻结分类器。对于每个样本,Session->运行 调用大约需要 0.02 秒,这在我的应用程序中是昂贵的,因为我可以有 64000 个样本,我必须 运行。

当我发送一批 1560 个样本时,Session->运行 调用大约需要 0.03 秒。

会话->运行 调用的这些时间测量是否正常?从 C++ 端,我应该发送我的冻结模型批量图像而不是单个样本吗?从 Python 端,是否有优化技巧来缓解该瓶颈?有没有办法在 C++ 中同时进行 Session-运行 调用?

环境信息

操作系统:Linux 已安装的 CUDA 和 cuDNN 版本:N/A

您还尝试过哪些其他尝试的解决方案?

  1. 我使用针对 CPU 的优化指令集安装了 TF,但它似乎并没有给我在 Whosebug
  2. 中提到的大量时间节省
  3. 为我创建的图形统一了会话。

编辑
似乎 MatMul 是瓶颈 -- 有什么改进建议吗?

我应该为我的冻结图使用 'optimize_for_inference.py' 脚本吗?

如何高精度地测量Python中的时间?

Timeline for feeding an 8x8 sample and getting the result in Python

Timeline for feeding an 8x8 batch and getting the result in Python

郑重声明,我做了两件事显着提高了我的应用程序速度:

  1. 编译 TF 以在我机器的优化 ISA 上工作。
  2. 对我的数据样本应用批处理。

如果您对我的回答有疑问,请随时在这里发表评论。