文前白话

深度学习是一个发展极为迅速的技术领域,除众多高校和科研院所围绕算法理论进行探索外,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

深度卷积神经网络原理与实践

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐