如此多的深度学习框架为什么我选择PyTorch.docx

上传人:b****6 文档编号:2940393 上传时间:2022-11-16 格式:DOCX 页数:5 大小:22.46KB
下载 相关 举报
如此多的深度学习框架为什么我选择PyTorch.docx_第1页
第1页 / 共5页
如此多的深度学习框架为什么我选择PyTorch.docx_第2页
第2页 / 共5页
如此多的深度学习框架为什么我选择PyTorch.docx_第3页
第3页 / 共5页
如此多的深度学习框架为什么我选择PyTorch.docx_第4页
第4页 / 共5页
如此多的深度学习框架为什么我选择PyTorch.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

如此多的深度学习框架为什么我选择PyTorch.docx

《如此多的深度学习框架为什么我选择PyTorch.docx》由会员分享,可在线阅读,更多相关《如此多的深度学习框架为什么我选择PyTorch.docx(5页珍藏版)》请在冰豆网上搜索。

如此多的深度学习框架为什么我选择PyTorch.docx

如此多的深度学习框架为什么我选择PyTorch

如此多的深度学习框架,为什么我选择PyTorch?

小编说:

目前研究人员正在使用的深度学习框架不尽相同,本文介绍了6种常见的深度学习框架,PyTorch与他们相比又有哪些优势呢?

本文选自《深度学习框架PyTorch:

入门与实践》,了解详情请点击阅读原文。

PyTorch的诞生2017年1月,Facebook人工智能研究院(FAIR)团队在GitHub上开源了PyTorch,并迅速占领GitHub热度榜榜首。

作为一个2017年才发布,具有先进设计理念的框架,PyTorch的历史可追溯到2002年就诞生于纽约大学的Torch。

Torch使用了一种不是很大众的语言Lua作为接口。

Lua简洁高效,但由于其过于小众,用的人不是很多,以至于很多人听说要掌握Torch必须新学一门语言就望而却步(其实Lua是一门比Python还简单的语言)。

考虑到Python在计算科学领域的领先地位,以及其生态完整性和接口易用性,几乎任何框架都不可避免地要提供Python接口。

终于,在2017年,Torch的幕后团队推出了PyTorch。

PyTorch不是简单地封装LuaTorch提供Python接口,而是对Tensor之上的所有模块进行了重构,并新增了最先进的自动求导系统,成为当下最流行的动态图框架。

PyTorch一经推出就立刻引起了广泛关注,并迅速在研究领域流行起来。

图1所示为Google指数,PyTorch自发布起关注度就在不断上升,截至2017年10月18日,PyTorch的热度已然超越了其他三个框架(Caffe、MXNet和Theano),并且其热度还在持续上升中。

图1PyTorch和Caffe、Theano、MXNet的Google指数对比(类别为科学)常见的深度学习框架简介

随着深度学习的发展,深度学习框架如雨后春笋般诞生于高校和公司中。

尤其是近两年,Google、Facebook、Microsoft等巨头都围绕深度学习重点投资了一系列新兴项目,他们也一直在支持一些开源的深度学习框架。

目前研究人员正在使用的深度学习框架不尽相同,有TensorFlow、Caffe、Theano、Keras等,常见的深度学习框架如图2所示。

这些深度学习框架被应用于计算机视觉、语音识别、自然语言处理与生物信息学等领域,并获取了极好的效果。

本部分主要介绍当前深度学习领域影响力比较大的几个框架,限于笔者个人使用经验和了解程度,对各个框架的评价可能有不准确的地方。

图2常见的深度学习框架1.TheanoTheano最初诞生于蒙特利尔大学LISA实验室,于2008年开始开发,是第一个有较大影响力的Python深度学习框架。

Theano是一个Python库,可用于定义、优化和计算数学表达式,特别是多维数组(numpy.ndarray)。

在解决包含大量数据的问题时,使用Theano编程可实现比手写C语言更快的速度,而通过GPU加速,Theano甚至可以比基于CPU计算的C语言快上好几个数量级。

Theano结合了计算机代数系统(ComputerAlgebraSystem,CAS)和优化编译器,还可以为多种数学运算生成定制的C语言代码。

对于包含重复计算的复杂数学表达式的任务而言,计算速度很重要,因此这种CAS和优化编译器的组合是很有用的。

对需要将每一种不同的数学表达式都计算一遍的情况,Theano可以最小化编译/解析的计算量,但仍然会给出如自动微分那样的符号特征。

Theano诞生于研究机构,服务于研究人员,其设计具有较浓厚的学术气息,但在工程设计上有较大的缺陷。

一直以来,Theano因难调试、构建图慢等缺点为人所诟病。

为了加速深度学习研究,人们在它的基础之上,开发了Lasagne、Blocks、PyLearn2和Keras等第三方框架,这些框架以Theano为基础,提供了更好的封装接口以方便用户使用。

2017年9月28日,在Theano1.0正式版即将发布前夕,LISA实验室负责人,深度学习三巨头之一的YoshuaBengio宣布Theano即将停止开发:

“TheanoisDead”。

尽管Theano即将退出历史舞台,但作为第一个Python深度学习框架,它很好地完成了自己的使命,为深度学习研究人员的早期拓荒提供了极大的帮助,同时也为之后深度学习框架的开发奠定了基本设计方向:

以计算图为框架的核心,采用GPU加速计算。

2017年11月,LISA实验室在GitHub上开启了一个初学者入门项目,旨在帮助实验室新生快速掌握机器学习相关的实践基础,而该项目正是使用PyTorch作为教学框架。

点评:

由于Theano已经停止开发,不建议作为研究工具继续学习。

2TensorFlow2015年11月10日,Google宣布推出全新的机器学习开源工具TensorFlow。

TensorFlow最初是由Google机器智能研究部门的GoogleBrain团队开发,基于Google2011年开发的深度学习基础架构DistBelief构建起来的。

TensorFlow主要用于进行机器学习和深度神经网络研究,但它是一个非常基础的系统,因此也可以应用于众多领域。

由于Google在深度学习领域的巨大影响力和强大的推广能力,TensorFlow一经推出就获得了极大的关注,并迅速成为如今用户最多的深度学习框架。

TensorFlow在很大程度上可以看作Theano的后继者,不仅因为它们有很大一批共同的开发者,而且它们还拥有相近的设计理念,都是基于计算图实现自动微分系统。

TensorFlow使用数据流图进行数值计算,图中的节点代表数学运算,而图中的边则代表在这些节点之间传递的多维数组(张量)。

TensorFlow编程接口支持Python和C。

随着1.0版本的公布,Java、Go、R和HaskellAPI的alpha版本也被支持。

此外,TensorFlow还可在GoogleCloud和AWS中运行。

TensorFlow还支持Windows7、Windows10和WindowsServer2016。

由于TensorFlow使用CEigen库,所以库可在ARM架构上编译和优化。

这也就意味着用户可以在各种服务器和移动设备上部署自己的训练模型,无须执行单独的模型解码器或者加载Python解释器。

作为当前最流行的深度学习框架,TensorFlow获得了极大的成功,对它的批评也不绝于耳,总结起来主要有以下四点。

过于复杂的系统设计,TensorFlow在GitHub代码仓库的总代码量超过100万行。

这么大的代码仓库,对于项目维护者来说维护成为了一个难以完成的任务,而对读者来说,学习TensorFlow底层运行机制更是一个极其痛苦的过程,并且大多数时候这种尝试以放弃告终。

频繁变动的接口。

TensorFlow的接口一直处于快速迭代之中,并且没有很好地考虑向后兼容性,这导致现在许多开源代码已经无法在新版的TensorFlow上运行,同时也间接导致了许多基于TensorFlow的第三方框架出现BUG。

接口设计过于晦涩难懂。

在设计TensorFlow时,创造了图、会话、命名空间、PlaceHolder等诸多抽象概念,对普通用户来说难以理解。

同一个功能,TensorFlow提供了多种实现,这些实现良莠不齐,使用中还有细微的区别,很容易将用户带入坑中。

文档混乱脱节。

TensorFlow作为一个复杂的系统,文档和教程众多,但缺乏明显的条理和层次,虽然查找很方便,但用户却很难找到一个真正循序渐进的入门教程。

由于直接使用TensorFlow的生产力过于低下,包括Google官方等众多开发者尝试基于TensorFlow构建一个更易用的接口,包括Keras、Sonnet、TFLearn、TensorLayer、Slim、Fold、PrettyLayer等数不胜数的第三方框架每隔几个月就会在新闻中出现一次,但是又大多归于沉寂,至今TensorFlow仍没有一个统一易用的接口。

凭借Google着强大的推广能力,TensorFlow已经成为当今最炙手可热的深度学习框架,但是由于自身的缺陷,TensorFlow离最初的设计目标还很遥远。

另外,由于Google对TensorFlow略显严格的把控,目前各大公司都在开发自己的深度学习框架。

点评:

不完美但最流行的深度学习框架,社区强大,适合生产环境。

3.KerasKeras是一个高层神经网络API,由纯Python编写而成并使用TensorFlow、Theano及CNTK作为后端。

Keras为支持快速实验而生,能够把想法迅速转换为结果。

Keras应该是深度学习框架之中最容易上手的一个,它提供了一致而简洁的API,能够极大地减少一般应用下用户的工作量,避免用户重复造轮子。

严格意义上讲,Keras并不能称为一个深度学习框架,它更像一个深度学习接口,它构建于第三方框架之上。

Keras的缺点很明显:

过度封装导致丧失灵活性。

Keras最初作为Theano的高级API而诞生,后来增加了TensorFlow和CNTK作为后端。

为了屏蔽后端的差异性,提供一致的用户接口,Keras做了层层封装,导致用户在新增操作或是获取底层的数据信息时过于困难。

同时,过度封装也使得Keras的程序过于缓慢,许多BUG都隐藏于封装之中,在绝大多数场景下,Keras是本文介绍的所有框架中最慢的一个。

学习Keras十分容易,但是很快就会遇到瓶颈,因为它缺少灵活性。

另外,在使用Keras的大多数时间里,用户主要是在调用接口,很难真正学习到深度学习的内容。

点评:

入门最简单,但是不够灵活,使用受限。

4.Caffe/Caffe2Caffe的全称是ConvolutionalArchitectureforFastFeatureEmbedding,它是一个清晰、高效的深度学习框架,核心语言是C,它支持命令行、Python和MATLAB接口,既可以在CPU上运行,也可以在GPU上运行。

Caffe的优点是简洁快速,缺点是缺少灵活性。

不同于Keras因为太多的封装导致灵活性丧失,Caffe灵活性的缺失主要是因为它的设计。

在Caffe中最主要的抽象对象是层,每实现一个新的层,必须要利用C实现它的前向传播和反向传播代码,而如果想要新层运行在GPU上,还需要同时利用CUDA实现这一层的前向传播和反向传播。

这种限制使得不熟悉C和CUDA的用户扩展Caffe十分困难。

Caffe凭借其易用性、简洁明了的源码、出众的性能和快速的原型设计获取了众多用户,曾经占据深度学习领域的半壁江山。

但是在深度学习新时代到来之时,Caffe已经表现出明显的力不从心,诸多问题逐渐显现(包括灵活性缺失、扩展难、依赖众多环境难以配置、应用局限等)。

尽管现在在GitHub上还能找到许多基于Caffe的项目,但是新的项目已经越来越少。

Caffe的作者从加州大学伯克利分校毕业后加入了Google,参与过TensorFlow的开发,后来离开Google加入FAIR,担任工程主管,并开发了Caffe2。

Caffe2是一个兼具表现力、速度和模块性的开源深度学习框架。

它沿袭了大量的Caffe设计,可解决多年来在Caffe的使用和部署中发现的瓶颈问题。

Caffe2的设计追求轻量级,在保有扩展性和高性能的同时,Caffe2也强调了便携性。

Caffe2从一开始就以性能、扩展、移动端部署作为主要设计目标。

Caffe2的核心C库能提供速度和便携性,而其Python和CAPI使用户可以轻松地在Linux、Windows、iOS、Android,甚至RaspberryPi和NVIDIATegra上进行原型设计、训练和部署。

Caffe2继承了Caffe的优点,在速度上令人印象深刻。

Facebook人工智能实验室与应用机器学习团队合作,利用Caffe2大幅加速机器视觉任务的模型

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1