与Python相比,Tensorflow C++ API很慢
Tensorflow C++ API is slow compared to Python
我是一个Tensorflow爱好者,我正在尝试导出一个模型(用Python开发,然后使用Tensorflow工具冻结和优化),以便在C++项目中使用(仅用于推理)。 我所经历的是,即使遵循其他用户已经打开的其他问题中找到的所有处方,我在编译源代码后获得的C++可执行文件在推理操作(我的意思是会话>运行)中比 Python 推理代码中的相同操作慢 10 倍。
我知道关于这个主题的不同问题。在这些之后,我使用以下命令构建了C++项目:
bazel build -c opt --copt=-mfma --copt=-mfpmath=both //tensorflow/project:project
我还尝试对推理张量使用与用于训练相同的批量大小,但我仍然遇到会话>运行操作的时间性能同样恶化 10 级。
我知道原则上,C++实现应该比 Python 的更快(只是因为 Python 比 C++ 更高级别),所以在我看来这种效果是违反直觉的。我的问题是我是否做错了什么,或者这只是Tensorflow的一个功能。
另一个问题:在网上谷歌搜索,我可以发现冻结图具有减慢推理过程的效果(我可能是错的),但我无法找到另一种在C++代码中加载图而不是冻结代码的方法(无论如何,冻结与否图表对 Python 的性能没有影响)。也许有人也可以解释目前是否有其他选择。
提前非常感谢您的所有善意建议,并感谢您在 Tensorflow 上的出色工作。
我发现问题与冻结图有关。在python中,我发现我正在为python案例使用检查点保存模型,而我将冻结的模型用于c ++代码(我的错误,对不起)。无论如何,冻结图形似乎会大大减慢推理过程。以C++方式切换到冻结模型后,python推理代码也需要相同的C++推理时间。
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在gtest.中使用fff.h模拟系统API
- 有没有任务栏API可以立即应用注册表更改
- C++win32 API创建多个类似视口的窗口
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何将真正的字符串从python c-api转换为python脚本
- 使用Qt框架在c ++类中创建API调用
- Libreoffice API (UNO):需要更改用户的 xTextField 文本
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 使用 Python Extension API 包装复杂C++类
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 第三方 API 中的编译错误 - Visual Studio
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- Issues with Win32 ReadProcessMemory API