深度学习框架

Caffe

Theano

TensorFlow

Torch

Pytorch

MXNet

cuda-convnet2

Neon

Deeplearning4j

CNTK

PaddlePaddle

Keras

TensorFlow Google开源的深度学习框架,一开始主要面向的是分布式系统。从官方介绍上来看,具有非常好的延展性,在多GPU/多机上拥有最好的灵活性。另外Google的强有力支持也算是一大优点。初期版本在单机和一些小任务上性能差强人意,在一些基准测试上甚至常常被其他框架甩下一个量级。不过随着TensorFlow的持续改进,以及Google光环的照耀,现在TensorFlow正在变得越来越流行。截至2016年5月,在github上关于TensorFlow的相关讨论的数量已经超过Caffe跃居第一位。TensorFlow在很大程度上可以看作Theano的后继者,这不仅因为它们有很大一批共同的开发者,还因为它们拥有相近的设计理念,都基于计算图实现自动微分系统。TensorFlow 使用数据流图进行数值计算,图中的节点代表数学运算,图中的边代表在这些节点之间传递的多维数组。

TensorFlow编程接口支持Python和C++,TensorFlow 1.0版本开始支持Java、Go、R和Haskell API的Alpha版本。此外,TensorFlow还可以在Google Cloud和AWS中运行。TensorFlow支持Windows 7、Windows 10和Windows Server 2016系统。

因为TensorFlow使用C++ Eigen库,所以可以在ARM架构上编译和优化。这也就意味着用户可以在各种服务器和移动设备上部署自己的训练模型,无须执行单独的模型解码器或者加载Python解释器。

PyTorch的前身便是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接口。它是由Torch7团队开发,是一个以Python优先的深度学习框架,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这是很多主流深度学习框架比如Tensorflow等都不支持的。

PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。除了Facebook外,它已经被Twitter、CMU和Salesforce等机构采用。相对于TensorFlow,PyTorch的一大优点是它的图是动态的,而TensorFlow框架是静态图,不利于扩展。同时,PyTorch非常简洁,方便使用。

MXNet由分布式机器学习社区(Distributed/Deep Machine Learning Community, DMLC)开发,是第一个由中国人主导开发的流行框架。MXNet的特点是轻量级、高性能,以及对从分布式到嵌入式等多种场景的优异支持。MXNet前身是DMLC的CXXNet和Minerva,这两个项目一个通过配置和定义来训练网络,而另一个则提供了类似numpy一样的多维数组的用法。MXNet无缝地衔接了这两种用法,获得了非常好的灵活性,这是另一个特点。MXNet支持语言非常多,尤其是对R的支持,赢得了一批统计领域的用户,并且扩展性也不错,可以说是一个非常有潜力的框架。此外,MXNet还有一个很大的特点是文档非常“烂”。2016年末,Amazon宣布MXNet为其官方深度学习平台,并会提供进一步支持,这个问题似乎有望被解决。

你可能感兴趣的:(人工智能,人工智能)