当前一些主流深度学习框架的简单分析
Posted kagariatsuko
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当前一些主流深度学习框架的简单分析相关的知识,希望对你有一定的参考价值。
(工程选题与深度学习框架有关)
现有的任何一种大型软件背后都存在两种根本性的因素:商业因素和技术因素。其两者是相互矛盾且统一的。
技术上决定了,任何现在大型软件的开发都无法不借助已有的代码和产品:大型软件的复杂性决定了除非不顾及一切商业行为,否则要想实现整套系统的完全独立开发是不切实际的。
商业上决定了,任何软件想要盈利,技术上是要有根本性的要求,纵观软件的历史,能够保持10年以上的软件几乎是凤毛麟角,也就是能够占据垄断地位的软件无疑也是技术上顶尖的软件。
所以关于深度学习框架的话题我也将从这两方面分析,并结合工程选题的内容上简单分析该如何选择框架,如何更深入理解框架。
深度学习框架的商业性:
深度学习框架就是标准。
软件行业是要继续发展下去,但方向确实是不确定的,在某些领域人们仿佛看到了天花板,而这对一个行业来讲是巨大的打击。所以人工智能的热潮的产生也就不足为奇,但到底能够创造出多大市场是无法确定的,但已有的人工智能领域的一些成果确实存在着巨大的商业价值,所以谁能够把把握住这个方向,谁就是下一个时代的引领者。那么深度学习框架的价值就显而易见了,它就是人工智能行业的标准,也是大公司必定争夺的目标。在这场竞争中我们会看见很多优秀的产品出现,但最终能够存活的只有那些找到根本方向的框架。也就是清楚明白标准的含义。商业上一般是谁能够建立好的生态,谁就能够获得软件的标准,微软就是典型的例子。而深度学习框架的生态我认为主要有两个:芯片、数据和开发者。深度学习的巨大动力就在于硬件计算能力的提升以及带动了新的体系结构的发展,并且因为算法的核心是数据驱动,所以对于数据有巨大的需求,而深度学习要想带动行业的发展或者说软行业的快速发展和根本动力就在于开发者,能够让更多人参与进来,让更多人能够实现自己的目标才能从根本上推动生态的发展,而这就对框架有如下几点要求:
1)为了能够满足芯片芯片厂商的要求,这个框架就必须满足适应新的芯片的体系结构并能够极大发挥芯片的性能(要求框架的底层实现不能按照以往的重控制轻运算,而要重运算而轻控制)。
2)这个框架要能够跟大型数据库接轨,要能够充分利用各种数据库的性能,并对数据库要求新的设计(以前的数据大部分是结构化而非数值化,而深度学习很多数据格式跟传统的数据是有差别的),并且大型数据是一种稀缺资源,数据的共享和数据的提炼也是整个生产链的关键。能够把握住数据,也就把握住深度学习的命根。
3)对开发者一定要友好,要能够提供多种语言的支持,并且不要引入过多的新概念,要减少开发者的学习成本,减少开发者的无用工程量(易于开发),并且要能够提供很多已有的模型实现和参数(一个好用的深度学习模型是很难训练出来的,所以要是能够提供现有的模板,那么开发者将有更多的时间去实现业务)。
深度学习框架的技术性:
首先深度学习的底层数学运算并没有太多的创新,虽然理论上的可解释性数学上依旧没有太好的解答,但工程上来讲跟许多以前的数值计算没有本质的差别,但运算量巨大却是与以前不同。
数据,用户友好型,其实技术性就是去想如何能够满足上诉的商业性要求。但世界上不存在完美的技术,不存在教条的工程原则,对于任何工程来说唯一的要求就是结合实际情况。所以深度学习框架也不会出现垄断的情况,因为技术上是不会允许的。
那么对于我们开发者而言如何选用,如何理解,如何进行开发深度学习框架?
我主要以三个框架简单说明:
1.TensorFlow
Google主打作品,在生态建设做的最好的深度学习框架。凭借Google的强大实力和团队,几乎能够满足所有主流的语言,对多种芯片都有支持,并且Google作为世界最大的数据资源拥有者之一,数据方面是水到渠成的,几乎是完美兼容,所以这款框架我认为可以说是现在深度学习的代名词,也将是以后的主流。
但他有一个明显的缺陷是代码过于庞大,现在已经接近100万行,这也就意味着开发者想要修改框架,想要裁剪是工程量巨大的一件事,虽然Google的开发者社区建设良好,学习资源也众多,但跟轻量级的框架相比,还是过于复杂,不利于深入理解深度学习框架。所以如果想找个深度学习源代码学习,TensorFlow绝对不是个好的首选。
2.Keras
”为人类而不是机器设计的API”。几乎各项评估中,它都是第二流行的框架。Keras以TensorFlow、Theano或CNTK为底层引擎。这个框架是最利于开发者快速开发,但它的本质更像一种API,而不是一个框架,两者的区别就在于给予开发者的灵活性和扩展性。对于更高性能和更自由的开发,Keras的支持并不是一个理想的选择,尤其是嵌入式产品的智能化。
3.caffe
对于想真正了解深度学习框架的底层原理,想要真正从零实现 一个深度学习框架的开发者而言,caffe几乎是最理想的选择,它是一种轻量级的深度学习框架,用c++编写内核,并提供python接口。其代码简介,并提供很多有力的工具,现在所有的主流深度学习框架都有从它这里吸取营养。或者说caffe既实现了深度学习框架的核心,有没有在工程细节上大费周章,所以想开发自己的深度学习框架或者想理解如何去优化自己代码的性能,那么caffe是一个理想的选择。
以上图片来源于网络
以上是关于当前一些主流深度学习框架的简单分析的主要内容,如果未能解决你的问题,请参考以下文章