Python继续引领机器学习,人工智能,深度学习和数据科学任务。据海外研究机构称,45%的技术公司更喜欢使用Python来实现AI和机器学习。
当然,这些列表完全是主观的,因为许多库可以轻松地放在多个类别中。例如,TensorFlow包含在此列表中,但Keras已被省略,而机器学习库集合中的功能则被替换。这是因为Keras更像是像SKLearn这样的“最终用户”库,而不是TensorFlow,后者更吸引研究人员和机器学习工程师类型。
图1:前三名Python深度学习库,由提交者和贡献者提供。圆的大小与星的数量成正比。
1.TensorFlow(贡献者-1700,提交-42256,获得星星-112591)
TensorFlow是一个使用数据流图进行数值计算的开源软件库。图形节点表示数学运算,而图形边缘表示在它们之间流动的多维数据阵列(张量)。这种灵活的体系结构使您可以将计算部署到桌面,服务器或移动设备中的一个或多个CPU或GPU,而无需重写代码。
说到TensorFlow,前不久谷歌发布了一个TensorFlow.js的工具,有了这项工具,用户可以利用AIY Projects 旗下的两款AIY硬件产品——AIY Vision Kit和Voice Kit,DIY自己的人工智能小玩意。即使不是机器视觉领域的专家,大家也可以实现很多应用场景,比如在浏览器中训练自己的宠物脸辨识系统,在自家的监视系统中使用等等。
2.PyTorch(贡献者-806,提交-14022,获得星星-20243)
PyTorch是一个Python包,提供两个高级功能:
具有强大的GPU加速度的张量计算(如NumPy)
基于磁带的自动编程系统构建的深度神经网络
您可以重用您喜欢的Python软件包,如NumPy,SciPy和Cython,以便在需要时扩展PyTorch。
3.Apache MXNet(贡献者-628,提交-8723,获得星星-15447)
Apache MXNet(孵化)是一个深度学习框架,旨在提高效率和灵活性。它允许您混合符号和命令式编程,以最大限度地提高效率和生产力。MXNet的核心是一个动态依赖调度程序,可以动态地自动并行化符号和命令操作。
4.Theano(贡献者-329,提交-28033,获得星星-8536)
Theano是一个Python库,允许您有效地定义,优化和评估涉及多维数组的数学表达式。它可以使用GPU并实现有效的符号区分。
5.Caffe(贡献者-270,提交-4152,获得星星-25927)
Caffe是一个深度学习框架,以表达,速度和模块化为基础。它由伯克利人工智能研究(BAIR)/伯克利视觉与学习中心(BVLC)和社区贡献者开发。
6.fast.ai(贡献者-226,提交-2237,获得星星-8872)
fast.ai库使用现代最佳实践简化了快速准确的神经网络训练。该图书馆基于对fast.ai进行的深度学习最佳实践的研究,包括对视觉,文本,表格和协作(协作过滤)模型的“开箱即用”支持。
7.CNTK(贡献者-189,提交-15979,获得星星-15281)
Microsoft认知工具包它是一个统一的深度学习工具包,它通过有向图将神经网络描述为一系列计算步骤。在该有向图中,叶节点表示输入值或网络参数,而其他节点表示其输入上的矩阵运算。CNTK允许用户轻松实现和组合流行的模型类型,如前馈DNN,卷积网络(CNN)和循环网络(RNN/LSTM)。
8.TFLearn(贡献者-118,提交-599,获得星星-8632)
TFlearn是一个基于Tensorflow构建的模块化透明深度学习库。它旨在为TensorFlow提供更高级别的API,以促进和加速实验,同时保持完全透明并与之兼容。
9.Lasagne(贡献者-64,提交-1157,获得星星-3534)
Lasagne是一个轻量级的库,用于在Theano中构建和训练神经网络。它支持前馈网络,如卷积神经网络(CNN),包括长短期记忆(LSTM)的循环网络及其任何组合。
10.nolearn(贡献者-14,提交-389,获得星星-909)
nolearn包含许多围绕现有神经网络库的包装和抽象,最着名的是Lasagne,以及一些机器学习实用程序模块。编写所有代码以与scikit-learn兼容。
11.Elephas(贡献者-13,提交者-249,获得星星-1046)
Elephas是Keras的扩展,它允许您使用Spark大规模运行分布式深度学习模型。Elephas目前支持许多应用程序,包括:
深度学习模型的数据并行训练
分布式超参数优化
集成模型的分布式训练
12.ApacheSpark(贡献者-12,提交-83,获得星星-1131)
DeepLearningPipelines使用ApacheSpark为Python中的可扩展深度学习提供高级API。该库来自Databricks,并利用Spark的两个最强大的方面:
本着Spark和SparkMLlib的精神,它提供了易于使用的API,可以在极少数代码行中实现深度学习。
它使用Spark强大的分布式引擎来扩展对大量数据集的深度学习。
13.分布式Keras(贡献者-5,提交-1125,获得星星-523)
DistributedKeras是一个基于ApacheSpark和Keras构建的分布式深度学习框架,专注于”最先进“的分布式优化算法。我们以这样一种方式设计框架,即可以轻松实现新的分布式优化器,从而使人们能够专注于研究。