详解 6 大主流深度学习框架

这篇具有很好参考价值的文章主要介绍了详解 6 大主流深度学习框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导读:近几年,随着深度学习的爆炸式发展,相关理论和基础架构得到了很大突破,它们奠定了深度学习繁荣发展的基础。这其中涌现了几个著名的深度学习平台,本文将对这些平台进行简要介绍。

作者:涂铭 金智勇

来源:大数据DT(ID:hzdashuju)

详解 6 大主流深度学习框架

01 Theano

详解 6 大主流深度学习框架

Theano由LISA集团(现MILA)在加拿大魁北克的蒙特利尔大学开发,是在BSD许可证下发布的开源项目,它是用一位希腊数学家的名字命名的。

Theano是一个Python库,可用于定义、优化和计算数学表达式,特别是多维数组(numpy.ndarray)。在解决包含大量数据问题的时候,使用Theano编程可实现比C语言编程更快的运行速度。通过GPU加速,Theano甚至可以比基于CPU计算的C语言快好几个数量级。

Theano结合 CAS(Computer Algebra System,计算机代数系统)和优化编译器,还可以为多种数学运算生成定制的C语言代码。对于处理包含重复计算的复杂数学表达式任务,计算速度很重要,因此这种CAS和优化编译器的组合非常有用。对于需要将每种不同的数学表达式都计算一遍的情况,Theano可以最小化编译/解析计算量,但仍会给出如自动微分那样的符号特征。

在过去很长一段时间里,Theano是深度学习开发与研究的行业标准。出身学界的Theano最初是为学术研究而设计的,这使得深度学习领域的许多学者至今仍在使用Theano。

但随着TensorFlow在谷歌的支持下强势崛起,Theano日渐式微,使用的人越来越少。其中标志性事件是Theano的创始者之一Ian GoodFellow放弃Theano转去谷歌开发TensorFlow了。

2017年9月28日,在Theano 1.0正式版发布前夕,LISA实验室负责人、深度学习三巨头之一的Yoshua Bengio宣布Theano将停止开发:“Theano is Dead.”

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

对于深度学习新手,可以使用Theano做入门练习,但对于职业开发者,建议使用 TensorFlow。

02 TensorFlow

详解 6 大主流深度学习框架

TensorFlow是Google Brain团队基于Google在2011年开发的深度学习基础架构DistBelief构建的。Google在其所有的应用程序中都使用TensorFlow实现机器学习,例如使用Google照相机和Google语音搜索功能,就间接使用了TensorFlow模型。

TensorFlow在很大程度上可以看作Theano的后继者,这不仅因为它们有很大一批共同的开发者,还因为它们拥有相近的设计理念,都基于计算图实现自动微分系统。TensorFlow 使用数据流图进行数值计算,图中的节点代表数学运算,图中的边代表在这些节点之间传递的多维数组。

TensorFlow编程接口支持Python和C++,TensorFlow 1.0版本开始支持Java、Go、R和Haskell API的Alpha版本。此外,TensorFlow还可以在Google Cloud和AWS中运行。TensorFlow支持Windows 7、Windows 10和Windows Server 2016系统。

因为TensorFlow使用C++ Eigen库,所以可以在ARM架构上编译和优化。这也就意味着用户可以在各种服务器和移动设备上部署自己的训练模型,无须执行单独的模型解码器或者加载Python解释器。

作为当前最流行的深度学习框架,TensorFlow获得了极大的成功,但在学习过程中读者也需要注意下面一些问题。

  • 因为TensorFlow的接口在不断地快速迭代,并且版本之间不兼容,所以在开发和调试过程中可能会出现问题,例如开源代码无法在新版的TensorFlow上运行。

  • 想学习TensorFlow底层运行机制的读者需要做好心理准备,TensorFlow在GitHub代码仓库的总代码量超过100万行,系统设计比较复杂,这将是一个漫长的学习过程。

  • 在代码层面,对于同一个功能,TensorFlow提供了多种实现,这些实现良莠不齐,使用中还有细微的区别,请读者注意选择。另外,TensorFlow创造了图、会话、命名空间、PlaceHolder等诸多抽象概念,对普通用户来说较难理解。

凭借Google强大的推广能力,TensorFlow已经成为当今最火的深度学习框架,不完美但是最流行。因为各公司使用的框架不统一,所以我们有必要多学习几个流行框架作为知识储备,TensorFlow无疑是一个不错的选择。

03 MXNet

详解 6 大主流深度学习框架

MXNet是亚马逊首席科学家李沐带领团队开发的深度学习框架,拥有类似Theano和TensorFlow的数据流图,为多GPU架构提供了良好的配置,拥有类似Lasagne和Blocks的高级别模型构建块,可以在我们需要的任何硬件上运行(包括手机)。除了支持Python,MXNet同样提供了对 R、Julia、C++、Scala、Matlab、Go和Java的接口。

MXNet因其超强的分布式、内存/显存优化能力受到开发者的欢迎。同样的模型,MXNet往往占用的内存和显存更小,在分布式环境下,MXNet展现出了明显优于其他框架的扩展性能。

MXNet的缺点是推广力度不够、接口文档不完善。虽然MXNet版本快速迭代,但官方API文档却长时间未更新,导致新用户难以掌握新版本的MXNet,而老用户又需要查阅源码才能真正理解MXNet接口的用法。MXNet文档比较混乱,不太适合新手入门,但其分布性能强大,语言支持比较多,比较适合在云平台使用。

04 Keras

详解 6 大主流深度学习框架

Keras是一个高层神经网络API,使用Python编写,并将TensorFlow、Theano及CNTK作为后端。Keras为支持快速实验而生,能够快速实现开发者的想法。Keras目前是最容易上手的深度学习框架,它提供了一致且简洁的API,能够极大减少一般应用下用户的工作量。

相比于深度学习框架,Keras更像是一个深度学习接口,它构建于第三方框架之上。Keras的缺点很明显:过度封装导致丧失了灵活性。Keras最初作为Theano的高级API,后来增加了TensorFlow和CNTK作为后端。

为了屏蔽后端的差异性,Keras提供了一致的用户接口并做了层层封装,导致用户在新增操作或是获取底层的数据信息时过于困难。同时,过度封装也使得Keras的程序运行十分缓慢,许多Bug都隐藏于封装之中。在绝大多数场景下,Keras是本文介绍的所有框架中运行最慢的。

学习Keras十分容易,但是很快就会遇到瓶颈,因为它不够灵活。另外,在使用Keras的大多数时间里,用户主要是在调用接口,很难真正学习到深度学习的内容。

Keras的过度封装使其并不适合新手学习(无法理解深度学习的真正内涵),故不推荐。

05 PyTorch

详解 6 大主流深度学习框架

PyTorch是一个Python优先的深度学习框架,能够在强大的GPU加速基础上实现张量和动态神经网络。

PyTorch提供了完整的使用文档、循序渐进的用户指南,作者亲自维护PyTorch论坛,方便用户交流和解决问题。

Facebook人工智能研究院FAIR对PyTorch的推广提供了大力支持。作为当今排名前三的深度学习研究机构,FAIR的支持足以确保PyTorch获得持续开发、更新的保障,不至于像一些个人开发的框架那样昙花一现。如有需要,我们也可以使用Python软件包(如NumPy、SciPy和Cython)来扩展 PyTorch。

相对于TensorFlow,PyTorch的一大优点是它的图是动态的,而TensorFlow框架是静态图,不利于扩展。同时,PyTorch非常简洁,方便使用。本书选取PyTorch为主要的实现框架。

如果说TensorFlow的设计是“Make it complicated”,Keras的设计是“Make it complicated and hide it”,那么PyTorch的设计则真正做到了“Keep it simple,stupid”。

06 Caffe

详解 6 大主流深度学习框架

Caffe是基于C++编写的深度学习框架,作者是贾扬清,源码开放(具有Licensed BSD)并提供了命令行工具以及Matlab和Python接口。

Caffe一直是深度学习研究者使用的框架,很多研究人员在上面进行开发和优化,因而有了不少沉淀,因此Caffe也是流行的深度学习框架之一。尽管如此,Caffe也存在不支持多机、跨平台、可扩展性差等问题。初学使用Caffe还需要注意下面两个问题。

  • Caffe的安装过程需要大量的依赖库,因此涉及很多安装版本问题,初学者须多加注意。

  • 当用户要实现一个新的层,就需要用C++实现它的前向传播和反向传播代码,而如果想要新层运行在GPU上,则需要同时使用CUDA实现这一层的前向传播和反向传播。

Caffe2出自Facebook人工智能实验室与应用机器学习团队,贾杨清仍是主要贡献者之一。Caffe2在工程上做了很多优化,比如运行速度、跨平台、可扩展性等,它可以看作Caffe更细粒度的重构,但在设计上,Caffe2其实和TensorFlow更像。目前Caffe2代码已开源。

在工业界和学术界仍有很多人使用Caffe,而Caffe2的出现给我们提供了更多的选择。

关于作者:涂铭,资深数据架构师和人工智能技术专家,现就职于腾讯,曾就职于阿里。对大数据、自然语言处理、图像识别、Python、Java等相关技术有深入的研究,积累了丰富的实践经验。

金智勇,计算机视觉算法专家,在计算机视觉领域深耕12年。现就职于百度,曾就职于阿里和三星等知名高新技术企业。业务领域涵盖增强现实、人脸识别、图像美化、智能交通、工业质检等多个方向,具有丰富的算法研究与落地经验。

本文摘编自《深度学习与目标检测:工具、原理与算法》,经出版方授权发布。(ISBN:9787111690344)

详解 6 大主流深度学习框架

《深度学习与目标检测:工具、原理与算法》

点击上图了解及购买

转载请联系微信:DoctorData

推荐语:AI和计算机视觉专家在阿里、腾讯、百度经验总结,工具、原理、算法3维度快速入门目标检测,附源数据和代码。

详解 6 大主流深度学习框架

划重点👇

干货直达👇

  • 手把手教你搞定4类数据清洗操作

  • 建议收藏!数据中台行业发展概况及展望

  • 什么是元宇宙、新基建、赛博空间?7个最火科技名词解释,都在这里了

  • 详解6G系统数据治理方案的设计要点和原则

更多精彩👇

在公众号对话框输入以下关键词

查看更多优质内容!

读书 | 书单 | 干货 讲明白 | 神操作 | 手把手

大数据 | 云计算 | 数据库 | Python | 爬虫 | 可视化

AI | 人工智能 | 机器学习 | 深度学习 | NLP

5G | 中台 | 用户画像 数学 | 算法 数字孪生

据统计,99%的大咖都关注了这个公众号

👇文章来源地址https://www.toymoban.com/news/detail-403706.html

到了这里,关于详解 6 大主流深度学习框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深度学习框架-torch】torch.norm函数详解用法

    torch版本 1.6 dim是matrix norm 如果 input 是 matrix norm ,也就是维度大于等于2维,则 P值默认为 fro , Frobenius norm 可认为是与计算向量的欧氏距离类似 有时候为了比较真实的矩阵和估计的矩阵值之间的误差 或者说比较真实矩阵和估计矩阵之间的相似性,我们可以采用 Frobenius 范数。

    2024年02月10日
    浏览(37)
  • 主流机器学习框架及区别

    主流的机器学习框架包括: TensorFlow:是由Google开发的开源机器学习框架,最早用于深度神经网络的构建和训练,现已广泛应用于各种机器学习任务。TensorFlow具有高度灵活性和可扩展性,支持在不同平台上运行,并且拥有大量的文档和社区支持。 PyTorch:是由Facebook开发的动态

    2024年02月04日
    浏览(34)
  • MLP/CNN/RNN/Transformer主流深度学习模型的区别

    1. 多层感知机(MLP) 核心特征 : 结构 :MLP 是一种基本的前馈神经网络,包含一个输入层、一个或多个隐藏层以及一个输出层。每层由全连接的神经元组成。 用途 :适用于简单的分类和回归任务。 限制 :不适用于处理序列数据或图像数据,因为它不具备处理输入之间时间

    2024年04月26日
    浏览(31)
  • 【深度学习笔记】深度学习框架

    本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记,视频由网易云课堂与 deeplearning.ai 联合出品,主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习,视频的链接如下: 神经网络和深度学习 - 网易云课堂 也欢迎对神经网

    2024年02月14日
    浏览(28)
  • 深度学习框架教程:介绍一些流行的深度学习框架 (如TensorFlow、PyTorch等)

    目录 一、引言 二、TensorFlow 三、Keras 四、PyTorch 五、技巧与最佳实践

    2024年02月02日
    浏览(36)
  • 2023了,学习深度学习框架哪个比较好?

    都2023年,才来回答这个问题,自然毫无悬念地选择PyTorch,TensorFlow在大模型这一波浪潮中没有起死回生,有点惋惜,现在GLM、GPT、LLaMA等各种大模型都是基于PyTorch框架构建。这个事情已经水落石出。 不过呢,我觉得可以一起去回顾下,在AI框架发展的过程中,都沉陷了哪些技

    2024年02月16日
    浏览(33)
  • 深度学习 框架代码(草稿)

    train_sample.py 和 test.py 见文章: 深度学习-AlexNet代码实现 用 parser 方便服务器中的终端操作 第三个代码将 mac的 mps 和 cuda 混合了,有点问题,看下代码整体思想就行,不用去跑 因为我的电脑是 mac 的 mps,还没找到代码的替代方法 可以直接用上面那篇文章中的 train_sample.py 只要

    2024年02月07日
    浏览(33)
  • (五)、深度学习框架源码编译

    源码构建: 源码构建是通过获取软件的源代码,然后在本地编译生成可执行程序或库文件的过程。这种方法允许根据特定需求进行配置和优化,但可能需要较长的时间和较大的资源来编译源代码。 预构建: 预构建是通过从开发者或官方网站下载预先编译好的可执行程序或库

    2024年02月12日
    浏览(27)
  • 常见的深度学习框架

    框架 优点 缺点 TensorFlow - 由Google开发和维护,社区庞大,学习资源丰富 - 具备优秀的性能表现,支持大规模分布式计算 - 支持多种编程语言接口,易于使用 - 提供了可视化工具TensorBoard,可用于调试和可视化模型 - 底层架构复杂,操作较为繁琐 - 不支持动态图,调试和修改模

    2024年02月02日
    浏览(25)
  • 深度学习开源框架

    深度学习框架是用于构建和训练深度学习模型的软件库或工具,它可以提供清晰的、高级的编程接口以及预训练的模型,使得开发者更加容易地设计和实现深度学习模型。以下是一些常见的深度学习框架: TensorFlow: 由Google Brain团队开发的开源库,适合多种应用,并在硬件加速

    2024年02月16日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包