深度学习实践教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 常用的深度学习框架

在深度学习的起步阶段,每个深度学习研究者都需要编写大量的重复代码。为了提高工作效率,这些研究者就将这些代码写成了框架放到网上,让所有研究者一起使用。接着,网上就出现了各种各样的框架。随着时间的推移,好用的几个框架被大量使用从而流行起来,这里介绍三个最著名的深度学习框架:PyTorch、TensorFlow、Caffe。

1.PyTorch

PyTorch(如图1.24所示)是Facebook公司发布的开源框架,是在机器学习和科学计算工具Torch的基础上针对Python语言开发的,一经推出就迅速风靡。PyTorch提供了Python接口,能够实现强大的GPU加速,同时还支持动态神经网络,这是很多主流深度学习框架(如TensorFlow)都不支持的。

图1.24 PyTorch图标

PyTorch既可以视为加入了GPU支持的NumPy(Numerical Python),也可以视为一个拥有自动求导功能的强大的深度学习框架。除Facebook外,它已经被Twitter、CMU和Salesforce等机构采用。PyTorch支持Windows、Linux、Mac操作系统。

本书选用PyTorch框架来讲解所有的实例,书中的所有实例都在PyTorch 0.4下实现。

2.TensorFlow

Google公司的TensorFlow(如图1.25所示)是一款使用C++语言开发的开源数学计算框架,该框架使用数据流图的形式进行计算,图中的节点代表数学运算。TensorFlow灵活的架构使其可以被部署在多种平台上,如台式计算机中的一个或多个CPU(或GPU)、服务器、移动设备等。TensorFlow最初是由研究者和Google Brain团队针对机器学习和深度神经网络而开发的,开源之后几乎可以在各个领域使用。

图1.25 TensorFlow图标

TensorFlow的维护与更新比较频繁,并且有Python和C++接口,教程也非常完善。但相较于PyTorch,TensorFlow的代码更复杂,易读性较差。而且TensorFlow是静态的,在神经网络建立后,若还想改变它,则需要重新开发。而PyTorch的自动求导功能使其能够实现动态改变。

3.Caffe

Caffe(如图1.26所示)的全称是Convolutional Architecture for Fast Feature Embedding,由加州大学伯克利分校的贾扬清博士开发,是一个清晰而高效的开源深度学习框架,目前由伯克利视觉中心(Berkeley Vision and Learning Center,BVLC)维护。Caffe也是用C++语言编写的,提供了C++接口,还提供了Matlab接口和Python接口。

图1.26 Caffe图标

Caffe的缺点是不够灵活,同时占用内存大,Caffe的升级版本Caffe2也已经开源了,其修复了一些问题,工程水平也得到了进一步提高。

最后,简单提及一下Theano和PaddlePaddle。Theano于2008年诞生于蒙特利尔理工学院,其派生出了大量的深度学习Python软件包,最著名的是Blocks和Keras。它是为深度学习中的大型神经网络算法专门设计的,是这类库的首创,被认为是深度学习研究和开发的行业标准。但目前因为Theano的开发人员大多去了Google参与TensorFlow的开发,其已经不再更新了。PaddlePaddle是百度研发的开源的深度学习平台,也是国内最早开源的深度学习平台。