1.2.1 常用的深度学习框架

对于希望参与深度学习开发的技术人员而言,选择一个合适的框架是非常重要的。正所谓“工欲善其事,必先利其器”,一个合适的深度学习框架可以起到事半功倍的效果。本小节介绍目前流行的深度学习框架及其特性,供读者在开始学习前参考。

1.TensorFlow

TensorFlow是谷歌大脑团队开发的深度学习框架,支持Python语言和R语言,适用于稳定的机器学习产品,以及在功能复杂的研究中使用。

TensorFlow提供了数据可视化工具TensorBoard。它能够简化显示数据的过程,也可以使用Python语言和R语言的可视化包来自己开发数据可视化功能。

TensorFlow的初始版本于2015年11月9日面世,稳定版本2.4.1于2021年1月21日推出,采用Python、C++和CUDA语言开发,支持Linux、macOS、Windows和Android平台。

2.Keras

谷歌的软件工程师弗朗索瓦·肖莱开发了Keras。Keras拥有超过35万用户和700多个开源贡献者,是成长最快的深度学习框架之一。

Keras支持Python开发的高阶神经网络API(应用程序接口),这也是它深受欢迎的原因之一。很多研究机构、实验室和公司选择使用 Keras。2017 年 7 月,Keras 得到了CNTK 2.0的后台支持,2018年TensorFlow 2.0发布后,Keras被正式确定为TensorFlow的高阶API开发包,即tf.keras包。

Keras的初始版本于2015年3月27日面世,稳定版本2.4.0于2020年6月17日推出。

3.PyTorch

PyTorch由Facebook的人工智能研究院(FAIR)开发,支持动态图并提供了Python接口,是Python优先的深度学习框架。PyTorch被大公司广泛应用。

PyTorch的初始版本于2016年9月面世,稳定版本1.7.1于2020年12月10日推出。

4.Theano

Theano由蒙特利尔大学使用Python开发,是一个擅长处理多维数组的Python库。Theano 是 Python 深度学习中的一个关键基础库,可以直接用来创建深度学习模型或包装库,简化了开发者的编码复杂度。

Theano的初始版本于2007年面世,被称为最早的深度学习开源框架,稳定版本1.0.5于2020年7月27日推出。Theano支持Linux、macOS和Windows平台。

5.Caffe

Caffe(嵌入快速特征的卷积体系结构)由加利福尼亚大学伯克利分校开发,开发语言是C++,并提供Python接口。Caffe用于图像的检测和分类。

Caffe支持基于GPU和CPU的加速计算核心库,例如NVIDIA、cuDNN和IntelMLK等。使用一个NVIDIA K40 GPU,Caffe可以在一天内处理超过6000万张图像。

6.MXNet

Apache MXNet是用于训练和部署深度神经网络的开源框架,由亚马逊(Amazon)公司官方维护。MXNet支持快速的模型训练和灵活的编程模型(支持C++、Python、Java、Julia、MATLAB/JavaScript、Go、R-Scala、Perl 和 Wolfram 等开发语言)。MXNet 库可以很方便地部署于多种GPU平台和各种设备(包括手机)。

7.CNTK

CNTK 是微软公司开发的深度学习开源框架,可以通过有向图的一系列计算步骤构建神经网络。CNTK支持Python和C++接口,通常用于手写文字的识别、语音识别和人脸识别。

8.PaddlePaddle

PaddlePaddle(飞桨)是百度公司推出的深度学习框架,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体。PaddlePaddle 采用 C++和Python语言开发,支持Linux、macOS和Windows平台。

PaddlePaddle的初始版本于2018年7月面世,稳定版本2.1于2021年5月发布。

9.MindSpore

MindSpore是华为推出的开源深度学习框架,是华为全栈全场景AI解决方案的重要组成部分。MindSpore具有以下特性。

① 开发态友好:支持自动微分、网络+算子统一编程、函数式/算法原生表达、反向网络算子自动生成等特性,AI科学家和工程师更易使用。

② 运行态高效:可以充分发挥昇腾芯片的大算力特性;提升并行线性度;支持深度图优化,自适应AI Core算力和精度。

③ 部署态灵活:支持端−边−云统一架构,实现一次开发,按需部署;按需协同计算,更好地保护隐私。

MindSpore的总体架构介绍详见本书第2章。MindSpore的初始版本于2019年8月面世。2020年3月28日,华为宣布MindSpore正式开源。