用 C++ 和 Python 编写的所有 Tensorflow 算法是不是都只是易于使用的 API?

Posted

技术标签:

【中文标题】用 C++ 和 Python 编写的所有 Tensorflow 算法是不是都只是易于使用的 API?【英文标题】:Are all the algorithms of Tensorflow written in C++ and Python only serve to be easy-to-use APIs?用 C++ 和 Python 编写的所有 Tensorflow 算法是否都只是易于使用的 API? 【发布时间】:2017-04-24 23:29:54 【问题描述】:

我知道 Tensorflow 是用 C++ 引擎编写的,但是我在我的安装目录中没有找到任何 C++ 源代码(我是通过 pip 安装的)。当我检查 python 代码时,我感觉到 python 级别只是一个包装器,没有呈现算法的本质。例如tensorflow/python/ops/gradients.py中,gradients()函数调用python_grad_func()计算梯度,这是DeFun的类方法。

我的问题是,Tensorflow 的所有重要部分都是用 C++ 编写的,而 python 只是用作一些 API 吗?

【问题讨论】:

这听起来很可能,因为算法可以用最适合该问题的语言编写,然后您只需提供绑定以使用不同语言的库。根据我的经验,这是一种相当典型的做法 @Neo223:你知道如何从 Tensorflow 源代码中获取任何运算符的实际 c++ 实现/代码吗?有没有办法在tensorflow中获取后端c++代码? 【参考方案1】:

这基本上是正确的,尽管在 Python 中实现了很多复杂的东西。我不会说 C++ 中的“算法”,而是说核心数据流执行引擎和大多数操作(例如 matmul 等)都在 C++ 中。许多管道以及一些功能(如定义函数的梯度)都在 Python 中。

有关为什么会这样的更多信息和讨论,请参阅this *** answer

【讨论】:

以上是关于用 C++ 和 Python 编写的所有 Tensorflow 算法是不是都只是易于使用的 API?的主要内容,如果未能解决你的问题,请参考以下文章

想用所有语言编写hello world

用C或C++为Python编写模块

Python、线程、GIL 和 C++

Python 和 C++ 共享相同的内存资源

来自 Python | 的远程过程调用红宝石 | ... 到 C++

如何在Mac下编写并运行C++程序