Page 89 - 软件工程与项目管理
P. 89
第三章 计算机视觉与大数据
成功的重要因素,但近年来其也面临着其他深度学习框架的巨大挑战。
PyTorch 是 Facebook 人工智能研究院(FAIR)于 2017 年开源的深度学习框架。
PyTorch 基于纽约大学 2002 年推出的 Torch 框架,对模块进行了重构,并增加了
最先进的自动求导系统。Torch 框架应用较多,文档也较为全面,但由于 Torch
框架基于小众的 lua 语言,限制了框架的推广与传播。PyTorch 框架具有许多优点:
第一,PyTorch 使用了动态图框架。动态图框架中计算图在运行过程中构建,因
此动态图框架更易调试,具有更高的灵活性。第二,设计简洁。PyTorch 在设计
上有张量、变量、模块三个抽象层次,与拥有众多抽象概念的 TensorFlow 相比,
PyTorch 的设计更为简洁易于理解。并且 PyTorch 在代码量上也更为简洁,源码
仅相当于 TensorFlow 的几分之一,易于阅读。第三,PyTorch 具有速度优势。许
多测试中,PyTorch 速度快于 TensorFlow 等框架,同样的算法在 PyTorch 框架上
实现速度可能快于其他框架。第四,极强的易用性。PyTorch 框架在目前所有深
度学习框架中易于学习,由于采用了命令式编程,其代码与 Python 等编程语言
相似,学习门槛低,且继承了 Torch 框架灵活易用的接口设计,符合人类的思维
方式。第五,PyTorch 具有完善活跃的社区环境。在 Facebook 人工智能研究院的
支持下,PyTorch 能够提供完整的文档和指南,并且拥有活跃的用户交流论坛。
PyTorch 也存在一些不足,例如,动态图模式虽然更易调试,但在运行效率上低
于静态图;此外,PyTorch 在分布式和并行上也存在操作不便的缺点,这也影响
了 PyTorch 在工业界的部署。
MXNet 是由亚马逊公司推出的深度学习框架,同样采用了数据流图方式。
MXNet 框架拥有良好的平台支持,可在各类硬件上运行,并且提供 Python、R、
Java、Matlab、C++ 等多种编程语言的接口。MXNet 框架系统全部采用模块化设计,
对编译的依赖很小,非常适合快速开发。MXNet 最大的特点是对分布式提供了极
强的支持,并且在内存和显存优化方面具有优势,这也使得 MXNet 框架的用户
偏向工业界。MXNet 平台的缺点主要有文档不完善、推广力度不够等,这些不足
使 MXNet 框架难以与同期的 TensorFlow 框架竞争,市场占有率较低。CNTK 是
由微软公司推出的计算网络工具集,于 2016 年正式开源。CNTK 同样采用了计
算图模式。CNTK 框架在语音识别领域效果突出,但由于框架主要用于微软内部
使用,故外界用户较少,并且框架文档不够完善,目前市场占有率较低。总的来
说,当前深度学习框架市场几乎被 TensorFlow 和 PyTorch 两大巨头占据,其他框
79
79

