哪些python深度学习库可在运行时编译?

时间:2019-04-17 18:17:52

标签: python compilation runtime pytorch theano

我试图用Python进行C优化的代码。现在,我已经读过几次Python可以通过C扩展来实现高速计算。换句话说,每当我使用numpy之类的库时,它基本上都会调用C扩展来计算结果并将其返回。

使用numpy的C扩展名

说我想使用np.add(x,y)将两个数字相加。如果我理解正确,诸如numpy之类的库不会编译python代码,而是已经带有可执行文件,这些可执行文件将简单地获取x和y值并返回结果。正确吗?

Theano,Tensorflow和PyTorch

尤其是,我想知道深度学习库是否也是如此。根据Theano的官方文档,它需要g ++和gcc(至少强烈建议使用它们)。这是否意味着Theano将在运行时编译python脚本的C(或C ++)代码?如果是这样,PyTorch和Tensorflow是否一样?

我希望有人可以在这里解决我的困惑!非常感谢!

1 个答案:

答案 0 :(得分:1)

python中的

C扩展

numpy经常使用C扩展名。例如,您可以在[2]中查看sort()函数[1]的C实现。

[1] https://docs.scipy.org/doc/numpy/reference/generated/numpy.sort.html

[2] https://github.com/numpy/numpy/blob/master/numpy/core/src/npysort/quicksort.c.src

深度学习库

深度学习库的大部分后端以及CUDA和CUDNN都使用C扩展。可以在运行时编译代码:

[3] http://deeplearning.net/software/theano/extending/pipeline.html#compilation-of-the-computation-graph

[4] https://www.tensorflow.org/xla/jit

[5] https://pytorch.org/blog/the-road-to-1_0/#production--pain-for-researchers

为回答您的问题,theano将在python脚本的运行时编译C / C ++代码。对于theano,图形运行时的编译时间非常慢:我建议您重点关注pytorchtensorflow而不是theano

如果您不熟悉深度学习,也可以快速浏览[6]。

[6] https://github.com/google/jax