大数据频道 频道

最适合人工智能的框架和库,大公司都在用

  【IT168 编译】在很长一段时间内,人工智能都被认为是阳春白雪的科技技术,只有搞学术的和天才才会研究,但是近年来,随着各种框架和库的发展,人工智能领域开始变得友好,更多的技术人才开始进入到这个领域。

  本文将着重为大家介绍10个人工智能领域高质量的框架和库,分析它们的特点,对比它们的优缺点,帮助更多技术人加入人工智能的圈子中。

  1. TensorFlow

  “使用数据流图进行可伸缩机器学习的计算。”

  语言:C ++或Python。

  一脚踏入人工智能领域时,你听到的第一个框架可能就是Google的TensorFlow。

  TensorFlow是一个使用数据流图进行数值计算的开源软件。据悉,这个框架允许在任何CPU或GPU上进行计算,无论是台式机、服务器还是移动设备都支持。

  TensorFlow通过称为节点的数据层进行排序,并根据所得到的信息进行决策。

  优点:

  使用易于学习的语言(Python)。

  使用计算图抽象。

  可使用TensorBoard可视化。

  缺点:

  由于Python不是最快的编程语言,所以它速度会很慢;

  预先训练的模型十分缺乏。

  不是完全开源。

  2.微软的CNTK

  “开源的深度学习工具包”

  语言:C ++。

  CNTK,我们可以称之为是微软对Google TensorFlow的回应。

  微软的Computational Network ToolKit是一个提高模块化和维护分离计算网络,提供学习算法和模型描述的库。

  CNTK还可以同时利用多台服务器,据说它的功能与Google TensorFlow相近,但是速度却要更快。

  优点:

  非常灵活;

  允许分布式训练;

  支持C ++、C#、Java和Python。

  缺点:

  它是用一种新的语言——Network Description Language (NDL)来实现的;

  缺乏可视化;

  3. Theano

  “数值计算库”

  语言:Python。

  作为TensorFlow的强大竞争对手,Theano是一个强大的Python库,允许使用高效率的多维数组进行数值操作。

  该库使用GPU来执行数据密集型计算,因此操作效率很高。也同样是因为这个原因,在10年的时间里,Theano都被用于为大规模的计算密集型操作提供动力。

  2017年9月,Theano的开发与维护者之一 Pascal Lamblin 贴出了一封邮件:Yoshua Bengio 宣布在发布Theano 1.0版本之后,终止Theano的开发和维护。当然,这并不意味着Theano是个不强大的库。

  优点:

  正确优化CPU和GPU。

  高效的数值计算任务。

  缺点:

  与其他库相比,原始的Theano有点低级。

  需要与其他库一起使用以获得较高的抽象级别。

  在AWS上有点小麻烦。

  4.Caffe

  “快速,开放的深度学习框架”

  语言:C ++。

  Caffe是一个强大的深度学习框架。与文中的其它框架一样,深度学习的速度非常快。

  借助Caffe,可以非常轻松地构建用于图像分类的卷积神经网络(CNN)。另外Caffe在GPU上也可以良好运行,这有助于在运行期间提高速度。

  Caffe main classes:


  优点:

  Python和MATLAB的绑定可用;

  性能表现优异;

  无需编写代码即可进行模型的训练。

  缺点:

  对于递归网络支持不好;

  对于新架构的支持不太友好;

  5.Keras

  对人类的深度学习

  语言:Python。

  Keras是一个用Python编写的开源的神经网络库。

  与TensorFlow,CNTK和Theano不同,Keras并不是一个端到端的机器学习框架。相反,它是作为一个接口,提供高层次的抽象,让神经网络的配置变得简单。目前Google TensorFlow已经支持Keras作为后端,不久之后,微软 CNTK也会支持。

  优点:

  用户友好;

  易于扩展;

  在CPU和GPU上无缝运行;

  与Theano和TensorFlow无缝合作。

  缺点:

  不能作为独立框架有效使用。

  6.Torch

  “一个开源的机器学习库”

  语言:C.

  Torch是一个用于科学和数值的开源机器学习库。它是基于Lua的库,通过提供大量的算法,更易于深入学习研究,提高了效率和速度。它有一个强大的n维数组,有助于切片和索引之类的操作。除此之外,还提供了线性代数程序和神经网络模型。

  优点:

  非常灵活。

  速度快,效率高。

  大量的预先训练的模型可用。

  缺点:

  文档不清晰;

  没有立即使用的即插即用代码。

  基于一种不那么流行的语言Lua。

  7. Accord.NET

  “机器学习,计算机视觉,统计和.NET通用科学计算”。

  语言:C#。

  这是为C#程序员准备的。

  Accord.NET框架是一个.NET机器学习框架,使得音频和图像处理变得简单。

  这个框架可以有效地处理数值优化、人工神经网络,甚至是可视化。除此之外,Accord.NET对计算机视觉和信号处理功能非常强大,同时也使得算法的实现变得简单。

  优点:

  它拥有一个庞大而活跃的开发团队;

  非常有据可查的框架;

  可视化质量高。

  缺点:

  不是一个非常流行的框架;

  速度比TensorFlow慢。

  8. Spark MLlib

  “可扩展的机器学习库”

  语言:Scala

  Apache Spark MLlib是一个可扩展的机器学习库,适用于Java、Scala、Python、R语言等多种语言。因为可以与Python库和R库中的numpy进行互操作,所以非常高效。

  MLlib可以轻松插入到Hadoop工作流程中,提供了机器学习算法,如分类,回归和聚类。

  这个强大的库在处理大型数据时非常快速。

  优点:

  对于大规模数据处理非常快速。

  支持多种语言。

  缺点:

  陡峭的学习曲线。

  即插即用仅适用于Hadoop。

  9. Sci-kit Learn

  “Python中的机器学习”

  语言:Python。

  Sci-kit Learn是一个非常强大的机器学习Python库,主要用于构建模型。

  它使用其他库(如numpy、SciPy和matplotlib)构建,对于统计建模技术(如分类、回归和集群)非常有效。Sci-kit Learn的特性包括监督学习算法、无监督学习算法和交叉验证

  优点:

  许多主要算法的可用性。

  高效的数据挖掘。

  缺点:

  不是最好的构建模型。

  GPU效率不高。

  10. MLPack

  “可扩展的C ++机器学习库”

  语言:C ++。

  MLPack是一个用C ++实现的可扩展的机器学习库。因为它是用C ++编写的,所以我们可以合理猜测它对内存管理是非常好的。

  MLPack以极快的速度运行,因为高质量的机器学习算法与库一起运行,而且它对于新手是非常友好的,并且提供了一个简单的API使用。

  优点:

  可扩展;

  Python和C ++绑定可用。

  缺点:

  文档不是很友好。

  写在最后

  本文推荐的库都是经得起时间检验的,像是Facebook、Google、Apple和Microsoft等一些大公司都在他们的深度学习和机器学习项目中应用这些库,所以你还有什么道理不抓紧时间来学习呢?

  如果你有经常使用并且感觉还不错的库,也欢迎在下方评论中与我们分享!

0
相关文章