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