深度学习开源框架对比

深度学习是一种基于对数据进行表证学习的机器学习方法,近些年不断发展并广受欢迎。

作为一个相对较新的概念,对于无论是想要进入该领域的初学者,还是已经熟知方法的老手来说,触手可及的学习资源太丰富了。

为了不被日新月异的技术和潮流所淘汰,积极参与深度学习社区中开源项目的学习和互动是个很好的方法。

      不得不说目前在机器学习、人工智能领域,最炙手可热的概念就是深度学习了。不论是鼎鼎大名的AlphaGo(以及它的升级版AlphaGoZero),还是各大巨头正在布局的无人驾驶亦或是时下政府、投资界都在追捧的医疗人工智能,都能看到深度学习的身影。在本书中我们初步介绍了scikit-lear 内置的MLP多层感知神经网络算法,但由于scikit-learn并不支持使用GPU加速,因此在处理海量数据集的时候,尤其是大量高像素的图像或者高清视频的时候,scikit-learn 会完全无用武之地。因此,我们建议对计算机视觉、图像识别、深度学习等方向感兴趣的读者朋友,可以深入了解一下几个著名的深度学习框架,包括但不限于Tensorflow、Caffe 和Keras。

      Tensorflow是一个开源的深度学习框架,是Google Brain的第二代深度学习系统。原本Tensorflow是用于Google内部研发使用的,但在2015年11月,Google将Tensorflow进行了开源,供广大的机器学习从业人员和爱好者使用。Tensorflow 可以部署在多个CPU或GPU组成的服务器集群当中,同时也可以使用API应用在移动设备中。鉴于其系出名门的血统,Tensorflow可以说是目前深度学习领域的明星框架了。

      Caffe是一个清晰而高效的深度学习框架,其作者是毕业于UC Berkeley的博士贾扬清。Caffe作为快速开发和工程应用是非常适合的。Caffe 官方提供了大量实例,代码易懂好理解,高效、实用。上手简单,使用方便,比较成熟和完善,实现基础算法方便快捷,虽然开发新算法不是特别灵活,但是非常适合工业快速应用实现。

      而Keras和Tensorflow与Caffe不同,根据官方的说法,Keras 其实是一个高层神经网络API。它需要使用TensorFlow,或是Theano (另一个很有名的深度学习框架,但可惜的是它的开发者即将停止Theano的进一步开发),又或是CNTK (微软的深度学习开源框架)作为它的后端( Backend)。这是因为Keras并不处理张量乘法、卷积等底层操作,而是使用其他的张量操作库,也就是Tensorflow、CNTK或是Theano。但Keras对用户更加友好,使得其上手要比Tensorflow快得多,而且提供了优秀的易扩展性和完善的中文文档。

16个优秀的深度学习框架

GitHub收藏和贡献率最高的16个开源深度学习框架,圆圈的颜色越偏绿色表示框架越新,颜色越偏蓝色表明框架的时间越早。

从上图可知,TensorFlow高居榜首,第二名和第三名的是分别是Keras和Caffe。下面就将这些资源分享给大家。

TensorFlow

TensorFlow最初由谷歌的Machine Intelligence research organization 中Google Brain Team的研究人员和工程师开发的。这个框架旨在方便研究人员对机器学习的研究,并简化从研究模型到实际生产的迁移的过程。

链接:https://github.com/tensorflow/tensorflow

Keras

Keras是用Python编写的高级神经网络的API,能够和TensorFlow,CNTK或Theano配合使用。

链接:https://github.com/keras-team/keras

Caffe

Caffe是一个重在表达性、速度和模块化的深度学习框架,它由Berkeley Vision and Learning Center(伯克利视觉和学习中心)和社区贡献者共同开发。

链接:https://github.com/BVLC/caffe

Microsoft Cognitive Toolkit

Microsoft Cognitive Toolkit(以前叫做CNTK)是一个统一的深度学习工具集,它将神经网络描述为一系列通过有向图表示的计算步骤。

链接:https://github.com/Microsoft/CNTK

PyTorch

PyTorch是与Python相融合的具有强大的GPU支持的张量计算和动态神经网络的框架。

链接:https://github.com/pytorch/pytorch

Apache MXnet

Apache MXnet是为了提高效率和灵活性而设计的深度学习框架。它允许使用者将符号编程和命令式编程混合使用,从而最大限度地提高效率和生产力。

链接:https://github.com/apache/incubator-mxnet

DeepLearning4J

DeepLearning4J和ND4J,DataVec,Arbiter以及RL4J一样,都是Skymind Intelligence Layer的一部分。它是用Java和Scala编写的开源的分布式神经网络库,并获得了Apache 2.0的认证。

链接:https://github.com/deeplearning4j/deeplearning4j

Theano

Theano可以高效地处理用户定义、优化以及计算有关多维数组的数学表达式。 但是在2017年9月,Theano宣布在1.0版发布后不会再有进一步的重大进展。不过不要失望,Theano仍然是一个非常强大的库足以支撑你进行深度学习方面的研究。

链接:https://github.com/Theano/Theano

TFLearn

TFLearn是一种模块化且透明的深度学习库,它建立在TensorFlow之上,旨在为TensorFlow提供更高级别的API,以方便和加快实验研究,并保持完全的透明性和兼容性。

链接:https://github.com/tflearn/tflearn

Torch

Torch是Torch7中的主要软件包,其中定义了用于多维张量的数据结构和数学运算。此外,它还提供许多用于访问文件,序列化任意类型的对象等的实用软件。

链接:https://github.com/torch/torch7

Caffe2

Caffe2是一个轻量级的深度学习框架,具有模块化和可扩展性等特点。它在原来的Caffe的基础上进行改进,提高了它的表达性,速度和模块化。

链接:https://github.com/caffe2/caffe2

PaddlePaddle

PaddlePaddle(平行分布式深度学习)是一个易于使用的高效、灵活、可扩展的深度学习平台。它最初是由百度科学家和工程师们开发的,旨在将深度学习应用于百度的众多产品中。

链接:https://github.com/PaddlePaddle/Paddle

DLib

DLib是包含机器学习算法和工具的现代化C ++工具包,用来基于C ++开发复杂的软件从而解决实际问题。

链接:https://github.com/davisking/dlib

Chainer

Chainer是基于python用于深度学习模型中的独立的开源框架,它提供灵活、直观、高性能的手段来实现全面的深度学习模型,包括最新出现的递归神经网络(recurrent neural networks)和变分自动编码器(variational auto-encoders)。

链接:https://github.com/chainer/chainer

Neon

Neon是Nervana开发的基于Python的深度学习库。它易于使用,同时性能也处于最高水准。

链接:https://github.com/NervanaSystems/neon

Lasagne

Lasagne是一个轻量级的库,可用于在Theano上建立和训练神经网络。

链接:https://github.com/Lasagne/Lasagne

其他选择

  • H2O.ai https://github.com/h2oai/h2o-3
  • PyLearn https://github.com/lisa-lab/pylearn2
  • BigDL https://github.com/intel-analytics/BigDL
  • Shogun https://github.com/shogun-toolbox/shogun
  • Apache SINGA https://github.com/apache/incubator-singa
  • Blocks https://github.com/mila-udem/blocks
  • Mocha https://github.com/pluskid/Mocha.jl

《深度学习开源框架对比》有一个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注