0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你最看好哪个深度学习框架呢?

jmiy_worldofai 来源:未知 作者:胡薇 2018-09-21 17:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

开源的深度学习神经网络正步入成熟,而现在有许多框架具备为个性化方案提供先进的机器学习人工智能的能力。那么如何决定哪个开源框架最适合你呢?本文试图通过对比度学习各大框架的优缺点,从而为各位读者提供一个参考。

现在的许多机器学习框架都可以在图像识别、手写识别、视频识别、语音识别、目标识别和自然语言处理等许多领域大展身手,但却并没有一个完美的深度神经网络能解决你的所有业务问题。所以,本文希望下面的图表和讲解能够提供直观方法,帮助读者解决业务问题。

下图总结了在 GitHub 中最受欢迎的开源深度学习框架排名,该排名是基于各大框架在 GitHub 里的收藏数,这个数据由 Mitch De Felice 在 2017 年 5 月初完成。

TensorFlow

地址:https://www.tensorflow.org/

TensorFlow 最开始是由谷歌一个称之为 DistBelief V2 的库发展而来,它是一个公司内部的深度神经网络库,隶属于谷歌大脑项目。有一些人认为 TensorFlow 是由 Theano 彻底重构而来。

谷歌开源 TensorFlow 后,立即吸引了一大批开发爱好者。TensorFlow 可以提供一系列的能力,例如图像识别、手写识别、语音识别、预测以及自然语言处理等。2015 年 11 月 9 号,TensorFlow 在 Apache 2.0 协议下开源发布。

TensorFlow 1.0 版本已于 2017 年 2 月 15 日发布,这个版本是之前 8 个版本的优化改进版,其致力于解决 Tensorflow 之前遇到的一系列问题以及完善一些核心能力。TensorFlow 获得成功的因素有:

TensorFlow 提供了如下工具:TensorFlow Serving:可以保持相同的服务器架构和 API,使得部署新算法和实验变 得简 单。TensorFlow Serving 提供了与 TensorFlow 模型开箱即用的整合,但同时还能很 容易扩展到其它类型的模型和数据。

TensorFlow 编程接口支持 PythonC++。随着 1.0 版本的公布,Java、Go、R 和 Haskell API 的 alpha 版本也将被支持。此外,TensorFlow 还可在谷歌云和亚马孙云中运行。

随着 0.12 版本的发行,TensorFlow 将支持 Windows 7、 Windows 10 和 Server 2016。由于 TensorFlow 使用 C++ Eigen 库,所以库可在 ARM 架构上编译和优化。这也就意味着你可以在各种服务器和移动设备上部署你的训练模型,而无需执行单独的模型解码器或者加载 Python 解释器。

TensorFlow 支持细粒度的网格层,而且允许用户在无需用低级语言实现的情况下构建新的复杂的层类型。子图执行操作允许你在图的任意边缘引入和检索任意数据的结果。这对调试复杂的计算图模型很有帮助。

分布式 TensorFlow(Distributed TensorFlow)被加进了 0.8 版本,它允许模型并行,这意味着模型的不同部分可在不同的并行设备上被训练。

自 2016 年 3 月,斯坦福大学、伯克利大学、多伦多大学和 Udacity 都将这个框架作为一个免费的大规模在线开放课程进行教授。

TensorFlow 的缺点如下:

TensorFlow 的每个计算流都必须构造为一个静态图,且缺乏符号性循环(symbolic loops),这会带来一些计算困难。

没有对视频识别很有用的三维卷积(3-D convolution)。

尽管 TensorFlow 现在比起始版本(v0.5)快了 58 倍,但在执行性能方面依然落后于竞争对手。

Caffe

地址:http://caffe.berkeleyvision.org/

Caffe 是贾扬清的杰作,目前他在 Facebook AI 平台担任首席工程师。Caffe 可能是自 2013 年底以来第一款主流的工业级深度学习工具包。正因为 Caffe 优秀的卷积模型,它已经成为计算机视觉界最流行的工具包之一,并在 2014 年的 ImageNet 挑战赛中一举夺魁。Caffe 遵循 BSD 2-Clause 协议。

Caffe 的快速使其完美应用于实验研究和商业部署。Caffe 可在英伟达单个 K40 GPU 上每天处理 6000 万张图像。这大概是 1 毫秒预测一张图片,4 毫秒学习一张图片的速度,而且最新的版本处理速度会更快。

Caffe 基于 C++,因此可在多种设备上编译。它跨平台运行,并包含 Windows 端口。Caffe 支持 C++、Matlab 和 Python 编程接口。Caffe 拥有一个庞大的用户社区,人们在其中为被称为「Model Zoo(https://github.com/BVLC/caffe/wiki/Model-Zoo)」的深度网络库做贡献。AlexNet 和 GoogleNet 就是社群用户构建的两个流行网络。

虽然 Caffe 在视频识别领域是一个流行的深度学习网络,但是 Caffe 却不能像 TensorFlow、CNTK 和 Theano 那样支持细粒度网络层。构建复杂的层类型必须以低级语言完成。由于其遗留架构,Caffe 对循环网络和语言建模的支持总体上很薄弱。

Caffe2

地址:https://caffe2.ai/

目前,贾扬清和他在 Facebook 的团队正在开发新一代框架 Caffe2。今年 4 月 18 日,Facebook 开源了 Caffe2。Caffe 2 与 Caffe 的区别是什么?Caffe2 更注重模块化,在移动端、大规模部署上表现卓越。如同 TensorFlow,Caffe2 使用 C++ Eigen 库,支持 ARM 架构。

用一个实用脚本,Caffe 上的模型可轻易地被转变到 Caffe2 上。Caffe 设计的选择使得它处理视觉类型的难题时很完美。Caffe2 延续了它对视觉类问题的支持,且增加了对自然语言处理、手写识别、时序预测有帮助的 RNN 和 LSTM 支持。

期待不久之后能看到 Caffe 2 超越 Caffe,就像它宣称的那样在深度学习社区流行。

在英伟达推出 Volta 架构的第一块加速卡 Tesla V100 后,Caffe 的开发者第一时间展示了 Tesla V100 在 Caffe2 上运行 ResNet-50 的评测。数据显示在新框架和新硬件的配合下,模型每秒钟可以处理 4100 张图片。

链接:

https://caffe2.ai/blog/2017/05/10/caffe2-adds-FP16-training-support.html

CNTK

链接:https://github.com/Microsoft/CNTK/wiki

微软的 CNTK(Microsoft Cognitive Toolkit)最初是面向语音识别的框架。CNTK 支持 RNN 和 CNN 类型的网络模型,从而在处理图像、手写字体和语音识别问题上,它是很好的选择。使用 Python 或 C++ 编程接口,CNTK 支持 64 位的 Linux 和 Windows 系统,在 MIT 许可证下发布。

与 TensorFlow 和 Theano 同样,CNTK 使用向量运算符的符号图(symbolic graph)网络,支持如矩阵加 / 乘或卷积等向量操作。此外,像 TensorFlow 和 Theano 一样,CNTK 有丰富的细粒度的网络层构建。构建块(操作)的细粒度使用户不需要使用低层次的语言(如 Caffe)就能创建新的复杂的层类型。

CNTK 也像 Caffe 一样基于 C++ 架构,支持跨平台的 CPU/GPU 部署。CNTK 在 Azure GPU Lab 上显示出最高效的分布式计算性能。目前,CNTK 不支持 ARM 架构,这限制了其在移动设备上的功能。

MXNet

链接:http://mxnet.io/

MXNet(发音为 mix-net)起源于卡内基梅隆大学和华盛顿大学的实验室。MXNet 是一个全功能、可编程和可扩展的深度学习框架,支持最先进的深度学习模型。MXNet 支持混合编程模型(命令式和声明式编程)和多种编程语言的代码(包括 Python、C++、R、Scala、Julia、Matlab 和 JavaScript)。2017 年 1 月 30 日,MXNet 被列入 Apache Incubator 开源项目。

MXNet 支持深度学习架构,如卷积神经网络(CNN)、循环神经网络(RNN)和其包含的长短时间记忆网络(LTSM)。该框架为图像、手写文字和语音的识别和预测以及自然语言处理提供了出色的工具。有些人称 MXNet 是世界上最好的图像分类器。

MXNet 具有可扩展的强大技术能力,如 GPU 并行和内存镜像、快速编程器开发和可移植性。此外,MXNet 与 Apache Hadoop YARN(一种通用分布式应用程序管理框架)集成,使 MXNet 成为 TensorFlow 有力的竞争对手。

MXNet 不仅仅只是深度网络框架,它的区别在于支持生成对抗网络(GAN)模型。该模型启发自实验经济学方法的纳什均衡。

Torch

链接:http://torch.ch/

Torch 由 Facebook 的 Ronan Collobert 和 Soumith Chintala,Twitter 的 Clement Farabet(现任职于英伟达),以及 Google DeepMind 的 Koray Kavukcuoglu 共同开发。很多科技巨头(如 Facebook、Twitter 和英伟达)都使用定制版的 Torch 用于人工智能研究,这大大促进了 Torch 的开发。Torch 是 BSD 3 协议下的开源项目。然而,随着 Facebook 对 Caffe 2 的研究,以及其对移动设备的支持,Caffe 2 正成为主要的深度学习框架。

Torch 的编程语言为 Lua。Lua 不是主流语言,在开发人员没有熟练掌握 Lua 之前,使用 Torch 很难提高开发的整体生产力。

Torch 缺乏 TensorFlow 的分布式应用程序管理框架,也缺乏 MXNet 和 Deeplearning4J 对 YARN 的支持。缺乏多种编程语言的 API 也限制了开发人员。

PyTorch

地址:http://pytorch.org/

PyTorch 由 Adam Paszke、Sam Gross 与 Soumith Chintala 等人牵头开发,其成员来自 Facebook FAIR 和其他多家实验室。它是一种 Python 优先的深度学习框架,在今年 1 月被开源,提供了两种高层面的功能:

使用强大的 GPU 加速的 Tensor 计算(类似 numpy)。构建于基于 tape 的 autograd 系统的深度神经网络

该框架结合了 Torch7 高效灵活的 GPU 加速后端库与直观的 Python 前端,它的特点是快速成形、代码可读和支持最广泛的深度学习模型。如有需要,你可以复用你最喜欢的 Python 软件包(如 numpy、scipy 和 Cython)来扩展 PyTorch。该框架因为其灵活性和速度,在推出以后迅速得到了开发者和研究人员的青睐。随着 GitHub 上越来越多代码的出现,PyTorch 作为新框架缺乏资源的问题已经得以缓解。

Deeplearning4J

地址:https://deeplearning4j.org/

Deeplearning4J(DL4J)是用 Java 和 Scala 编写的 Apache 2.0 协议下的开源、分布式神经网络库。DL4J 最初由 SkyMind 公司的 Adam Gibson 开发,是唯一集成了 Hadoop 和 Spark 的商业级深度学习网络,并通过 Hadoop 和 Spark 协调多个主机线程。DL4J 使用 Map-Reduce 来训练网络,同时依赖其它库来执行大型矩阵操作。

DL4J 框架支持任意芯片数的 GPU 并行运行(对训练过程至关重要),并支持 YARN(Hadoop 的分布式应用程序管理框架)。DL4J 支持多种深度网络架构:RBM、DBN、卷积神经网络(CNN)、循环神经网络(RNN)、RNTN 和长短时间记忆网络(LTSM)。DL4J 还对矢量化库 Canova 提供支持。

DL4J 使用 Java 语言实现,本质上比 Python 快。在用多个 GPU 解决非平凡图像(non-trivial image)识别任务时,它的速度与 Caffe 一样快。该框架在图像识别、欺诈检测和自然语言处理方面的表现出众。

Theano

地址:http://deeplearning.net/software/theano/

Theano 由蒙特利尔大学算法学习人工智能实验室(MILA)维护。以 Theano 的创始人 Yoshua Bengio 为首,该实验室是深度学习研究领域的重要贡献者,拥有约 30 至 40 名学生和教师。Theano 支持快速开发高效的机器学习算法,在 BSD 协议下发布。

Theano 的架构如同一个黑箱;整个代码库和接口使用 Python,其中 C/CUDA 代码被打包成 Python 字符串。这使得开发人员很难导航(navigate)、调试和重构。

Theano 开创了将符号图用于神经网络编程的趋势。Theano 的符号式 API 支持循环控制(即 scan),这使得实现 RNN 容易且高效。

Theano 缺乏分布式应用程序管理框架,只支持一种编程开发语言。Theano 是很好的学术研究工具,在单个 CPU 上运行的效率比 TensorFlow 更有效。然而,在开发和支持大型分布式应用程序时,使用 Theano 可能会遇到挑战。

开源 vs. 非开源

随着深度学习的不断发展,我们必将看到 TensorFlow、Caffe 2 和 MXNet 之间的不断竞争。另一方面,软件供应商也会开发具有先进人工智能功能的产品,从数据中获取最大收益。风险:你将购买非开源的人工智能产品还是使用开源框架?有了开源工具,确定最适合的深度学习框架也是两难问题。在非开源产品中,你是否准备了退出策略?人工智能的收益会随着工具的学习能力的进步而上升,所以看待这些问题都需要用长远的观点。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1813

    文章

    49741

    浏览量

    261559
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123911

原文标题:从 TensorFlow 到 PyTorch:九大深度学习框架哪款最适合你?

文章出处:【微信号:worldofai,微信公众号:worldofai】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课(11大系列课程,共5000+分钟)

    (第10系列)、YOLOv8-Tiny工业优化版(第9系列),满足产线端设备算力限制,模型推理速度提升300%。 LabVIEW生态整合 作为工业自动化领域主流开发环境,LabVIEW与深度学习的集成
    发表于 12-04 09:28

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战可(11大系列课程,共5000+分钟)

    领域主流开发环境,LabVIEW与深度学习的集成一直是行业痛点。课程提供独家开发的labview调用框架,实现从模型训练(Python)到部署(LabVIEW)的无缝衔接,已成功应用于DIP、AOI
    发表于 12-03 13:50

    如何深度学习机器视觉的应用场景

    深度学习视觉应用场景大全 工业制造领域 复杂缺陷检测:处理传统算法难以描述的非标准化缺陷模式 非标产品分类:对形状、颜色、纹理多变的产品进行智能分类 外观质量评估:基于学习的外观质量标准判定 精密
    的头像 发表于 11-27 10:19 55次阅读

    觉得哪个软件写verilog体验最好?有什么优势?

    觉得哪个软件写verilog体验最好?有什么优势?请在评论区留言跟大家分享一下吧。
    发表于 11-10 07:47

    如何在机器视觉中部署深度学习神经网络

    图 1:基于深度学习的目标检测可定位已训练的目标类别,并通过矩形框(边界框)对其进行标识。 在讨论人工智能(AI)或深度学习时,经常会出现“神经网络”、“黑箱”、“标注”等术语。这些概
    的头像 发表于 09-10 17:38 693次阅读
    如何在机器视觉中部署<b class='flag-5'>深度</b><b class='flag-5'>学习</b>神经网络

    深度学习对工业物联网有哪些帮助

    深度学习作为人工智能的核心分支,通过模拟人脑神经网络的层级结构,能够自动从海量工业数据中提取复杂特征,为工业物联网(IIoT)提供了从数据感知到智能决策的全链路升级能力。以下从技术赋能、场景突破
    的头像 发表于 08-20 14:56 760次阅读

    自动驾驶中Transformer大模型会取代深度学习吗?

    [首发于智驾最前沿微信公众号]近年来,随着ChatGPT、Claude、文心一言等大语言模型在生成文本、对话交互等领域的惊艳表现,“Transformer架构是否正在取代传统深度学习”这一话题一直被
    的头像 发表于 08-13 09:15 3918次阅读
    自动驾驶中Transformer大模型会取代<b class='flag-5'>深度</b><b class='flag-5'>学习</b>吗?

    大模型时代的深度学习框架

    作者:算力魔方创始人/英特尔创新大使刘力 在 CNN时代 ,AI模型的参数规模都在百万级别,仅需在单张消费类显卡上即可完成训练。例如,以业界知名的CNN模型: ResNet50 为例,模型参数量是约为 25.63M,在ImageNet1K数据集上,使用单张消费类显卡 RTX-4090只需大约35~40个小时 ,即可完成ResNet50模型的预训练。在 大模型时代 ,由于大模型参数规模庞大,无法跟CNN时代的小模型一样在单张显卡上完成训练,需要构建多张AI加速卡的集群才能完成AI大模型的预训练
    的头像 发表于 04-25 11:43 659次阅读
    大模型时代的<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>框架</b>

    百度飞桨框架3.0正式版发布

    大模型训练成本高?推理效率低?硬件适配难? 4月1日,百度发布 飞桨框架3.0正式版 !五大特性专为大模型设计。 作为大模型时代的Infra“基础设施”,深度学习框架的重要性愈发凸显,
    的头像 发表于 04-02 19:03 1041次阅读
    百度飞桨<b class='flag-5'>框架</b>3.0正式版发布

    嵌入式AI技术之深度学习:数据样本预处理过程中使用合适的特征变换对深度学习的意义

      作者:苏勇Andrew 使用神经网络实现机器学习,网络的每个层都将对输入的数据做一次抽象,多层神经网络构成深度学习框架,可以深度理解数
    的头像 发表于 04-02 18:21 1284次阅读

    如何排除深度学习工作台上量化OpenVINO™的特定层?

    无法确定如何排除要在深度学习工作台上量化OpenVINO™特定层
    发表于 03-06 07:31

    灵汐科技开源类脑深度学习应用开发平台BIDL

    富案例等问题,一直制约着其广泛应用。为了突破这一瓶颈,灵汐科技联合脑启社区正式宣布开源类脑深度学习应用开发平台BIDL(Brain-inspired Deep Learning)。
    的头像 发表于 03-05 09:13 1486次阅读
    灵汐科技开源类脑<b class='flag-5'>深度</b><b class='flag-5'>学习</b>应用开发平台BIDL

    军事应用中深度学习的挑战与机遇

    人工智能尤其是深度学习技术的最新进展,加速了不同应用领域的创新与发展。深度学习技术的发展深刻影响了军事发展趋势,导致战争形式和模式发生重大变化。本文将概述
    的头像 发表于 02-14 11:15 819次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Backpropagation Neural Network
    的头像 发表于 02-12 15:15 1341次阅读

    三元锂电池和磷酸铁锂电池哪个好?看完这篇就懂了!

    三元锂电池和磷酸铁锂电池哪个好?看完这篇就懂了!
    的头像 发表于 01-17 16:53 3220次阅读