专栏首页数据派THU入门大爆炸式发展的深度学习,你先要了解这4个最流行框架

入门大爆炸式发展的深度学习,你先要了解这4个最流行框架

来源:大数据DT

作者:卢誉声

本文约2800字,建议阅读9分钟。

可以预见,深度学习在近年内都会是最流行、最有效的机器学习方法之一。

[ 导读 ]对深度学习做出巨大贡献的Yoshua Bengio,他与Yann Lecun和Geofrey Hinton等人在今年3月获得了图灵奖。近几年,深度学习技术的大爆炸式发展,除了理论方面的突破外,还有基础架构的突破,这些都奠定了深度学习繁荣发展的基础。

可以预见,深度学习不管是现在,还是在之后的一段时间内都会是最流行、最有效的机器学习方法之一。

00 深度学习的贡献

深度学习是一种思想、一种学习模式,深度神经网络是一类模型,两者在本质上是不一样的。但目前大家普遍将深度神经网络认为就是深度学习。

深度神经网络应用之前,传统的计算机视觉、语音识别方法是把特征提取和分类器设计分开来做,然后在应用时再合在一起。比如,如果输入的是一个摩托车图像的话,首先要有一个特征表达或者特征提取的过程,然后把表达出来的特征放到学习算法中进行分类学习。

因为手工设计特征需要大量的实践经验,需要对该领域和数据具有深入见解,并且在特征设计出来之后还需要大量的调试工作和一点运气。另一个难点在于,你不只需要手工设计特征,还要在此基础上有一个比较合适的分类器算法。如果想使特征设计与分类器设计两者合并且达到最优的效果,几乎是不可能完成的任务。

2012年后,深度神经网络给计算机视觉、语音识别、自然语言处理等领域带来了突破性的进展,特别是在人脸识别、机器翻译等领域应用的准确率接近甚至超过了人类的水平。深度神经网络如图1-1所示。

▲图1-1 深度神经网络示意图

深度神经网络最重要的是表示学习的能力,你把数据从一端扔进去,模型从另外一端就出来了,中间所有的特征完全可以通过学习自己来解决,而不再需要手工去设计特征了。

本文对现今和可预见的未来流行的深度学习框架进行介绍,如果你对这些框架有所了解,甚至实践过,那就再好不过了。如果你不了解这些框架或没有使用过,也不必过于担心,一起build from scratch。

01 TensorFlow

TensorFlow是一款基于Apache License 2.0协议开放源代码的软件库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)。

TensorFlow最初是由Google Brain团队中的研究人员和工程师开发的,可为机器学习和深度学习提供强力支持,并且其灵活的数值计算核心广泛应用于许多其他科学领域。

TensorFlow属于第2代人工智能系统,也是一个通用的机器学习框架,具有良好的灵活性和可移植性等优点。TensorFlow有非常好的伸缩性,同时支持模型并行与数据并行,可以在大规模集群上进行分布式训练。

与以Caffe为代表的第1代深度学习引擎不同,TensorFlow提供了自动微分功能,当添加新的层的时候我们无须自己计算并手写微分代码,极大地方便了网络的扩展。

此外,TensorFlow提供了非常多的语言接口,从C/C++、Python、Java甚至到现在的JavaScript,支持的语言非常广泛,因此也非常受欢迎。

接下来我们详细介绍一下TensorFlow的计算模型

TensorFlow将完整的计算任务都抽象成一张图(graph),每个小的计算步骤是一个操作(operation),因此所有的计算任务就是一张由一个个小操作组成的图。

这样讲可能比较抽象,我们使用一个实际的TensorFlow Graph来说明这些概念,如图1-3所示。

图1-3代表了一系列的计算过程。我们先用constant操作定义一个常量,然后分成两条路,一条路先用add操作计算constant加1的结果,然后计算从外部读取一个数据ds1,和add的结果进行乘法,最后用avg操作求add和mul操作的平均值。

另一条路则是先使用mul操作将constant乘以2,然后从外部读取数据ds2,并和mul的结果做加法,然后将结果赋值给一个临时变量int_result。最后使用add操作将avg的结果和int_result相加,得到最后的结果。

▲图1-3 TensorFlow计算图示例

可以看到这个图1-3中有很多元素,比如我们将constant、add、mul称之为操作(operation)。操作是该图中的主要节点。除了操作以外还会有一些数据输入,比如ds1和ds2。我们还可以通过定义变量(variable)保存中间状态,比如int_result。

图中每一个节点负责处理一个张量(tensor)。张量是一个多维数组,表示数学里的多维向量。如果我们要处理一些平面上的散点,那么就可以将需要处理的数据看成一个二维向量(表示点的x和y),我们可以将整个数据处理过程看成Tensor在不同操作节点之间的流动(Flow),这也就是为什么该框架的名字叫作TensorFlow了。

使用TensorFlow的第一步就是将计算任务构造成一张图。但不能只描述计算过程,我们需要编写可执行的任务,因此需要创建一个会话(session)。会话的作用是建立一个执行上下文(context),所有的图都需要在会话中执行,会话会初始化并保存图中需要的变量、图的执行状态、管理执行图的设备(CPU和GPU)等。

所以我们可以看到,TensorFlow的结构很简单,只需要构建一张表示计算的图,并创建会话来执行图即可,TensorFlow帮我们隐藏了其他所有细节,因此我们可以不去关心计算的那些细枝末节。

02 TensorFlow Lite

TensorFlow是目前最完善和强大的深度学习框架,在工业界服务端深度学习领域已经是无可争辩的事实标准,但在移动平台和嵌入式领域中,TensorFlow就显得过于庞大而臃肿,而且计算速度并不能满足移动平台的要求。为了解决这个问题,Google开发了TensorFlow Lite,实现了TensorFlow到移动平台生态体系的延续。

TensorFlow Lite是一种用于设备端推断的开源深度学习框架,其目前是作为TensorFlow的一个模块发布,但我们需要知道TensorFlow Lite和TensorFlow几乎是两个独立的项目,两者之间基本没有共享代码。因此可以说TensorFlow Lite是一个完整而且独立的前向计算引擎框架。

使用TensorFlow Lite需要单独训练一些适用于移动平台的轻量级模型,减少参数数量,提升计算速度。与此同时,TensorFlow Lite还提供了模型转换工具,用于将TensorFlow的模型直接转换为TensorFlow Lite的模型,而且可以实现模型的压缩存储,还能实现模型参数的量化。这样就可以实现在服务器的TensorFlow上训练,在移动平台应用的场景。

此外,TesnorFlow Lite需要我们将其转换后的tflite文件打包到App或者目标存储设备中。TensorFlow Lite启动时会将其加载到移动设备或嵌入式设备中。

最后,TesnorFlow Lite对移动平台的前向计算进行了优化,可以加速浮点数运算,进行半精度浮点数运算,以及8位整数的量化计算,甚至可以通过代理方式在GPU上或者Android的NNAPI上调用。

03 MXNet

Apache MXNet是一个深度学习框架,主要目标是确保深度学习框架的灵活性与执行效率。它允许你混合符号和命令式编程,以最大限度地提高效率和生产力

MXNet的核心是一个动态依赖调度程序,可以动态地自动并行化符号和命令操作。最重要的图形优化层使符号执行更快,内存效率更高。MXNet便携且轻巧,可有效扩展到多个GPU和多台机器。

MXNet支持命令式和符号式两种编程模式,简单、易于上手,同时支持在多端运行,包括多CPU、多GPU、集群、服务器、工作站,甚至移动智能手机。和其他框架一样,MXNet也支持多语言接口,包括C++、Python、R、Scala、Julia、Matlab和JavaScript。

最后MXNet可以非常方便地部署到云端,包括Amazon S3、HDFS和Azure。不过这里值得一提的是,MXNet很好地支持了AWS SageMaker,能够借助一系列工具有针对性地(计算平台、体系结构、网络等)进行模型优化,并非常直接地在Core ML移动平台引擎上使用。

04 PyTorch

PyTorch是这里最年轻的深度学习框架,也是最近发展最为迅猛的研究用深度学习框架,因为其上手简单、灵活强大,如今Caffe2也正式并入PyTorch。使用PyTorch可以非常快速地验证研究思路而为广大研究人员喜爱。

PyTorch是一个以C/C++为核心实现,以Python为胶水语言,编写调用接口的框架。与TensorFlow一样,PyTorch利用Autograd模块自动计算导数,避免了复杂的手动求导。因此PyTorch非常适合深度学习。

编辑:黄继彦

本文分享自微信公众号 - 数据派THU(DatapiTHU)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 独家 | 如何通过TensorFlow 开发者资格考试(附链接)

    本文通过作者参加TensorFlow的资格考试的经历总结考前准备以及回答考试会出现的问题。

    数据派THU
  • 独家 | 10分钟带你上手TensorFlow实践(附代码)

    原文标题:TensorFlow Tutorial: 10 minutes Practical TensorFlow lesson for quick learn...

    数据派THU
  • 独家|让你的GPU为深度学习做好准备(附代码)

    本文讲述了使用NVIDIA官方工具搭建基于GPU的TensorFlow平台的教程。

    数据派THU
  • 直播课程 | TensorFlow工程大咖带你由浅入深玩转深度学习算法

    王琛老师有话说 ? 《深度学习基础与TensorFlow实践》 AI100学院有幸邀请到《深度学习原理与TensorFlow实践》作者之一、百纳信息公司AI...

    AI科技大本营
  • 课程 | 工程大咖带你入门深度学习+TensorFlow

    《深度学习基础与TensorFlow实践》 AI100学院有幸邀请到《深度学习原理与TensorFlow实践》作者之一、百纳信息公司AI方向负责人王琛老师6月...

    AI科技大本营
  • 黄金三镖客之TensorFlow版

    用户1737318
  • 我的深度学习工作站

    很多人觉得深度学习上手非常困难,让我们看看,对于程序员来说,着手深度学习的实践需要准备什么样的工具。 ? 硬件 从硬件来讲,我们可能需要的计算能力,首先想到的...

    IT派
  • TensorFlow 一个用于人工智能的开源神器

    TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edg...

    Python知识大全
  • 从入门到头秃,2018年机器学习图书TOP10

    导读:无论是2018还是2019,都是属于AI的时代。要想在这个时代里 混口饭吃 改变世界,首先你得玩转机器学习。数据叔整理了2018年出版的机器学习重磅好书,...

    华章科技
  • 【重磅】TensorFlow中文社区论坛发布

    昨天Amusi在刷微信公众号推文,突然看到"TensorFlow"官方微信推送的文章,瞬间就被点燃了。对于这种标题党“TensorFlow中文社区论坛 (测试版...

    Amusi

扫码关注云+社区

领取腾讯云代金券