1.1.5 深度学习常用的框架
在深度学习中,一般通过误差反向传播算法进行参数学习。而且,深度学习模型需要的计算机资源比较多,一般需要在CPU和GPU之间不断切换,开发难度也比较大。因此,一些支持自动梯度计算、无缝CPU和GPU切换等功能的深度学习框架就应运而生,比较有代表性的框架包括Theano、Caffe、TensorFlow、PyTorch、飞桨(PaddlePaddle)、Chainer和MXNet等。
(1)Theano:由蒙特利尔大学开发的Python工具包。Theano项目目前已停止维护,用来高效地定义、优化和计算张量数据的数学表达式。Theano可以透明地使用GPU和高效地进行符号微分。
(2)Caffe:由加利福尼亚大学伯克利分校开发的针对卷积神经网络的计算框架,主要用于计算机视觉。Caffe用C++和Python实现,但可以通过配置文件实现所要的网络结构,不需要编码。Caffe已经被并入PyTorch中。
(3)TensorFlow:由谷歌开发的深度学习框架,可以在任意具备CPU或GPU的设备上运行。TensorFlow的计算过程使用数据流图来表示。TensorFlow的名字来源于其计算过程中的操作对象为多维数组,即张量(Tensor)。TensorFlow 1.0版本采用静态计算图,2.0版本之后也支持动态计算图。
(4)PyTorch:由Facebook、NVIDIA、Twitter等公司开发维护的深度学习框架,其前身为Lua语言的Torch。PyTorch也是基于动态计算图的框架,在需要动态改变神经网络结构的任务中有着明显的优势。
(5)飞桨(PaddlePaddle):由百度开发的一个高效和可扩展的深度学习框架,同时支持动态图和静态图。飞桨提供强大的深度学习并行技术,可以同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练,支持千亿规模参数和数百个节点的高效并行训练。
(6)MindSpore:由华为开发的一种适用于端边云场景的新型深度学习训练/推理框架。MindSpore为Ascend AI处理器提供原生支持,以及软硬件协同优化。
(7)Chainer:一个最早采用动态计算图的深度学习框架,其核心开发团队为来自日本的一家机器学习创业公司Preferred Networks。与TensorFlow、Theano、Caffe等框架使用的静态计算图相比,动态计算图可以在运行时动态地构建计算图,因此非常适合进行一些复杂的决策或推理任务。
(8)MXNet:由亚马逊、华盛顿大学和卡内基梅隆大学等开发维护的深度学习框架。MXNet支持混合使用符号和命令式编程来最大化效率与生产率,并可以有效地扩展到多个GPU和多台机器上。
另外,还有一些建立在这些框架之上的高度模块化的神经网络库,使得构建一个神经网络模型就像搭积木一样容易。其中比较有名的模块化神经网络框架有:①基于TensorFlow和Theano的Keras(目前,Keras已经被集成到TensorFlow 2.0版本中);②基于Theano的Lasagne;③面向图结构数据的DGL。