各深度学习各主流框架介绍

前言

深度学习神经网络正步入成熟,而深度学习框架目前众多,大都可以在图像识别、手写识别、视频识别、语音识别、目标识别和自然语言处理等诸多领域大显身手。

什么是深度学习框架?

深度学习框架的出现降低了入门的门槛,你不需要从复杂的神经网络开始编代码,你可以根据需要选择已有的模型,通过训练得到模型参数,你也可以在已有模型的基础上增加自己的layer,或者是在顶端选择自己需要的分类器和优化算法(比如常用的梯度下降法)。当然也正因如此,没有什么框架是完美的,就像一套积木里可能没有你需要的那一种积木,所以不同的框架适用的领域不完全一致。 总的来说深度学习框架提供了一些列的深度学习的组件(对于通用的算法,里面会有实现),当需要使用新的算法的时候就需要用户自己去定义,然后调用深度学习框架的函数接口使用用户自定义的新算法。

在这里插入图片描述
深度学习框架平台占据人工智能产业生态的核心地位,具有统领产业进步节奏、带动终端场景与云端服务协同发展的重要作用,处于承上启下的关键地位,其意义媲美移动互联网操作系统。随着深度学习框架的不断演进,以深度学习为代表的人工智能将大放异彩。

那么,现在都有哪些框架呢,我们来盘点一下。

Torch

Torch是一个有大量机器学习算法支持的科学计算框架,其诞生已有十年之久,但是真正起势得益于Facebook开源了大量Torch的深度学习模块和扩展。Torch的特点在于特别灵活,但是另一个特殊之处是采用了编程语言Lua,在深度学习大部分以Python为编程语言的大环境之下,一个以Lua为编程语言的框架有着更多的劣势,这一项小众的语言增加了学习使用Torch这个框架的成本。

Pytorch

在这里插入图片描述

PyTorch的前身是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接口。它是由Torch7团队开发,是一个以Python优先的深度学习框架,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这是很多主流深度学习框架比如Tensorflow等都不支持的。

PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。除了Facebook外,它已经被Twitter、CMU和Salesforce等机构采用

Theano

在这里插入图片描述

Theano于2008年诞生于蒙特利尔理工学院,其派生出了大量的深度学习Python软件包,最著名的包括Blocks和Keras。Theano的核心是一个数学表达式的编译器,它知道如何获取你的结构,并使之成为一个使用numpy、高效本地库的高效代码,如BLAS和本地代码(C++)在CPU或GPU上尽可能快地运行。它是为深度学习中处理大型神经网络算法所需的计算而专门设计,是这类库的首创之一(发展始于2007年),被认为是深度学习研究和开发的行业标准。

但是开发Theano的研究人员大多去了Google参与Tensorflow的开发,所以,某种程度来讲Tensorflow就像Theano的孩子。目前,Theano已经停止开发,不建议作为研究工具继续学习。

TensorFlow

在这里插入图片描述

TensorFlow在很大程度上可以看作Theano的后继者,不仅因为它们有很大一批共同的开发者,而且它们还拥有相近的设计理念,都是基于计算图实现自动微分系统。但是由于其频繁变动的接口、接口设计过于晦涩难懂、文档混乱脱节。不完美但最流行的深度学习框架,社区强大,适合生产环境。

Tensorflow是全世界使用人数最多、社区最为庞大的一个框架,因为Google公司出品,所以维护与更新比较频繁,并且有着Python和C++的接口,教程也非常完善,同时很多论文复现的第一个版本都是基于Tensorflow写的,所以是深度学习界框架默认的老大。

Keras

在这里插入图片描述

严格意义上讲,Keras并不能称为一个深度学习框架,它更像一个深度学习接口,它构建于第三方框架之上。Keras的缺点很明显:过度封装导致丧失灵活性。入门最简单,但是不够灵活,使用受限。

PaddlePaddle

在这里插入图片描述

PaddlePaddle是百度研发的开源开放的深度学习平台,是国内最早开源、也是当前唯一一个功能完备的深度学习平台。依托百度业务场景的长期锤炼,PaddlePaddle有最全面的官方支持的工业级应用模型,涵盖自然语言处理、计算机视觉、推荐引擎等多个领域,并开放多个领先的预训练中文模型,以及多个在国际范围内取得竞赛冠军的算法模型。

PaddlePaddle 3.0版本升级为全面的深度学习开发套件,除了核心框架,还开放了VisualDL、PARL、AutoDL、EasyDL、AI Studio等一整套的深度学习工具组件和服务平台,更好地满足不同层次的深度学习开发者的开发需求,具备了强大支持工业级应用的能力,已经被中国企业广泛使用,也拥有了活跃的开发者社区生态。

Caffe/Caffe2

在这里插入图片描述

Caffe的优点是简洁快速,缺点是缺少灵活性。不同于Keras因为太多的封装导致灵活性丧失,Caffe灵活性的缺失主要是因为它的设计。文档不够完善,但性能优异,几乎全平台支持(Caffe2),适合生产环境。

Caffe和Tensorflow名气一样大,由加州大学伯克利的Phd贾扬清开发,全称是Convolutional Architecture for Fast Feature Embedding,是一个清晰而高效的开源深度学习框架,由伯克利视觉中心(Berkeley Vision and Learning Center,BVLC)进行维护。
从它的名字就可以看出其对于卷积网络的支持特别好,同时也是用C++写的,提供的C++接口,也提供了matlab接口和python接口。

Caffe之所以流行,是因为之前很多ImageNet比赛里面使用的网络都是用Caffe写的,所以如果你想使用这些比赛的网络模型就只能使用Caffe,这也就导致了很多人直接转到Caffe这个框架下面。

Caffe的缺点是不够灵活,同时内存占用高,Caffe的升级版本Caffe2已经开源了,修复了一些问题,同时工程水平得到了进一步提高。

MXNet

在这里插入图片描述

MXNet的主要作者是李沐,最早就是几个人抱着纯粹对技术和开发的热情做起来的,如今成了亚马逊的官方框架,有着非常好的分布式支持,而且性能特别好,占用显存低,同时其开发的语言接口不仅仅有Python和C++,还有R,Matlab,Scala,JavaScript,等等,语言支持最多,可以说能够满足使用任何语言的人,适合AWS云平台使用。

但是MXNet的缺点也很明显,教程不够完善,使用的人不多导致社区不大,同时每年很少有比赛和论文是基于MXNet实现的,这就使得MXNet的推广力度和知名度不高。

CNTK

在这里插入图片描述

CNTK的性能比Caffe、Theano、TensoFlow等主流工具都要强。社区不够活跃,但是性能突出,擅长语音方面的相关研究。

结语

此外,还有许多专门针对移动设备开发的框架,如CoreML、MDL,这些框架纯粹为部署而诞生,不具有通用性,也不适合作为研究工具。

这些框架各有优缺点,但是大多流行度和关注度不够,或者局限于一定的领域。从上,我们可以看出,并没有一个完美的深度神经网络,能够解决你的所有业务问题。

深度学习框架发展到今天,有些功能已经变成常规需求了,譬如易用、高效、完备(算子、模型、配套工具链、文档、案例),一个新的框架在这些方面应该没有明显的短板。一个后出现的框架要追求成功,仅仅没有短板还不够,还必须有长板,独门功法,有超越于其它框架的地方,或者其它框架根本做不到,或者很难做到,只有这样,才有可能先从细分市场切开一个小口,进而站稳脚本。

那么,作为我们学习深度学习的时候,究竟是学哪个框架呢?是学PyTorch、还是学Tensorflow、再或者是学Keras呢?其实,对于这样的问题,基于现在的形势下,你就不要把着眼点放在这些工具的使用上了,重要的是要知道它的原理。

虽然话是这么说,但是还是推荐大家在Tensorflow和torch两者选其一,因为这是两大最主流的深度学习框架了。随着Tensorflow的更新迭代,API越来越乱,甚至速度越来越慢。相比之下torch发展迅猛,在许多领域都表现出了替代Tensorflow的势头,而且其动态图得到特点广受大家喜爱,而且可以是同cuda加速,同时你看pytorch的logo多好看哦,难道不心动吗?!!!

对我来说,配置torch环境真是太方便了,但是配置个Tensorflow环境可能会让你崩溃。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笼中小夜莺

嘿嘿嘿,请用金钱尽情地蹂躏我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值