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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

联盟有话说:

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

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

END

声明:本文来源于【InfoQ】

如有侵权,联系删除

【人工智能】【深度学习】初学者如何选出最适合自己深度学习框架?相关推荐

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

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

  2. 高中必备学习软件_有哪些适合高中生的学习软件?

    先来推荐一波实质的干货推荐,必备软件!!! 『作文纸条』 这个APP真的要夸! 界面简洁,排版美观,每天都向你推送最新的素材,最重要的是里面有一群爱写作的大佬每天都在写作文!!!这么好的宝藏APP怎么 ...

  3. 软件测试培训适合什么人学习?

    软件测试在互联网行业一直有着非常可观的发展前景,想要学习软件测试技术的人也越来越多,但不是所有人都可以学,都能学会的,小编下面就为大家详细的介绍一下软件测试培训适合什么人学习? 软件测试培训适合什么人 ...

  4. 深度学习框架不能“包治百病”,开发者如何选出最适合自己的?

    随着深度学习关注度和势头上升,深度学习被越来越多的企业和组织的生产实践结合起来.这时,无论是对于深度学习相关专业的初学者,还是已经在企业和组织中从事工业场景应用和研发的开发者来说,选择一个适合自己,适 ...

  5. Keras vs PyTorch,哪一个更适合做深度学习?

    选自Medium 作者:Karan Jakhar 机器之心编译 参与:小舟.魔王 如何选择工具对深度学习初学者是个难题.本文作者以 Keras 和 Pytorch 库为例,提供了解决该问题的思路. 当 ...

  6. 深度学习初学者必备资料整理

    Python 程序员深度学习的"四大名著": 这四本书着实很不错!我们都知道现在机器学习.深度学习的资料太多了,面对海量资源,往往陷入到"无从下手"的困惑出境. ...

  7. 强烈推荐的TensorFlow、Pytorch和Keras的样例资源(深度学习初学者必须收藏)

    TensorFlow.Keras和Pytorch是目前深度学习的主要框架,也是入门深度学习必须掌握的三大框架,但是官方文档相对内容较多,初学者往往无从下手.本人从github里搜到三个非常不错的学习资 ...

  8. 控制文件夹递归深度_TensorFlow、Pytorch和Keras的样例资源(深度学习初学者必须收藏)...

    TensorFlow.Keras和Pytorch是目前深度学习的主要框架,也是入门深度学习必须掌握的三大框架,但是官方文档相对内容较多,初学者往往无从下手.本人从github里搜到三个非常不错的学习资 ...

  9. 【深度学习】深度强化学习初学者指南

    一.说明 GAN(Generative Adversarial Networks)是一种深度学习模型,它由两个神经网络组成:一个生成网络和一个判别网络.生成网络学习如何生成类似于给定数据集的新数据,而 ...

最新文章

  1. LIBSVM 多分类问题- 葡萄酒种类识别
  2. linux中使用随机数
  3. ef mysql 连接数_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
  4. 叮铃哐当,一大波机器人开始入侵厨房
  5. [收藏]DIV中控制超级链接的方法
  6. PX4日志读取并转化为.scv文件、MATLAB显示
  7. 离圆心最远的整数点(微软笔试题)
  8. 2018 CVPR之语义分割:CCNet: Criss-Cross Attention for Semantic Segmentation
  9. 湖南天才少女姚婷:刚毕业就被华为156万年薪邀请,来历不简单
  10. 周末作业-循环练习题
  11. 19号笔刷 ps_ps的19号笔刷怎样设置,详细点,最好配点图
  12. 数字大写 php 代码,PHP 中文大写数字 转成 数字代码
  13. 图像处理——Fast AutoAugment
  14. 【SQL学习笔记】《SQL进阶教程》1.1
  15. AD域和LDAP协议
  16. PMP什么样的题库才是好的题库?
  17. 说文解字----矩阵分析(一)矩阵中的空间与秩
  18. “调节阀”发脾气了你怎么办?
  19. 创维高安版-E900-Hi3798MV100-强刷卡刷固件包-当贝纯净桌面
  20. 安卓翻译—Activies

热门文章

  1. mvc模式 mysql做网页_SpringMVC + Hibernate + MySQL 的简易网页搭建(Control实现篇)
  2. js符号转码_JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解...
  3. 遍历磁盘扩展分区_win7系统如何创建磁盘管理扩展分区【图文教程】
  4. linux安装jdk(以1.6为例)
  5. 华北科技学院计算机科学与技术分数线,2019年华北科技学院优势专业排名及分数线...
  6. java invoke int long,将Long转换为Integer
  7. linux ora-39002,impdp ORA-39002,ORA-39166,ORA-39164的问题及解决
  8. token验证+vuex的localStorage应用
  9. BZOJ 3626 LCA(离线+树链剖分+差分)
  10. linux 基本配置tab键和显示行号 和中文输入法