常见的深度学习框架有 TensorFlow 、Caffe、Theano、Keras、PyTorch、MXNet等。
Theano最初诞生于蒙特利尔大学 LISA 实验室,于2008年开始开发,是第一个有较大影响力的Python深度学习框架。Theano 是一个 Python 库,可用于定义、优化和计算数学表达式。Theano诞生于研究机构,服务于研究人员,其设计具有较浓厚的学术气息,但在工程设计上有较大的缺陷。一直以来,Theano因难调试、构建图慢等缺点为人所诟病。由于Theano已经停止开发,不建议作为研究工具继续学习。
15年Google宣布推出全新的机器学习开源工具TensorFlow,TensorFlow主要用于进行机器学习和深度神经网络研究, 但它是一个非常基础的系统,因此也可以应用于众多领域。不完美但最流行的深度学习框架,社区强大,适合生产环境。
Keras是一个高层神经网络API,由纯Python编写而成并使用TensorFlow、Theano及CNTK作为后端。Keras为支持快速实验而生,能够把想法迅速转换为结果。Keras应该是深度学习框架之中最容易上手的一个,它提供了一致而简洁的API, 能够极大地减少一般应用下用户的工作量,避免用户重复造轮子。入门最简单,但是不够灵活,使用受限。
Caffe的全称是Convolutional Architecture for Fast Feature Embedding,它是一个清晰、高效的深度学习框架,核心语言是C++,它支持命令行、Python和MATLAB接口,既可以在CPU上运行,也可以在GPU上运行。Caffe的优点是简洁快速,缺点是缺少灵活性。文档不够完善,但性能优异,几乎全平台支持(Caffe2),适合生产环境。
MXNet是一个深度学习库,支持C++、Python、R、Scala、Julia、MATLAB及JavaScript等语言;支持命令和符号编程;可以运行在CPU、GPU、集群、服务器、台式机或者移动设备上。文档略混乱,但分布式性能强大,语言支持最多,适合AWS云平台使用。
微软开发的CNTK的性能比Caffe、Theano、TensoFlow等主流工具都要强。CNTK支持CPU和GPU模式,和TensorFlow/Theano一样,它把神经网络描述成一个计算图的结构,叶子节点代表输入或者网络参数,其他节点代表计算步骤。CNTK 最初是出于在 Microsoft 内部使用的目的而开发的,一开始甚至没有Python接口,而是使用了一种几乎没什么人用的语言开发的,导致现在用户比较少。社区不够活跃,但是性能突出,擅长语音方面的相关研究。
17年Facebook人工智能研究院(FAIR)团队在GitHub上开源了PyTorch**,并迅速占领GitHub热度榜榜首,PyTorch的设计追求最少的封装,尽量避免重复造轮子。PyTorch的灵活性不以速度为代价,PyTorch是所有的框架中面向对象设计的最优雅的一个。PyTorch的面向对象的接口设计来源于Torch,而Torch的接口设计以灵活易用而著称,PyTorch提供了完整的文档,循序渐进的指南,作者亲自维护的论坛 供用户交流和求教问题。Facebook 人工智能研究院对PyTorch提供了强力支持,作为当今排名前三的深度学习研究机构,FAIR的支持足以确保PyTorch获得持续的开发更新