深度学习框架排行榜及其优劣比较

Tensorflow-Google

Google的TensorFlow,可以说是当今十分流行的深度学习框架。Airbnb, DeepMind,Intel,Nvidia,Twitter以及许多其他著名公司都在使用它。

Google自开源TensorFlow起,投入大量的人力,物力,财力逐步构建了一个AI生态,从基础研究、AI教育、再到应用实现,而这个生态的核心就是TensorFlow。如前所说,深度学习是AIoT时代的基石,毫无疑问,Google依然走在时代转折点的前列。

TensorFlow提供全面的服务,无论是Python,C++,JAVA,Go,甚至是Javascript,Julia,C#,几乎所有开发者都可以从熟悉的语言入手开始深度学习的旅程。TensorFlow构建了活跃的社区,完善的文档体系,大大降低了我们的学习成本,不过社区和文档主要以英文为主,中文支持有待加强。另外,TensorFlow有很直观的计算图可视化呈现。模型能够快速的部署在各种硬件机器上,从高性能的计算机到移动设备,再到更小的更轻量的智能终端。

TensorFlow的缺点已经被诟病多年,相比Pytorch,Caffe等框架,TensorFlow的计算速度可以说是“牛拉车“。而且通过它构建一个深度学习框架需要更复杂的代码,还要忍受重复的多次构建静态图。

综合来说,对于英文阅读和英文交流毫无障碍的同学,TensorFlow依然是深度学习框架的优选方案,毕竟可以和人流畅交流是学习和工作的重点。

Pytorch-Facebook

Pytorch是基于用Lua编写的Torch库的Python实现的深度学习库,它由Facebook创建,目前被广泛应用于学术界和工业界,随着Caffe2项目并入Pytorch,也稳固了Pytorch紧追并迫近TensorFlow在深度学习应用框架领域的地位。

Pytorch官网的标题语简明的描述了目前Pytorch的特点以及将要发力的方向。Pytorch在学术界优势很大,关于用到深度学习模型的文章,除了Google家的,其他大部分都是通过Pytorch进行实验的,究其原因一是Pytorch库足够简单,跟NumPy,SciPy等可以无缝连接,而且基于tensor的GPU加速非常给力,二是训练网络迭代的核心-梯度的计算,Autograd架构(借鉴于Chainer),在Pytorch,我们可以动态的设计网络,而无需笨拙的定义静态网络图,才能去进行计算,想要对网络有任务修改,都要从头开始构建静态图。基于简单,灵活的设计,Pytorch快速成为了学术界的主流深度学习框架。

Pytorch的劣势在于模型部署,由于对其部署难度早有耳闻,我没尝试过部署Pytorch的模型,一般是在Pytorch快速的试验新的模型,确认好的效果再去找“现成的”的TensorFlow模型做简单的优化。

不过现在,如果稍微深入的了解TensorFlow和Pytorch,就会发现他们越来越像,TF加入了动态图架构,Pytorch致力于其在工业界更加易用。打开各自的官网,你也会发现文档风格也越发的相似。

PaddlePaddle-Baidu

PaddlePaddle是由百度自主开发的开源深度学习框架,近期发现有了中文名字,飞桨。官网截图也很有意思,很多小人在划桨。飞桨刚发布的时候,并不被看好,感觉更像是Google有,百度也要有的腔调,但是近来在做一个关于语义识别的项目,其他框架支持中文的模型实在是少的可怜,时间紧张也没有时间大规模训练,于是就来试试飞桨,其中基于BERT的ERNIE模型取得了较好的效果,部署也不折腾。个人认为可以将模型库中的经典模型套在自己的问题上,作为baseline模型快速试验,而后慢慢调优追求更好的效果。

从模型库找到适合自己的模型,按照实践教程一步步进行就行了,过程还是比较简单的,遇到的问题在github的issues中都有找到,虽然不像TF那么活跃,但是支持也是很及时的。我是从官网找模型,发现官网又更新了,盗张图过来感受下支持的模型。

功能上,飞桨同时支持动态图和静态图,能方便的调试模型,方便的部署,非常适合业务应用的落地实现。飞桨也已经支持数百个节点的高效并行训练。可以说在过去2年的时间里,深度学习领域在大规模的落地应用,各家框架也都在快速的发展,但是百度的PaddlePaddle看来是这个阶段发展更快的框架,甚至是发展更快的AI开发生态。

以上三个框架可以说是目前发展比较快的,并且在稳定更新,维护的。功能上来说,各框架已经“越长越像”了,三个框架还是会有各自的特点,如何选择还是要根据自己的目标来看。

Keras

Keras被认为是最酷的Python深度学习库之一。如果你是深度学习开发方面的新手,那么非常建议你使用它。它提供了非常简明的机制来表达神经网络结构。它也提供了许多非常棒的工具用于神经网络模型的编译、数据的处理、以及网络结构的可视化等等。

Keras本质上是对Tensorflow、Theano等基础框架作进一步的封装,以提供统一的API来简化神经网络的构建与训练。

Scikits-learn

什么是 Scikit-Learn?它是一个与 NumPy 和 SciPy 相关联的 python 库。它被认为是处理复杂数据的最佳库之一。

Scikits-learn,又称为sk-learn,是一个基于Numpy与SciPy的Python库。Sk-learn被认为是用于处理复杂数据的最优秀的机器学习库之一。它包含了大量用于实现传统机器学习和数据挖掘任务的算法,比如数据降维、分类、回归、聚类、以及模型选择等。

随着时间的发展,sk-learn不断演进。其中包括它加入了交叉验证功能,提供了使用多个衡量指标的能力。许多的训练方法都得到了一定的改进,如逻辑回归、近邻算法(KNN)等。

建议

如果是刚刚接触深度学习,以学习为目的的,我建议从TensorFlow和飞桨开始,至少目前来看,Google和百度是倾全力打造这两个平台的,他们已经不只是一个深度学习框架了,更是一个AI开发的生态,从基础的视频课程,完善的文档体系到项目的开放落地提供的是统一的服务。多说一句,百度飞桨的基础文档相当详细,不只有代码实现,数据流过程的教程,同时也包含了详细的算法原理,这点对于还不是那么了解相应模型的同学来说是极大的方便。对于学有余力的同学,还是建议对这3个框架都了解下。

如果是出于学术目的的,建议从Pytorch开始,毕竟学术研究要紧盯着前沿,看文章,复现文章中模型的效果,选大家都用的可以节省不必要的时间成本,把重点放在优化模型提升模型效果上。

如果是想要开箱即用,想即刻将深度学习技术应用到自己的场景中尝试,我会建议选择飞桨,飞桨中有大量的实战案例,基本套到相应的场景就能迭代起来了。而且在NLP领域,需要对各种语言进行预处理,毫无疑问对中文支持更好的是飞桨,比如ERNIE,其挖掘海量的中文数据,对先验语义知识进行建模,增强了语义表达能力,可以作为NLP,NLU应用的基础服务不同的场景。

参考文章

2019深度学习框架排行榜(从TOP 10到TOP 3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值