【常见的深度学习框架】
【深度学习基础篇-常见的深度学习框架】文前白话常见的深度学习框架1、Caffe2、TensorFlow3、 PyTorch其他框架三级目录文前白话深度学习是一个发展极为迅速的技术领域,除众多高校和科研院所围绕算法理论进行探索外,Google、Facebook、Microsoft、百度等很多IT公司也纷纷投身其中,先后推出了一系列深度学习的基础平台架构,如Cafe、TensorFlow、PyTorc
【深度学习基础篇-常见的深度学习框架】
文前白话
深度学习是一个发展极为迅速的技术领域,除众多高校和科研院所围绕算法理论进行探索外,Google、Facebook、Microsoft、百度等很多IT公司也纷纷投身其中,先后推出了一系列深度学习的基础平台架构,如Cafe、TensorFlow、PyTorch、MXNet等。这些深度学习框架已经成功地被应用于计算机视觉、语音识别、自然语言处理等领域。这里介绍影响力比较大的几个框架。
常见的深度学习框架
1、Caffe
Caffe(Convolutional Architecture for Fast Feature Embedding)是一个兼具表达性、速度和思维模块化的深度学习框架,最初是由美国加州大学伯克利分校视觉和学习中心(Berkeley Vision and Learning Center,BVLC)开发的。Caffe在BSD协议许可下开源,项目托管于GitHub。2017年4月,Facebook发布Caffe2,其中加入了递归神经网络等新功能。2018年3月底,Caffe2并入PyTorch。Caffe不仅完全开源,而且拥有多个活跃的社区用于沟通并解答问题。
此外,Caffe还具有以下特点:
- 表示和实现分离:Caffe 使用Google的Protocol Bufer定义模型文件,采用特殊的文本文件prototxt表示网络结构,以有向无环图形式的网络构建
- 文档比较丰富:Caffe带有一系列参考模型和快速上手例程,还提供了一整套工具集,可用于模型训练、预测、微调、发布、数据预处理及自动测试等。
- 接口类型多样:Caffe的内核是用C+编写的,还提供了PVhon 和MATLAB接口,供使用者选择熟悉的语言调用、部署算法应用。
- 训练速度较快:利用OpenBLAS、cuBLAS等计算库,而且支持基于GPU的加选计算内核库,如NVIDIA cuDNN和Intel MKL,能够利用GPU实现计算加速。
早期的 Caffe 版本存在不支持多机、不可跨平台、可扩展性差等不足,尤其是 Caffe 的安装过程需要大量的依赖包,使初学者不易上手;虽然Cafe2在工程上做了很多优化,但仍然存在部分问题。
2、TensorFlow
TensorFlow是一个异构分布式系统上的大规模机器学习框架,最初是由Google Brain团队开发的,旨在方便研发人员对机器学习和深度神经网络的研究。2015年底,TensorFlow正式在GitHub上开源,目前已经被广泛应用于学术研究和工业应用。TensorFlow既可部署在由多个CPU或GPU组成的服务器集群中,也可使用AP1应用在移动设备中。
总体来看,TensorFlow具有以下特点:
- 技术支持强大:依托Google在深度学习领域的巨大影响力和强大的推广能力,成为当今最炙手可热的深度学习框架,官网上可以查看最佳官方用途、研究模型、示例和教程。
- 编程接口丰富:以使用广泛的Python 语言为主,并能应用C++、Java、JavaScript、Swift等多种常用的编程语言。
- 移植性好:不仅可以在Google Cloud和AWS中运行,而且支持Windows 7、Windows10等多种操作系统,还可以在ARM架构上编译和优化;用户可以在各种服务器和移动设备上部署自己的训练模型,无须执行单独的模型解码器或加载Python 解释器。
- 功能齐全:如基于计算图实现自动微分,使用数据流图进行数值计算,具备GPU加速支持等,性能相对较优异。
作为当前最流行的深度学习框架之一,TensorFlow尽管取得了极大的成功,但是存在版本之间兼容性不足、底层运行机制过于复杂等问题,增加了普通用户在开发和调试过程中的难度。
3、 PyTorch
PyTorch是一个快速和灵活的深度学习框架,建立在旧版的Torch和Caffe2框架之上,利用改版后的Torch C/CUDA作为后端。PyTorch通过集成加速库,如Intel MKL和NVIDIA cuDNN等,最大限度地提升处理速度。其核心CPU、GPUTensor 和神经网络后端Torch、Torch CUDA、THNN(Torch 神经网络)和THCUNN(Torch CUDA神经网络)等,都是使用C99API编写的单独库,并且融入了Caffe2的生产功能。同时,PyTorch与Python深度集成,还允许使用其他Python库。
相比于TensorFlow,PyTorch具有以下特点:
- PyTorch 可替代NumPy,可以获得GPU加速带来的便利,以便快速进行数据预处理。
- PyTorch提供的变量可以自动更新,构建自己的计算图,充分控制自己的梯度。
- PyTorch 是动态图,可以随意调用函数,使代码更简捷。
- PyTorch提供了很多方便的工具。]
2020年1月15日,Facebook正式发布了PyTorch1.4,这是自2019年10月发布PyTorch1.3后,时隔3个月迎来的一次版本升级。新版本增加了很多功能,包括支持分布式模型并行训练,为PyTorch Mobile提供Build级别的支持,对Java Binding的支持,以及剪枝方法等。此外,还对音频、视觉和文本域库进行了升级。
其他框架
除了上述几个深度学习框架,还有不少框架都有一定的影响力和用户。例如:
-
Theano是第一个有较大影的力的Python深度学习框架,最初诞生于加拿大蒙特利尔大学实叠室。Theano以计算图为框架,采用GPU加速计算,为之后深度学习框架的开发提供了重要借鉴,但由于在工程设计上存在一定的缺陷,2017年已停止开发。
-
MXNet是一个面向效率和灵活性设计的深度学习框架,吸收了不同框架(如Troch7、Theano 等)的优点,提供了多种开发的语言接口,如Python、C++、JavaScript等,并且可在CPU、GPU、服务器、台式机或者移动设备上运行。2016年11月,MXNet被Aws正式选择为其云计算的官方深度学习平台。2017年1月,MXNet项目进入Apache基金会,成为Apache的孵化器项目。尽管MXNet拥有众多的接口,尤其在分布式支持、内存与显存优化等方面获得了不少人的支持和赞誉,但由于推广力度不够、接口文档更新不及时等原因,导致目前使用的人不多,社区不大。
-
CNTK是Microsoft推出的一个开源深度学习工具包,它通过一系列计算步骤构成有向图来表达网络,并且支持CPU和GPU模式。CNTK的所有API均基于C++设计,并提供了很多先进算法的实现,还提供了基于C++、C#和Python的接口,因此在速度、灵活性和可扩展性等方面表现较佳,但因其早期的文档有些晦涩难懂,推广力度不够,导致社区不够活跃。
-
Keras是一个高层次的深度神经网络框架接口,由Python 编写而成并基于TensorFlow、Theano及CNTK后端,相当于TensorFlow、Theano、CNTK的上层接口,具有操作简单、上手容易、文档资料丰富、环境配置容易等优点,但因其过度封装导致缺乏灵活性、使用受限。**
-
PadllePaddle是百度研发的开源开放的深度学习平台**,是国内最早开源的深度学习平台,拥有官方支持的工业级应用模型,涵盖自然语言处理、计算机视觉、推荐引擎等领域。 PadalePaddle3.0版本升级为全面的深度学习开发套件,除了核心框架,还开放了VisualDL、PARL、AutoDL、EayDL、AIStudio等深度学习工具组件和服务平台,已经被国内企业广泛使用,也拥有一定的开发者社区生态。但是总体来看,PadlePacdale 在国内外的流行度和关注度还远远不够。
Reference
深度卷积神经网络原理与实践
更多推荐
所有评论(0)