我正在尝试编写自己的 ML 库。出于速度原因,我开始使用 BLAS 用 C 语言编写东西,但后来我了解到 NumPy 和 Theano 也使用 BLAS。我想知道 C/Python/Matlab/Octave 中 ML 算法的实现之间是否存在巨大的速度差异。
有没有人有经验或者可以提供一些数据进行比较?如果没有真正好的理由用纯 C 编写,我宁愿不要。
我正在尝试编写自己的 ML 库。出于速度原因,我开始使用 BLAS 用 C 语言编写东西,但后来我了解到 NumPy 和 Theano 也使用 BLAS。我想知道 C/Python/Matlab/Octave 中 ML 算法的实现之间是否存在巨大的速度差异。
有没有人有经验或者可以提供一些数据进行比较?如果没有真正好的理由用纯 C 编写,我宁愿不要。
这在很大程度上取决于算法。
有几件事用 C 编写代码不会给您带来任何好处:矩阵运算(点积、元素乘法/函数的应用,如 sin 左右、矩阵求逆、QR 分解,...),因为 BLAS 或 LAPACK叫做。这使得轻松实现许多算法成为可能。
尽管当您需要处理诸如树或巨大图之类的事情时,您将很难匹配 C 的性能,例如决策树、KNN 或具有大量结构的复杂图形模型就是这种情况。
一些随意的想法: