初学者如何选出最适合自己深度学习框架?

无论是对于深度学习相关专业的初学者,还是已经在企业和组织中从事工业场景应用和研发的开发者来说,选择一个适合自己,适合业务场景需求的深度学习框架显得尤为重要。下边对现有深度框架做一个全面的阐述及解答。

目前,国内外有哪些主流的深度学习框架?分别有什么优缺点?

TensorFlow:谷歌大厂出品,社区资源丰富,用户群体广泛。如果你的业务是实现一个比较成熟的应用场景,选择 TensorFlow 是个不错的选择,毕竟大部分坑前人已经踩过了。如果你还是一名初学者,想要去实现全新的算法,那要慎重选择 TensorFlow,因其发展时间较久,代码库庞大,想要真正看懂它的代码会是一个不小的挑战。

初学者如何选出最适合自己深度学习框架?_第1张图片

PaddlePaddle:百度出品,跟 TF 类似,PaddlePaddle 也是在百度内部实际应用的工业框架。值得一提的是,PaddlePaddle 为大量工业级模型提供官方支持;大规模分布式训练技术能力强,支持大规模稠密参数和稀疏参数场景的并行训练;基于其中文文档友好、简单易上手的特点,社区活跃度不断提高。本土开发者中文交流非常方便。PaddlePaddle 已经升级为全面的深度学习开发套件,除了核心框架,还开放了 VisualDL、PARL、AutoDL、EasyDL、AI Studio 等一整套的深度学习工具组件和服务平台,更好地满足不同层次的深度学习开发者的开发需求。18 年百度加大了生态投入,在工业制造、农林领域有不少案例,对于想要落地应用场景,特别是针对中文语言处理的场景和大规模推荐场景,PaddlePaddle 或许是个不错的选择。

初学者如何选出最适合自己深度学习框架?_第2张图片

PyTorch+Caffe2:脸书出品。PyTorch 前身是 Torch(一个基于 Lua 语言的深度学习库)。PyTorch 灵活性相比 TensorFlow 大大增强,支持动态构图,开发者可以随时改变神经网络的结构。PyTorch 今年因其易用性表现突出,越来越受到学术界的青睐。如果你是一名初学者,想要去复现前沿的算法,推荐使用 PyTorch。如果你是工业场景开发者,最好先搜一搜是否已经有使用 PyTorch 的成功落地案例。因为在运算效率、工业部署上,PyTorch 还不算成熟。Caffe2为生产环境设计,提供在各种平台(包括移动设备)的运行时。Caffe2 意在弥补 Pytorch 在生产环境的不足,目前还没有看到太多开发者反馈 Caffe2 的工业表现,需要更多时间验证。

初学者如何选出最适合自己深度学习框架?_第3张图片

MxNet:已被亚马逊 (Amazon) 选为 AWS 上的深度学习框架,支持动态图计算。优势是高效小巧,更适合自定义需求高的公司和研究者。如果你的工作需要对框架进行修改时,改 MxNet 要比改 TF 高效多了。MXNet 的用户相比其他框架并不算太多,有少量拥戴者。MXNet 在文档质量方便经常被诟病,新手还需要多磨合一下。

初学者如何选出最适合自己深度学习框架?_第4张图片

Keras:是一个用于快速构建深度学习原型的高层神经网络库,Keras 由纯 Python 编写而成,并基于 Tensorflow、Theano 以及 CNTK 后端。Keras 隐藏了大部分的内部运算,对于新手来说非常友好。如果想要快速入门,建议可以选择 Keras。但真的想成为深度学习大拿,还是要手动从零开始写一个神经网络的代码,否则容易依赖于 Keras 的易使用性而忽略底层原理。

初学者如何选出最适合自己深度学习框架?_第5张图片

XDL:阿里出品X-Deep Learning (XDL) 是针对特定工业级场景(比如广告)深度学习问题的解决方案,而不是与其他框架并列的底层框架。实际上,XDL 采用桥接的方式支持使用 TensorFlow 和 MXNet 作为单节点的计算后端。对于已经使用 TensorFlow、MXNet 的开发者来说,如果需要在大规模稀疏场景应用可以选择 XDL 试试, XDL 依赖于阿里提供特定的部署环境,对非阿里系用户不是很人性化。

初学者如何选出最适合自己深度学习框架?_第6张图片

不同学习阶段、不同岗位的开发者,面对不同的业务场景需求应该选择什么深度学习框架?选择和衡量的标准是什么?

不同类型的用户,选择和衡量的标准会有一定差异。选择框架通常要考虑易用性、性能、社区、平台支持等问题初学者应该考虑容易上手的框架偏研究性的开发者,一般选择易用而且有领先的模型基线的框架偏工业应用的开发者可以考虑使用稳定性高、性能好的框架比较高阶的用户,往往需要同时掌握多个框架。最新的开源算法可能会基于某个框架,掌握多个框架可以更快复现前沿成果。同时不同框架在不同模型上有性能差异,掌握多个框架也可以选择在某个场景下最适合的框架。

在选择深度学习框架时有哪些经验可以分享?需要考虑哪些因素?

开发者通常用深度学习框架组建网络,去解决实际企业级业务中的具体问题,比如:词法分析、机器翻译等。选择框架时通常需要关注以下一些因素:

(1)框架是否已经官方支持了当前最好的算法,比如中文词法分析任务。

(2)框架是否高效。同样的算法用不同框架实现,训练速度更快,意味着更少的线下资源,更快的迭代速度;预测速度更快,意味着实际部署时可以为企业节省大量的机器资源,也具有更高的响应速度。

(3)框架的接口是否容易使用

掌握一个深度学习框架,开发者需要做哪些准备?

在开发者已经学习 Python 程序开发和深度学习基础知识的前提下,掌握一个深度学习框架,开发者需要了解框架的基本原理,学习并掌握框架的基本概念和用法。

(1)通常可以先从官方文档开始,通过大致浏览官方文档对框架基本概念和用法有一个大致的了解。

(2)另外可以结合官方提供的快速入门例子,在自己的机器上安装并练习使用。

(3)然后可以再从官方的模型库里面挑选一些算法,进行学习参考。

(4)结合自己具体任务组建网络,查看 API 接口文档,解决实际任务。

深度学习框架能“包治百病”吗?是否适用于所有应用场景需求?

需要提醒大家的是,深度学习框架不能包至百病,深度学习框架能够解决的是适合使用深度学习技术的应用场景。

深度学习(DL)是机器学习(ML)的一个分支,也是当下最流行的机器学习方法,虽然近几年在图像、语音、自然语言处理等应用方向,深度学习技术都取得了突破性的进展,但是我们依然不应该神话深度学习,认为深度学习无所不能

适合掌握深度学习的任务应具备这样一些特点:

(1)具备大量样本数据。如果样本数据难以获取或者数量太少,我们认为就不适合深度学习技术解决。

(2)样本数据对场景的覆盖度足够完善。深度学习模型的效果完全依赖样本数据表现,如果出现样本数据外的情况,模型的推广性会变差。

(3)结果对可解释性的要求不高。如果应用场景不仅要机器能够完成某项任务,还需对完成过程有明确的可解释性,这样的场景就不那么适合深度学习。

 

联盟有话说:

目前比较主流的两大深度学习框架是TensorFlow和PyTorchTensorFlow在工业界用的比较多,PyTorch比较灵活,相对在学业界用的比较多。不过,联盟觉得只要选择一个适合自己的,踏实用心学习就好了,不用考虑其他很多不必考虑的问题,何必给自己增添烦恼呢smiley_12.pngsmiley_12.png

对于有能力或者高端开发者,还是要对流行框架都掌握哟,这样才能跟随AI前沿!

你可能感兴趣的:(初学者如何选出最适合自己深度学习框架?)