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

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

3天内不再提示

八种主流深度学习框架的介绍

龙腾亚太 来源:龙腾亚太 作者:龙腾亚太 2022-04-26 18:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

导读:近几年随着深度学习算法的发展,出现了许多深度学习框架。这些框架各有所长,各具特色。常用的开源框架有TensorFlow、Keras、Caffe、PyTorch、Theano、CNTK、MXNet、PaddlePaddle、Deeplearning4j、ONNX等。

框架名称:TensorFlow

主要维护方:Google

支持的语言:C++/Python/Java/R 等

框架名称:Keras

主要维护方:Google

支持的语言:Python/R

框架名称:Caffe

主要维护方:BVLC

支持的语言:C++/Python/Matlab

框架名称:PyTorch

主要维护方:Facebook

支持的语言:C/C++/Python

框架名称:Theano

主要维护方:UdeM

支持的语言:Python

框架名称:CNTK

主要维护方:Microsoft

支持的语言:C++/Python/C#/.NET/Java/R

框架名称:MXNet

主要维护方:DMLC

支持的语言:C++/Python/R等

框架名称:PaddlePaddle

主要维护方:Baidu

支持的语言:C++/Python

框架名称:Deeplearning4j

主要维护方:Eclipse

支持的语言:Java/Scala等

框架名称:ONNX

主要维护方:Microsoft/ Facebook

支持的语言:Python/R

下面开始对各框架进行概述,让读者对各个框架有个简单的认知,具体的安装及使用方法不在本文赘述。

01 TensorFlow

谷歌的TensorFlow可以说是当今最受欢迎的开源深度学习框架,可用于各类深度学习相关的任务中。TensorFlow = Tensor + Flow,Tensor就是张量,代表N维数组;Flow即流,代表基于数据流图的计算。

TensorFlow是目前深度学习的主流框架,其主要特性如下所述。

TensorFlow支持Python、JavaScript、C ++、Java、Go、C#、Julia和R等多种编程语言。

TensorFlow不仅拥有强大的计算集群,还可以在iOSAndroid等移动平台上运行模型。

TensorFlow编程入门难度较大。初学者需要仔细考虑神经网络的架构,正确评估输入和输出数据的维度和数量。

TensorFlow使用静态计算图进行操作。也就是说,我们需要先定义图形,然后运行计算,如果我们需要对架构进行更改,则需要重新训练模型。选择这样的方法是为了提高效率,但是许多现代神经网络工具已经能够在学习过程中改进,并且不会显著降低学习速度。在这方面,TensorFlow的主要竞争对手是PyTorch。

RStudio提供了R与TensorFlow的API接口,RStudio官网及GitHub上也提供了TensorFlow扩展包的学习资料

02 Keras

Keras是一个对小白用户非常友好且简单的深度学习框架。如果想快速入门深度学习, Keras将是不错的选择。

Keras是TensorFlow高级集成API,可以非常方便地和TensorFlow进行融合。Keras在高层可以调用TensorFlow、CNTK、Theano,还有更多优秀的库也在被陆续支持中。Keras的特点是能够快速搭建模型,是高效地进行科学研究的关键。

Keras的基本特性如下:

高度模块化,搭建网络非常简洁;

API简单,具有统一的风格;

易扩展,易于添加新模块,只需要仿照现有模块编写新的类或函数即可。

RStudio提供了R与Keras的API接口,RStudio的官网及GitHub上也提供了Keras扩展包的学习资料。

03 Caffe

Caffe是由AI科学家贾扬清在加州大学伯克利分校读博期间主导开发的,是以C++/CUDA代码为主的早期深度学习框架之一,比TensorFlow、MXNet、PyTorch等都要早。Caffe需要进行编译安装,支持命令行、Python和Matlab接口,单机多卡、多机多卡等都可以很方便使用。

Caffe的基本特性如下。

以C++/CUDA/Python代码为主,速度快,性能高。

工厂设计模式,代码结构清晰,可读性和可拓展性强。

支持命令行、Python和Matlab接口,使用方便。

CPUGPU之间切换方便,多GPU训练方便。

工具丰富,社区活跃。

同时,Caffe的缺点也比较明显,主要包括如下几点。

源代码修改门槛较高,需要实现正向/反向传播。

不支持自动求导。

不支持模型级并行,只支持数据级并行。

不适合非图像任务。

虽然Caffe已经提供了Matlab和Python接口,但目前不支持R语言。caffeR为Caffe提供了一系列封装功能,允许用户在R语言上运行Caffe,包括数据预处理和网络设置,以及监控和评估训练过程。该包还没有CRAN版本,感兴趣的读者可以在GitHub找到caffeR包的安装及使用的相关内容。

04 PyTorch

PyTorch是Facebook团队于2017年1月发布的一个深度学习框架,虽然晚于TensorFlow、Keras等框架,但自发布之日起,其受到的关注度就在不断上升,目前在GitHub上的热度已经超过Theano、Caffe、MXNet等框架。

PyTroch主要提供以下两种核心功能:

支持GPU加速的张量计算;

方便优化模型的自动微分机制。

PyTorch的主要优点如下。

简洁易懂:PyTorch的API设计相当简洁一致,基本上是tensor、autograd、nn三级封装,学习起来非常容易。

便于调试:PyTorch采用动态图,可以像普通Python代码一样进行调试。不同于TensorFlow,PyTorch的报错说明通常很容易看懂。

强大高效:PyTorch提供了非常丰富的模型组件,可以快速实现想法。

05 Theano

Theano诞生于2008年,由蒙特利尔大学的LISA实验室开发并维护,是一个高性能的符号计算及深度学习框架。它完全基于Python,专门用于对数学表达式的定义、求值与优化。得益于对GU的透明使用,Theano尤其适用于包含高维度数组的数学表达式,并且计算效率比较高。

因Theano出现的时间较早,后来涌现出一批基于Theano的深度学习库,并完成了对Theano的上层封装以及功能扩展。在这些派生库中,比较著名的就是本书要学习的Keras。Keras将一些基本的组件封装成模块,使得用户在编写、调试以及阅读网络代码时更加清晰。

06 CNTK

CNTK(Microsoft Cognitive Toolkit)是微软开源的深度学习工具包,它通过有向图将神经网络描述为一系列计算步骤。在有向图中,叶节点表示输入值或网络参数,其他节点表示其输入上的矩阵运算。

CNTK允许用户非常轻松地实现和组合流行的模型,包括前馈神经网络(DNN)、卷积神经网络(CNN)和循环神经网络(RNN、LSTM)。与目前大部分框架一样,CNTK实现了自动求导,利用随机梯度下降方法进行优化。

CNTK的基本特性如下。

CNTK性能较好,按照其官方的说法,它比其他的开源框架性能都要好。

适合做语音任务,CNTK本就是微软语音团队开源的,自然更适合做语音任务,便于在使用RNN等模型以及时空尺度时进行卷积。

微软开发的CNTK-R包提供了R与CNTK的API接口。

07 MXNet

MXNet框架允许混合符号和命令式编程,以最大限度地提高效率和生产力。MXNet的核心是一个动态依赖调度程序,可以动态地自动并行化符号和命令操作。其图形优化层使符号执行更快,内存效率更高。

MXNet的基本特性如下。

灵活的编程模型:支持命令式和符号式编程模型。

多语言支持:支持C++、Python、R、Julia、JavaScript、Scala、Go、Perl等。事实上,它是唯一支持所有R函数的构架。

本地分布式训练:支持在多CPU/GPU设备上的分布式训练,使其可充分利用云计算的规模优势。

性能优化:使用一个优化的C++后端引擎实现并行I/O和计算,无论使用哪种语言都能达到最佳性能。

云端友好:可直接与S3、HDFS和Azure兼容。

08 ONNX

ONNX(Open Neural Network eXchange,开放神经网络交换)项目由微软、亚马逊、Facebook和IBM等公司共同开发,旨在寻找呈现开放格式的深度学习模型。ONNX简化了在人工智能不同工作方式之间传递模型的过程,具有各种深度学习框架的优点。

ONNX的基本特性如下。

ONNX使模型能够在一个框架中进行训练并转移到另一个框架中进行预测。

ONNX模型目前在Caffe2、CNTK、MXNet和PyTorch中得到支持,并且还有与其他常见框架和库的连接器

onnx-r包提供了R与ONNX的API接口。

关于作者:谢佳标,资深AI技术专家和数据挖掘专家,拥有超过14年的技术研发和管理经验。精通Python和Keras等深度学习框架,在数据挖掘和人工智能技术领域有非常深厚的积累。连续6年(2017~2022年)被微软评为数据科学和AI方向MVP。资深R语言技术专家,“中国现场统计研究会大数据统计分会”第一届理事。历届中国R语言和数据科学大会特邀演讲嘉宾,受邀在国内多所高校举行以数据主题的公益讲座。

审核编辑:符乾江

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

    关注

    73

    文章

    5590

    浏览量

    123911
  • 迁移学习
    +关注

    关注

    0

    文章

    74

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

    图 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>

    实时多线程VSLAM框架vS-Graphs介绍

    针对现有VSLAM系统语义表达不足、地图可解释性差的问题,本文提出vS-Graphs,一实时多线程VSLAM框架。该方案显著提升了重建地图的语义丰富度、可解释性及定位精度。实验表明
    的头像 发表于 04-19 14:07 731次阅读
    一<b class='flag-5'>种</b>实时多线程VSLAM<b class='flag-5'>框架</b>vS-Graphs<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次阅读

    用树莓派搞深度学习?TensorFlow启动!

    介绍本页面将指导您在搭载64位Bullseye操作系统的RaspberryPi4上安装TensorFlow。TensorFlow是一个专为深度学习开发的大型软件库,它消耗大量资源。您可以在
    的头像 发表于 03-25 09:33 964次阅读
    用树莓派搞<b class='flag-5'>深度</b><b class='flag-5'>学习</b>?TensorFlow启动!

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

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

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

    ,并广泛介绍深度学习在两个主要军事应用领域的应用:情报行动和自主平台。最后,讨论了相关的威胁、机遇、技术和实际困难。主要发现是,人工智能技术并非无所不能,需要谨慎应用,同时考虑到其局限性、网络安全威胁以及
    的头像 发表于 02-14 11:15 819次阅读

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

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

    AI开发框架集成介绍

    随着AI应用的广泛深入,单一框架往往难以满足多样化的需求,因此,AI开发框架的集成成为了提升开发效率、促进技术创新的关键路径。以下,是对AI开发框架集成的介绍,由AI部落小编整理。
    的头像 发表于 01-07 15:58 934次阅读