numpy 比像 eigen 这样的 C++ 线性代数库慢吗?

Jas*_*son 2 c++ numpy machine-learning linear-algebra neural-network

我用它来实现神经网络。我更喜欢NumPy,因为用Python准备数据更方便;但是,我担心 NumPy 不如 C++ 库快。

Ami*_*ory 6

我不得不说,我认为这里的其他答案遗漏了一些东西。

首先,正如 @Mike Muller 正确指出的那样,Python 的数值库具有 C 或 Fortran(或两者)后端,因此纯 Python 的性能几乎无关紧要(与后端的性能相反,后者可能很重要)。在这方面,无论您是MKL通过 Python 还是 C++ 进行操作,都没有什么区别。

但有两点不同:

  • Python 的优点是——它是交互式的。这意味着,特别是与IPython Notebook等工具结合使用时,您可以执行一个操作并绘制结果,执行另一个操作并绘制结果等。使用 C++ 或 C++ 等编译语言进行探索性分析很难获得这种效果。爪哇。

  • 对于 Python 来说,不利的一面是——至少可以说,它及其科学生态系统在处理多核方面并不完美。这是语言本身的一个基本问题(阅读 GIL


Mik*_*ler 5

NumPy 是用 C 实现的。所以大多数时候你只调用 C 和一些功能优化的 Fortran 函数或子例程。因此,使用 NumPy 执行许多任务时,您将获得不错的速度。您需要矢量化您的操作。不要for在 NumPy 数组上写循环。当然,手动优化的 C 代码可以更快。另一方面,NumPy 包含许多已经优化的算法,这些算法可能比经验不足的 C 程序员编写的最佳 C 代码更快。

您可以逐渐从Python中移动到C与用Cython和/或使用Numba 的JIT编译为机器或GPU代码。