加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 模式 > 正文

2020年深度学习框架对比速读

发布时间:2020-09-01 05:54:54 所属栏目:模式 来源:网络整理
导读:副标题#e# 众所周知,在机器学习框架领域,PyTorch、TensorFlow已分别成为目前学术界和工业界使用最广泛的两大实力玩家,而紧随其后的Keras、MXNet等框架也由于其自身的独特性受到开发者的喜爱。本文主要是为部分初学者提供建议,框架并无最好与最坏之分,
副标题[/!--empirenews.page--]

众所周知,在机器学习框架领域,PyTorch、TensorFlow已分别成为目前学术界和工业界使用最广泛的两大实力玩家,而紧随其后的Keras、MXNet等框架也由于其自身的独特性受到开发者的喜爱。本文主要是为部分初学者提供建议,框架并无“最好”与“最坏”之分,选择最终归结于您的技术背景、需求和期望。

2020年深度学习框架对比速读

TensorFlow:出身豪门的工业界霸主

TensorFlow于2015年11月面世,基于Apache License 2.0协议发布,由Google Brain团队研发。到目前为止也是github上热度最高、使用人数最多的深度学习框架,业界很多招聘要求中也提到了它。2019年3月推出TensorFlow2.0 版本,整体与1.0版本相比发生了较大的变化。

TensorFlow能有现在的地位,主因有二:一是“背靠大树好乘凉”,Google几乎在所有应用程序中都使用TensorFlow来实现机器学习。得益于Google在深度学习领域的影响力和强大的推广能力,TensorFlow一经推出关注度就居高不下;二是由于其本身设计宏大,不仅可以为深度学习提供强力支持,灵活的数值计算核心也能广泛应用于其他涉及大量数学运算的科学领域。

优势归因:

支持python、JavaScript、C ++、Java和Go,C#和Julia等多种编程语言;

灵活的架构支持多GPU、分布式训练,跨平台运行能力强;

自带TensorBoard组件,能可视化计算图,便于让用户实时监控观察训练过程;

官方文档非常详尽,可查询资料众多;

社区庞大,大量开发者活跃于此。

踩坑预警:

从框架本身的语言设计来看,入门难度较大。加之部分自创的抽象概念,提高了学习门槛;

系统设计过于复杂,代码总量逾100万行,学习者如果希望了解TF的底层运行机制,无疑漫长而艰辛;

文档和教程虽多,但缺乏条理,新旧版本割裂,对初学者来说很难找到一个循序渐进的入口;

接口迭代频繁,且版本间不兼容问题足以令人头秃。尤其在TF2发布后,不少TF1的用户发现很多开源代码无法在新版本上运行;

在移动平台和嵌入式领域中TensorFlow过于“臃肿”,计算速度也不尽如人意(Google针对这一问题又开发了TensorFlow Lite)。

小结:TensorFlow发展到如今,多少有点“始于宏大,囿于宏大”的意味。虽然吐槽者甚多,但也侧面说明了使用者众多。况且在工业界TensorFlow依然是深度学习框架中无可争议的标杆,加之谷歌的支持,投入时间学习算是一项相当不错的选择。

项目地址:https://github.com/tensorflow/tensorflow

Keras:用户友好的极简主义拥趸

如果你已经掌握了Python并准备开启深度学习之旅,Keras可能会是最易上手的一个工具。严格来说,与其说Keras是一个深度学习框架,不如说它是一个由Python编写的开源神经网络库,一个构建于第三方框架之上的深度学习接口,一种高级API。Keras本是为支持快速实验而生,可以基于以TensorFlow为代表的多种深度学习框架快速建模,将你的想法迅速输出为实验结果,其设计充分体现了“用户友好”这一特性。

为了提供简洁一致的API,尽可能为用户减少重复造轮子的顾虑,Keras做了层层封装。这种高度封装一方面使用户的学习变得容易,但另一方面也缺乏灵活性,经常导致用户在获取底层数据信息时过于困难,改写现有的神经网络层也十分复杂。此外,由于不少Bug隐匿于封装中,这也使Keras运行速度相对缓慢。

优势归因:

用户友好,代码可读,句法明晰,高度模块化,便于上手;

提供简洁的API,减少一般应用下用户的工作量;

支持实现卷积神经网络和循环神经网络,或二者的结合;

相同的代码可以在CPU或GPU上无缝切换运行;

官方文档详尽易懂,用户社区庞大。

踩坑预警:

高度集成,缺少灵活性,深入学习时容易遇到瓶颈;

过度封装在一定程度上增加了调试难度;

对DL的入门者来说,容易因Keras 的易用性而忽略底层原理。

小结:在众多的深度学习框架中,Keras可以说将“极简主义”发挥到了极致。简洁的代码、简洁的API、简洁的模型构建和导出,这些都让深度学习看上去似乎不那么“高不可攀”了。不过对于初学者而言,Keras到底适不适合推荐则是见仁见智。支持者认为,Keras最大限度地减少了用户操作,并使模型非常容易理解,对菜鸟们绝对是很好的敲门砖;反对者认为,在使用Keras的大多数时间里,用户主要是在调用接口,很难真正理解到深度学习的内涵。其过度的封装容易让新手陷入似是而非的处境。

官方网站:https://keras.io/

MXNet:低调规矩的轻量级选手

MXNet是一个轻量级的深度学习库,在2016年被AWS正式选择为其云计算的官方深度学习平台。2017年1月,MXNet项目进入Apache基金会,成为Apache的孵化器项目。MXNet以其超强的分布式支持,明显的内存、显存优化为人称道。同样的模型,MXNet往往占用更小的内存和显存,因此对资源不够的朋友来说是一个不错的选择。

作为一个轻巧的框架,MXNet的特点非常鲜明:语言接口非常丰富,包括C++、Python、R语言、Scala、Julia、Matlab和JavaScript;支持多端运行,可以运行在多CPU、多GPU、集群、服务器、台式机或者移动设备上;允许用户混合使用符号编程和命令式编程,最大限度确保深度学习框架的灵活性和执行效率。

优势归因:

支持多语言接口;

同时支持符合式和命令式编程,集灵活与效率于一体;

分布式环境下扩展性能出色,可有效扩展到多个GPU和多台机器;

有AWS的平台支持,云端部署便捷。

踩坑预警:

初期推广不给力,过于低调以致整体生态构建相对滞后,用户社区活跃度较低;

教学文档不够系统,甚至于只能通过查看源码来真正理解MXNet接口的用法,学习成本较高。

小结:MXNet自发行到现在一直比较低调和小众。创始人李沐曾提到MXNet发展早期是“舍推广保技术”。虽然性能上也算可圈可点,但终究没有迎来大放异彩的时刻。另外官方文档的“粗糙”也劝退了相当一部分用户,尤其对从零开始的新手来说,上手难度较高。

官方网址:https://mxnet.incubator.apache.org/

PyTorch:以动态图崛起的学术界宠儿

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读