|
|
|
|
移动端

1.1.10 常见深度学习框架简介

《深度学习与计算机视觉:算法原理、框架应用与代码实现》本书全面介绍了深度学习及计算机视觉中最基础的知识,并结合最常见的应用场景和大量实例,带领读者进入丰富多彩的计算机视觉领域。本节为大家介绍常见深度学习框架。

作者:叶韵来源:机械工业出版社|2017-11-16 17:15

有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研


1.1.10  常见深度学习框架简介

工欲善其事,必先利其器。深度学习诞生10年有余,已经有了不少成熟的开发框架,下面来看一看当前主流的框架。

Caffe  全称为Convolutional Architecture for Fast Feature Embedding,由伯克利加州大学(University of California,Berkeley)的博士生贾扬清开发,后来一直由伯克利视觉及学习中心(Berkeley Vision and Learning Center,BVLC)进行维护。Caffe基于C++和英伟达(NVIDIA)公司的GPU(Graphic Processing Unit)通用计算架构CUDA(Compute Unified Device Architecture)开发,特点是高效、可配置化的输入、GPU和CPU的无缝切换。当然还有非常重要的一点,Caffe拥有庞大的社区,无论是科研领域还是业界都有大量的用户。每当一些最前沿的深度学习方法发表后,没多久就会有官方的预训练模型或是第三方基于Caffe的实现,所以Caffe是一个对初学者和有经验的人都非常适合的工具。

2013年,贾扬清得到了一块NVIDIA免费提供的K20加速卡。在这个契机下贾扬清一边做毕业论文一边开始写一个用于深度学习的框架。经过了近半年的独立开发,Caffe初具形态并且在伯克利的研究组内获得了良好的试用反响。后来在物体检测领域成为经典的R-CNN(Regions with Convolutional Neural Network features)方法就是在这段时间内基于Caffe实现的。

2013年底,贾扬清将Caffe开源,成为了当时业内第一个较为完整的深度学习开源框架,于是立刻获得了学术界和业界的好评及支持。后来在BLVC和NVIDIA为主的合力推广下,Caffe很快成为了深度学习领域,尤其是基于深度学习的计算机视觉领域最流行的框架。本书使用Caffe作为实例的主要实现框架之一,后面会有更多关于Caffe的内容。

Theano  这个由希腊神话中伊卡里亚岛国王妻子名字命名的框架,是由本吉奥领导的蒙特利尔大学机器学习研究小组(MILA,开发时叫LISA)开发的。作为一个诞生比Caffe早的框架,在早期Theano是深度学习领域最流行的软件包。严格来说,Theano不是专门面向深度学习的,而是一个基于多维数组用于计算和优化数学表达式的数值软件包,因为神经网络的本质其实就是数学表达式,所以用Theano可以非常灵活地从无到有地实现神经网络的各种功能。Theano基于Python,最大的优点是灵活,性能非常出色,缺点是基于函数式的编程方式,还有拗口的API,异常困难的调试等,造就了陡峭的学习曲线。另外,其异常慢的编译速度也常常遭人诟病。

直接在Theano中开发虽然灵活度最高,但开发工作量和难度也不小,所以在Theano基础上有很多封装过后框架,比如MILA官方的Pylearn2,还有第三方开发的Lasagne和Keras等。Pylearn2由于把Theano的缺点又进一步发挥到了极致,在火了一小阵后就被渐渐冷落,如今已经停止了实际意义上的开发。后两个框架正在蓬勃发展中,尤其是Keras,渐渐开始成为一个脱离底层实现的大框架,目前除了Theano也支持了Google的Tensorflow。

TensorFlow  Google开源的深度学习框架,一开始主要面向的是分布式系统。从官方介绍上看,具有非常好的延展性,在多GPU/多机上拥有最好的灵活性。另外Google的强有力支持也算是一大优点。初期版本在单机和一些小任务上性能差强人意,在一些基准测试上甚至常常被其他框架甩下一个量级。不过随着TensorFlow的持续改进,以及Google光环的照耀,现在TensorFlow正在变得越来越流行。截至2016年5月,在github上关于TensorFlow的相关讨论的数量已经超过Caffe跃居第一位。

Torch  由卷积神经网络之父杨乐昆领导开发的框架,是Facebook的深度学习开发工具,于2014年开源后,迅速传播开来。Torch的性能非常优秀,其他方面作为一个框架该有的功能都有。另外,作为集合了杨乐昆学术能力和Facebook业界经验的框架,Torch天然对多GPU的支持也胜过了被经常拿来一起比较的Caffe。Torch是基于Lua的,虽然Lua是一个简单又灵活的语言,但是毕竟是小众语言,这在一定程度上限制了Torch的流行程度。

MXNet  由分布式机器学习社区(Distributed/Deep Machine Learning Community,DMLC)开发,是第一个由中国人主导开发的流行框架。MXNet的特点是轻量级、高性能,以及对从分布式到嵌入式等多种场景的优异支持。MXNet前身是DMLC的CXXNet和Minerva,这两个项目一个通过配置和定义来训练网络,而另一个则提供了类似numpy一样的多维数组的用法。MXNet无缝地衔接了这两种用法,获得了非常好的灵活性,这是另一个特点。MXNet支持语言非常多,尤其是对R的支持,赢得了一批统计领域的用户,并且扩展性也不错,可以说是一个非常有潜力的框架。此外,MXNet还有一个很大的特点是文档非常“烂”。2016年末,Amazon宣布MXNet为其官方深度学习平台,并会提供进一步支持,这个问题似乎有望被解决。后续MXNet是否能进一步崛起,并和TensorFlow还有Caffe一较高下,我们拭目以待。

cuda-convnet2  由2012年让深度学习在视觉领域声名大噪的AlexNet作者,辛顿的学生阿历克斯·克里泽夫斯基(Alex Krizhevsky)开发。作为一名学术工程双馨的天才,其开发的cuda-convnet2的性能曾经非常强悍,不过不知什么原因,最近也停止更新了。

Neon  由一家结合了深度学习人才和硬件人才的创业公司Nervana Systems于2015年开源发布。这是一个比较独特的框架,因为其公司软硬结合的血统,在硬件优化上的造诣让这个框架在发布时在不少基准测试上达到了世界最佳的成绩。2016年中,Nervana System被Intel收购,此前Intel还收购了FPGA供应商Altera,也许Intel很快就会憋出个大招?我们也拭目以待。

Deeplearning4j  支持Java的机器学习库,由Skymind发布于2014年发布,商业标准的开源框架,在一些欧美咨询公司中受到欢迎。

CNTK  全称为Computational Network Toolkit,是微软出品的深度学习框架,于2016年初开源,所以目前使用者寥寥。该框架同时支持CPU和GPU,据说性能极其强悍,在微软官方博客上的测试中,超过了其他所有常见框架。

Tips:本书使用的框架

本书中后面实战章节的框架是Caffe和MXNet,主要原因如下:

Caffe是目前最成熟的框架,虽然有被TensorFlow赶超之势,但是对于初学者而言最容易找到的资料还是Caffe,而且Caffe上手难度略低于TensorFlow。

MXNet的上手难度低,非常适合初学者。一直以来遭到诟病的文档“烂”问题随着Amazon的支持应该会慢慢改善,潜力很好。另外MXNet的内存优化好,即使笔者的计算机性能有限,跑起来也不费劲。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Java编程思想 第4版

本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Java I...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊