深度学习框架

深度学习框架【深度学习框架】在开始深度学习项目之前,选择一个合适的框架是非常重要的,因为选择一个合适的框架能起到事半功倍的作用 。研究者们使用各种不同的框架来达到他们的研究目的,侧面印证出深度学习领域百花齐放 。全世界最为流行的深度学习框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch 。
基本介绍中文名:深度学习框架
外文名:Deep learning framework
基本释义:用于深度学习的框架
特点:开源
本质:库
作用:降低了深度学习研究的入门门槛
概述在深度学习初始阶段,每个深度学习研究者都需要写大量的重複代码 。为了提高工作效率,这些研究者就将这些代码写成了一个框架放到网上让所有研究者一起使用 。接着,网上就出现了不同的框架 。随着时间的推移,最为好用的几个框架被大量的人使用从而流行了起来 。全世界最为流行的深度学习框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch 。PaddlePaddlePaddlePaddle是百度研发的开源开放的深度学习平台,是国内最早开源、也是当前唯一一个功能完备的深度学习平台 。依託百度业务场景的长期锤鍊,PaddlePaddle有最全面的官方支持的工业级套用模型,涵盖自然语言处理、计算机视觉、推荐引擎等多个领域,并开放多个领先的预训练中文模型,以及多个在国际範围内取得竞赛冠军的算法模型 。PaddlePaddle同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练,支持千亿规模参数、数百个几点的高效并行训练,也是最早提供如此强大的深度学习并行技术的深度学习框架 。PaddlePaddle拥有强大的多端部署能力,支持伺服器端、移动端等多种异构硬体设备的高速推理,预测性能有显着优势 。目前PaddlePaddle已经实现了API的稳定和向后兼容,具有完善的中英双语使用文档,形成了易学易用、简洁高效的技术特色 。PaddlePaddle 3.0版本升级为全面的深度学习开发套件,除了核心框架,还开放了VisualDL、PARL、AutoDL、EasyDL、AI Studio等一整套的深度学习工具组件和服务平台,更好地满足不同层次的深度学习开发者的开发需求,具备了强大支持工业级套用的能力,已经被中国企业广泛使用,也拥有了活跃的开发者社区生态 。TensorflowGoogle 开源的Tensorflow是一款使用C++语言开发的开源数学计算软体,使用数据流图(Data Flow Graph)的形式进行计算 。图中的节点代表数学运算,而图中的线条表示多维数据数组(tensor)之间的互动 。Tensorflow灵活的架构可以部署在一个或多个CPU、GPU的台式及伺服器中,或者使用单一的API套用在移动设备中 。Tensorflow最初是由研究人员和Google Brain 团队针对机器学习和深度神经网路进行研究而开发,开源之后几乎可以在各个领域适用 。Tensorflow是全世界使用人数最多、社区最为庞大的一个框架,因为Google公司出品,所以维护与更新比较频繁,并且有着Python和C++的接口,教程也非常完善,同时很多论文复现的第一个版本都是基于Tensorflow写的,所以是深度学习界框架默认的老大 。Caffe和Tensorflow名气一样大的是深度学习框架Caffe,由加州大学伯克利的Phd贾扬清开发,全称是Convolutional Architecture for Fast Feature Embedding,是一个清晰而高效的开源深度学习框架,由伯克利视觉中心(Berkeley Vision and Learning Center,BVLC)进行维护 。从它的名字就可以看出其对于卷积网路的支持特别好,同时也是用C++写的,提供的C++接口,也提供了matlab接口和python接口 。Caffe之所以流行,是因为之前很多ImageNet比赛里面使用的网路都是用Caffe写的,所以如果你想使用这些比赛的网路模型就只能使用Caffe,这也就导致了很多人直接转到Caffe这个框架下面 。Caffe的缺点是不够灵活,同时记忆体占用高,Caffe的升级版本Caffe2已经开源了,修复了一些问题,同时工程水平得到了进一步提高 。TheanoTheano于2008年诞生于蒙特娄理工学院,其派生出了大量的深度学习Python软体包,最着名的包括Blocks和Keras 。Theano的核心是一个数学表达式的编译器,它知道如何获取你的结构,并使之成为一个使用numpy、高效本地库的高效代码,如BLAS和本地代码(C++)在CPU或GPU上儘可能快地运行 。它是为深度学习中处理大型神经网路算法所需的计算而专门设计,是这类库的首创之一(发展始于2007年),被认为是深度学习研究和开发的行业标準 。但是开发Theano的研究人员大多去了Google参与Tensorflow的开发,所以,某种程度来讲Tensorflow就像Theano的孩子 。MXNetMXNet的主要作者是李沐,最早就是几个人抱着纯粹对技术和开发的热情做起来的,如今成了亚马逊的官方框架,有着非常好的分散式支持,而且性能特别好,占用显存低,同时其开发的语言接口不仅仅有Python和C++,还有R,Matlab,Scala,JavaScript,等等,可以说能够满足使用任何语言的人 。但是MXNet的缺点也很明显,教程不够完善,使用的人不多导致社区不大,同时每年很少有比赛和论文是基于MXNet实现的,这就使得MXNet的推广力度和知名度不高 。TorchTorch是一个有大量机器学习算法支持的科学计算框架,其诞生已有十年之久,但是真正起势得益于Facebook开源了大量Torch的深度学习模组和扩展 。Torch的特点在于特别灵活,但是另一个特殊之处是採用了程式语言Lua,在深度学习大部分以Python为程式语言的大环境之下,一个以Lua为程式语言的框架有着更多的劣势,这一项小众的语言增加了学习使用Torch这个框架的成本 。PyTorchPyTorch的前身便是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接口 。它是由Torch7团队开发,是一个以Python优先的深度学习框架,不仅能够实现强大的GPU加速,同时还支持动态神经网路,这是很多主流深度学习框架比如Tensorflow等都不支持的 。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网路 。除了Facebook外,它已经被Twitter、CMU和Salesforce等机构採用 。套用优势深度学习框架的出现降低了入门的门槛,你不需要从複杂的神经网路开始编代码,你可以根据需要选择已有的模型,通过训练得到模型参数,你也可以在已有模型的基础上增加自己的layer,或者是在顶端选择自己需要的分类器和最佳化算法(比如常用的梯度下降法) 。当然也正因如此,没有什幺框架是完美的,就像一套积木里可能没有你需要的那一种积木,所以不同的框架适用的领域不完全一致 。总的来说深度学习框架提供了一些列的深度学习的组件(对于通用的算法,里面会有实现),当需要使用新的算法的时候就需要用户自己去定义,然后调用深度学习框架的函式接口使用用户自定义的新算法 。