【机器学习】深度学习框架是什么?有哪些?如何选择?

本文适合新入门小白了解深度学习框架基础,也适合刚入门选手思考各种深度学习框架。


一、深度学习框架是什么?

深度学习框架像Caffe、tensorflow,这些是深度学习的工具,简单来说就是库,编程时需要import caffe、import tensorflow。
作一个简单的比喻,一套深度学习框架就是这个品牌的一套积木,各个组件就是某个模型或算法的一部分,你可以自己设计如何使用积木去堆砌符合你数据集的积木。

二、深度学习框架有哪些?

在这里插入图片描述

谷歌:TensorFlow
Facebook:pytorch
百度:Paddle Paddle
微软:CNTK
亚马逊的AWS:MXNet
华为:mindspore
一流科技:oneflow
旷世:MegEngine
清华:Jittor


三、如何选择合适的框架?

每种框架都有其优缺点,选择的时候更加需要根据自身业务的实际需求:例如需要用到对时间序列分析的,那么就会使用循环神经网络RNN,而Caffe、MXNet虽然对图像卷积处理非常友善但缺乏循环神经网络。Google的TensorFlow支持其他机器学习算法,还支持增强学习Reinforcement learning算法。

在这里插入图片描述

1. TensorFlow

开发语言:
基于python编写,通过C/C++引擎加速,是Google开源的第二代深度学习框架。

编程语言:
Python是处理TensorFlow的最方便的客户端语言。不过,JavaScript、C++、Java、Go、C#和Julia也提供了实验性的交互界面。

优点:

  1. 处理循环神经网RNN非常友好。其用途不止于深度学习,还可以支持增强学习和其他算法。
  2. 内部实现使用了向量运算的符号图方法,使用图graph来表示计算任务,使新网络的指定变得相当容易,支持快速开发。TF使用静态计算图进行操作。也就是说,我们首先定义图,然后运行计算,如果需要对架构进行更改,我们将重新训练模型。TF选择这种方法是为了提高效率,但是许多现代神经网络工具能够在不显著降低学习速度的情况下,同时兼顾到在学习过程中进行改进。在这方面,TensorFlow的主要竞争对手是Pythorch。

缺点:

  1. 目前TensorFlow还不支持“内联(inline)”矩阵运算,必须要复制矩阵才能对其进行运算,复制庞大的矩阵会导致系统运行效率降低,并占用部分内存。
  2. TensorFlow不提供商业支持,仅为研究者提供的一种新工具,因此公司如果要商业化需要考虑开源协议问题。

2. PyTorch

开发语言:
Facebook用Lua编写的开源计算框架,支持机器学习算法。Tensorflow之后深入学习的主要软件工具是PyTorch。
Facebook于2017年1月开放了Torch的Python API ― PyTorch源代码。

优点:

  1. 具有较好的灵活性和速度。与TensorFlow不同,PyTorch库使用动态更新的图形进行操作,这意味着你可以在这个过程中做出改变。实现并优化了基本计算单元,可以很简单地在此基础上实现自己的算法,不用浪费精力在计算优化上面。
  2. 支持动态计算图,能处理长度可变的输入和输出,这尤其适用于循环神经网络RNN的应用。
  3. 在PyTorch中可以使用标准调试器,例如pdb或PyCharm。
  4. Pytorch训练神经网络的过程简单明了。
  5. Pythorch支持数据并行和分布式学习模型,并包含许多预先训练好的模型。

缺点:

  1. Pythorch更适合小项目和原型设计。说到跨平台解决方案,TensorFlow看起来更合适。但是,值得注意的是,对于同样的任务,用户可以使用2017年推出的Caffe2移动框架。

3. Caffe 1.0

开发语言:
2013年底由UC Berkely的贾扬清基于C和C++开发的深度学习框架,第一个主流的工业级深度学习工具。

优点:

  1. 具有非常出色的卷积神经网络实现,尤其在13年至16年期间大部分与视觉有关的深度学习论文都采用了caffe框架。至今为止Caffe在计算机视觉领域依然是最流行的工具包。

缺点:

  1. 由于开发早和历史遗留问题,其架构的缺点是不够灵活。
  2. 缺乏对循环网络RNN和语言建模的支持,因此Caffe不适用于文本、声音或时间序列数据等其他类型的深度学习应用。

4. Theano

开发语言:
Theano是深度学习框架中的元老,使用Python编写。Theano派生出了大量Python深度学习库,最著名的包括Blocks和Keras。

优点:

  1. 最大特点是非常的灵活,适合做学术研究的实验。
  2. 对递归网络和语言建模有较好的支持。

缺点:

  1. 速度较慢。

5. MXNet

开发语言:
MXNet主要由C/C++编写。MXNet是16年新兴的深度学习框架,因此大量借鉴了Caffe的优缺点。

编程语言:
提供多种API的机器学习框架,面向R、Python和Julia等语言,目前已被亚马逊云服务作为其深度学习的底层框架。
这个框架从一开始就支持大量的语言(C++、Python、R、Julia、JavaScript、Scala、Go,甚至Perl)。

优点:

  1. 最主要的特点是分布式机器学习通用工具包DMLC 的重要组成部分,因此其分布式能力较强。值得强调的是这个框架在多个GPU和多台机器上非常有效地并行。
  2. MXNet还注重灵活性和效率。
  3. 文档也非常的详细。
  4. 强调提高内存使用的效率,甚至能在智能手机上运行诸如图像识别等任务。
  5. 支持多个GPU(优化计算和快速上下文切换)。
  6. 干净且易于维护的代码(Python、R、Scala和其他API)。
  7. 快速解决问题的能力(对正在深入学习的新手来说至关重要)。

缺点:

  1. 与Caffe一样,缺乏对循环神经网络RNN的支持,相对比使用JAVA实现的NL4J在分布式方面没有JAVA方便。

6. Keras

Keras 是一个基于Theano和TensorFlow的深度学习库,使用TensorFlow、Theano或CNTK的捷径就是是高级Keras shell。
由于受到深度学习元老框架Torch的启发,拥有较为直观的API,有望成为未来开发神经网络的标准Python API。

优点:

  1. 除了Tensorflow之外,Keras还可以作为其他流行的低级库(如Theano和CNTK)之上的高级API。
  2. 在Keras中,原型制作非常方便。用户在Keras中创建大量的深度学习模型被简化为单行函数。凡事有利有弊,这种策略会使得Keras的可配置性不如底层框架。
  3. 对于那些刚刚起步学习深度学习的小白来说,Keras可能是最好的深度学习框架。它是学习和复现简单概念的理想选择,小白能够通过使用Keras理解各种模型和学习过程的本质。
  4. Keras是一个编写精美的API。API的功能特性可以完全帮助用户构建更多新奇复杂的应用。同时,Keras不会阻止对底层框架的访问。
  5. Keras编写的代码更加可读和简洁。
  6. 使用Python生成器的Keras模型序列化/反序列化API、回调和数据流已经非常成熟。

缺点:

  1. 灵活性低,Keras的可配置性不如底层框架。

顺便说一句:
Tensorflow位于较低级别:这是像MXNet、Theano和Pythorch这样的框架所在的位置。这是实现数学运算(如广义矩阵矩阵乘法)和神经网络原语(如卷积运算)的层次。
Keras在更高的水平上。在这个层次上,较低层次的原语用于实现神经网络的抽象,如层次和模型。通常,在这个级别上,还实现了其他有用的API,如模型保存和模型培训。

7. Chainer

在CMU的DyNet和Facebook的PyTorch出现之前,Chainer一直是动态计算图或网络的领先神经网络框架,这种网络允许输入可变长度,而这正是NLP任务的一个流行特性。

开发语言:
Chainer 的代码是在Numpy和CuPy库之上用纯Python编写的。Chainer是第一个使用动态架构模型的框架(如PyTorch)。
当用神经网络建模解决问题时,Chainer多次打破了缩放效率的记录。

优点:

  1. 根据Chainer的基准测试,Chainer明显比其他面向Python的框架更快,其中TensorFlow是包括MxNet和CNTK的测试组中速度最慢的。
  2. Chainer的GPU和GPU数据中心性能优于TensorFlow。(TensorFlow针对TPU架构进行了优化)最近,Chainer成为GPU数据中心性能的世界冠军。
  3. 类OOP编程风格。

在这里插入图片描述


四. 参考链接

https://www.zhihu.com/question/53465308
https://blog.csdn.net/yeler082/article/details/78755095
https://zhuanlan.zhihu.com/p/157310499

  • 20
    点赞
  • 194
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
流行的深度学习框架包括: 1. TensorFlow:谷歌开发的深度学习框架,支持分布式计算,能够高效地进行大规模的机器学习任务。优点是支持多种编程语言,包括Python、C++、Java等,开源,可广泛应用于各种领域。缺点是学习曲线较陡峭,对于初学者有一定的门槛。开源地址:https://github.com/tensorflow/tensorflow 2. PyTorch:Facebook开源的深度学习框架,易于使用、快速、灵活。优点是提供了直观的调试工具,支持动态图,方便进行模型调整和优化。缺点是不如TensorFlow在分布式计算和移动端支持方面成熟。开源地址:https://github.com/pytorch/pytorch 3. Keras:基于Python的深度学习库,可以运行于TensorFlow、Theano和CNTK等后端。优点是易于上手、高度模块化,可以快速搭建复杂的深度学习模型。缺点是灵活性相对较弱,不够适用于一些研究性的工作。开源地址:https://github.com/keras-team/keras 4. Caffe:由加州大学伯克利分校开发的深度学习框架,可用于图像分类、物体检测、语义分割等任务。优点是速度快、效果好、易于扩展。缺点是不够灵活,不适合做一些需要较高自定义程度的工作。开源地址:https://github.com/BVLC/caffe 5. MXNet:亚马逊开发的深度学习框架,支持分布式计算,具有高度的可扩展性和灵活性。优点是速度快、支持多种编程语言,可以与其他框架兼容。缺点是文档不够完善,对于初学者学习难度较大。开源地址:https://github.com/apache/incubator-mxnet 以上框架均为开源,开源地址分别为上述内容中的链接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值