随着深度学习的兴起,诞生了许多优秀的深度学习框架,借助深度学习框架完成理论研究、实验和深度学习开发已成为深度学习研究的重要手段。深度学习框架加快了研究的速度,并且使得一般的深度学习研究者也可以轻松设计自己的深度神经网络。由于深度学习框架灵活、多样、高性能、分布式等特点,当前的许多深度学习技术都是基于深度学习框架进行开发的。这篇博客主要介绍TensorFlow、Torch、Theano、Caffe四种深度学习开源框架的特点。
深度学习综述(三)深度学习工具介绍
本篇博客将从开源架构的设计、灵活程度、运行环境、代码性能、分布式运算能力等方面介绍TensorFlow、Torch、Theano和Caffe四种深度学习开源架构。
TensorFlow
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流的计算,TensorFlow为张量从图像的一端流动到另一端的计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网络进行分析和处理的系统。
TensorFlow已被用于语音识别和图像识别等多项机器深度学习领域,TensorFlow支持CNN、RNN和LSTM算法,这都是目前在图像、语言和自然语言处理上最流行的深度神经网络模型。TensorFlow使用灵活,不仅支持深度学习,还支持一般机器学习的搭建。
TensorFlow支持异构设别分布式计算,可以同时在多gpu上进行训练,能够在不同平台上自动运行模型。由于TensorFlow使用C++开发,因此具备较高性能。
TensorFlow的组件非常优秀,提供强大的可视化功能,可以生成非常强大的现实网络拓扑结构和性能的可视化图形。
Google在2015年11月宣布完全开源TensorFlow。总体来说TensorFlow与其它开源架构相比,具有全平台、支持分布式运算、使用灵活、拥有强大的可视化组件、使用群体庞大的优点,加上Google的维护使得其正逐渐成为最受欢迎的深度学习开源架构。但是TensorFlow的变异速度较慢,且容易出错,在内存开销上也要大很多。
Caffe
Caffe诞生于加州伯克利分校,现已交由BVLC托管。与TensorFlow一样,Caffe也是由C++开发。Caffe的特点是高性能、CPU和GPU模式无缝切换,可以运行于Linux、Windows、Mac平台。BVLC版本的Caffe是不支持集群的,但是其它开发者在Caffe的基础上实现了集群功能,使得一个Caffe训练任务可以同时在多台电脑上运行。
Caffe的全称是Convolutional Architecture for Fast Feature Embedding,顾名思义,Caffe针对卷积架构的网络提供良好的支持,而对于循环神经网络、递归神经网络没有提供支持,在使用灵活性上不如TensorFlow。
由于卷积神经网络的强大功能,Caffe可以被用于图像分类、目标识别、图像分割等领域,同样也可用于处理非图像数据的分类、回归问题。Caffe使用简单,一般修改配置文件就可以构建网络,还提供了Python和Matlab接口,直接使用上层接口使得网络构架操作变得直接和简单。Caffe提供许多Demo使得学习Caffe变得非常轻松。
Caffe于2013年12月开源,并得到NVIDA的长期支持。总体说来,Caffe为深度卷积网络提供了高性能、使用方便的解决方案,同时Caffe支持CPU模式和GPU模式的无缝切换,在学生群体中非常受欢迎。
Torch
Torch诞生于2000年,但真正开始受到关注还是开始于FaceBook在2015年1月开放了大量Torch的深度学习模块和拓展。
在Torch的发展史中经历了四个大版本,由最开始使用C/C++语言转变为现在使用Lua语言,目前开源的为Torch7,
得益于Lua的特性,Torch的优点在于快速,灵活,支持CPU模式和GPU模式,在多CPU模式下提速效果最为明显。同样是由于Lua语言书写,缺点在于没有Python接口,无法整合Python上的资源。如同Caffe一样,Torch对新型网络连接和架构的支持不如Theano和TensorFlow,深度神经网络中层的种类受到限制。
由于长时间的发展,Torch提供了很多拓展组件,功能丰富,同时Torch在语言、图像、视频等领域应用广泛,得益于Torch优异的性能,现在有许多商业公司将Torch作为人工智能研究的核心。
Theano
2008年诞生于蒙特利里理工学院,Theano派生了大量深度学习Python软件包,最著名的包括Blocks和Keras。
Theano使用灵活、功能强大,可以自己设计神经单元和神经连接,支持MLP、CNN、RNN-LSTM等多种深度神经网络。Theano是基于C++和Python的,其可以在全平台运行,支持CPU模式和GPU模式,同时支持动态生成C代码,其C++/CUDA代码具有很高的性能。
Theano的缺点在于C++代码的编译过程缓慢,Python中Theano包的导入也很缓慢。由于Theano的程序已经被打包,所以很难对Theano本身做出改进。