下面我们来对深度学习中的各个框架的特点进行介绍
1.TensorFlow框架
tensorflow是用c++语言开发的,同时支持C,java,python等多种语言多的调用,目前主流的方式通常会使用python语言进行驱动应用。利用c++语言可以保证其运行效率,python语言作为其上层应用语言,可以为研究人员节省大量的时间。
Tensorflow与CNTK,MXNET,theano同属于符号计算架构,允许用户在不需要使用低级语言实现的情况下,开发出新的复杂层类型。基于图运算是其最主要的特点,通过图上的节点变量可以控制训练中各个环节的变量,尤其在需要进行底层操作时,Tensorflow要比其他的框架更容易些。虽然Tensorflow在大型计算机集群中的并行处理,运算性能略低于CNTK,但是在个人机器使用场景下,可以根据机器的配置自动选择CPU或者GPU来进行计算。
2.Theano
Theano是一个十余年的python深度学习和机器学习框架,用来定义,优化和模拟数学表达式计算,用于高效的解决多为数组的计算问题,有较好的扩展性。
3.Torch
Torch同样具有很好的扩展性,但是有些接口不够全面,比如WGAN-OP这样的网络需要手动计算来修改梯度没有对应的接口。其最大的缺点是,需要LuauJIT的支持,用于Lu语言,在python流行的今天,通用性能方面比较差。
4.Keras
keras可以理解为一个Theano框架和tensorflow前端的一和个组合。其构建模型的api调用方式渐渐成为了主流,包括Tensorflow,CNTK,MXNet等知名框架,都提供对keras调用语法的支持。使用keras编写的代码,会有更好的可移植性。
5.DeepLearning4j
DeepLearning4j是基于java语言和Scala语言开发的,应用在Hadoop和spark系统之上的深度学习软件。
6.Caffe
最初caffe是一个强大的图像分类框架,是最容易测试和评估性能的标准深度学习框架,并且提供了很多训练好的模型,尤其是该模型的复用价值在其他的框架中都会出现,大大提升了现有模型的训练时间。但是Caffe更新缓慢。
7.MXNet
MXNet是一个可移植的,可伸缩的深度学习库,具有Torch,Theano和caffe的部分特性。在不同程度上面支持Python,R,Scala,Julia和C++语言,也是目前比热门的主流框架之一。
8.CNTK
CNTK是一个微软开发的深度学习软件包,以速度块儿著称,运用独特的神经网络配置语言Brain Script,大大的降低了学习成本。有微软作为后盾,CNTK成为最具有潜力的深度学习框架之一。目前的成熟度和Tensorflow相比有较大的差距,但是其与Visual Studio的耦合,以及特定的MS编程风格,使得熟悉VS的小伙伴极容易上手。