前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >入门大爆炸式发展的深度学习,你先要了解这4个最流行框架

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

作者头像
数据派THU
发布2020-02-20 17:53:25
4510
发布2020-02-20 17:53:25
举报
文章被收录于专栏:数据派THU数据派THU

来源:大数据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非常适合深度学习。

编辑:黄继彦

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据派THU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档