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

本文适合新入门小白了解深度学习框架基础,也适合刚入门选手思考各种深度学习框架。
文章目录
一、深度学习框架是什么?
二、深度学习框架有哪些?
三、如何选择合适的框架?
1. TensorFlow
2. PyTorch
3. Caffe 1.0
4. Theano
5. MXNet
6. Keras
7. Chainer
四. 参考链接
一、深度学习框架是什么?
深度学习框架像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也提供了实验性的交互界面。

优点:

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

目前TensorFlow还不支持“内联(inline)”矩阵运算,必须要复制矩阵才能对其进行运算,复制庞大的矩阵会导致系统运行效率降低,并占用部分内存。
TensorFlow不提供商业支持,仅为研究者提供的一种新工具,因此公司如果要商业化需要考虑开源协议问题。
2. PyTorch
开发语言:
Facebook用Lua编写的开源计算框架,支持机器学习算法。Tensorflow之后深入学习的主要软件工具是PyTorch。
Facebook于2017年1月开放了Torch的Python API ― PyTorch源代码。

优点:

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

Pythorch更适合小项目和原型设计。说到跨平台解决方案,TensorFlow看起来更合适。但是,值得注意的是,对于同样的任务,用户可以使用2017年推出的Caffe2移动框架。
3. Caffe 1.0
开发语言:
2013年底由UC Berkely的贾扬清基于C和C++开发的深度学习框架,第一个主流的工业级深度学习工具。

优点:

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

由于开发早和历史遗留问题,其架构的缺点是不够灵活。
缺乏对循环网络RNN和语言建模的支持,因此Caffe不适用于文本、声音或时间序列数据等其他类型的深度学习应用。
4. Theano
开发语言:
Theano是深度学习框架中的元老,使用Python编写。Theano派生出了大量Python深度学习库,最著名的包括Blocks和Keras。

优点:

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

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

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

优点:

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

与Caffe一样,缺乏对循环神经网络RNN的支持,相对比使用JAVA实现的NL4J在分布式方面没有JAVA方便。
6. Keras
Keras 是一个基于Theano和TensorFlow的深度学习库,使用TensorFlow、Theano或CNTK的捷径就是是高级Keras shell。
由于受到深度学习元老框架Torch的启发,拥有较为直观的API,有望成为未来开发神经网络的标准Python API。

优点:

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

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

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

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

优点:

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


四. 参考链接
https://www.zhihu.com/question/53465308
https://blog.csdn.net/yeler082/article/details/78755095
https://zhuanlan.zhihu.com/p/157310499
————————————————
版权声明:本文为CSDN博主「想变厉害的大白菜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44211968/article/details/120314695

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些经典的机器学习深度学习的书籍,供您参考: 1. 《机器学习》(周志华著):这本书是机器学习领域的经典教材之一,全面介绍了机器学习的基本概念、算法和应用。 2. 《深度学习》(Ian Goodfellow等著):这本书全面介绍了深度学习的基本概念、算法和应用,是深度学习领域的经典教材之一。 3. 《Python机器学习基础教程》(Andreas C. Müller和Sarah Guido著):这本书介绍了使用Python进行机器学习的基本技术和工具,包括NumPy、Pandas、Matplotlib、Scikit-Learn等核心库。 4. 《神经网络与深度学习》(Michael Nielsen著):这本书介绍了神经网络和深度学习的基本概念和算法,并通过Python实现了一个简单的神经网络框架。 5. 《机器学习实战》(Peter Harrington著):这本书通过实际的机器学习案例,介绍了机器学习的基本概念、算法和应用,并使用Python实现了各种机器学习算法。 6. 《Python深度学习》(Francois Chollet著):这本书介绍了使用Python和Keras构建深度学习模型的基本技术和工具,包括卷积神经网络、循环神经网络、自编码器等。 7. 《机器学习实战:基于Scikit-Learn和TensorFlow》(Aurélien Géron著):这本书通过实际的机器学习案例,介绍了使用Scikit-Learn和TensorFlow构建机器学习模型的基本技术和工具。 以上书籍是机器学习深度学习领域的经典之作,可以帮助您系统地学习和掌握这些领域的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值