python - 与 Python 相比,Tensorflow C++ API 速度较慢

标签 python c++ tensorflow compiler-optimization compiler-options

我是 Tensorflow 爱好者,我正在尝试导出一个模型(用 Python 开发,然后使用 Tensorflow 工具卡住和优化)以供在 C++ 项目中使用(仅用于推理)。 我所经历的是,即使遵循其他用户已经打开的其他问题中发现的所有处方,我在编译源代码后获得的 C++ 可执行文件在推理操作(我的意思是 session ->运行)中要慢得多10 与 Python 推理代码中的相同操作相比。

我知道关于这个主题的不同问题。按照这些,我使用以下命令构建了 C++ 项目:

bazel build -c opt  --copt=-mfma --copt=-mfpmath=both //tensorflow/project:project

我也尝试对推理张量使用与训练相同的批量大小,但我仍然遇到 session -> 运行操作的时间性能同样恶化 10 级。

我知道原则上 C++ 的实现应该比 Python 的实现更快(只是因为 Python 比 C++ 更高级别),所以我认为这种效果是违反直觉的。我的问题是我是做错了什么还是这只是 Tensorflow 的一个特性。

另一个问题:在网络上搜索,我发现卡住图会减慢推理过程(我可能错了),但我想不出另一种加载图的方法在 C++ 代码而不是卡住的代码中(无论如何,卡住或不卡住图形对 Python 的性能没有影响)。也许有人还可以解释目前是否有其他选项可用。

非常感谢您提出的所有善意建议,并感谢您在 Tensorflow 方面所做的出色工作。

最佳答案

我发现问题与卡住图有关。在 python 中,我发现我在 python 案例中使用了检查点保存模型,而我在 c++ 代码中使用了卡住模型(我的错误,抱歉)。无论如何,卡住图表似乎大大减慢了推理过程。在以 C++ 方式切换到卡住模型后,python 推理代码也需要相同的 C++ 推理时间。

关于python - 与 Python 相比,Tensorflow C++ API 速度较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48384209/

相关文章:

python - 在 CPU 上运行 Tensorflow 时抑制 OpenMP 调试消息

python - 如何在 Python 中找到已知值所需的 2 次幂

python - Pandas DataFrame 作为带有嵌入列表的查找表

c++ - 无法使 boost::asio 简单同步服务器教程程序正常工作——连接被拒绝

python - 为什么pybind11将double转换为int?

python - 创建两个 TensorFlow session 时是否会创建图的多个实例?

javascript - 如何使用python获取链接内元素的文本

Python/Django 过滤组中具有最大值的行

c++ - SDL FrameRate 上限实现

tensorflow - 从源代码构建 TensorFlow 时出错