深度学习框架你最看好谁

Posted 前端前沿技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习框架你最看好谁相关的知识,希望对你有一定的参考价值。

深度学习的图景在不断变化。Theano是第一个被广泛采用的深度学习框架,由Yoshua Bengio领导的MILA创建和维护。但情况已经发生改变。今年9月,MILA宣布,在发布Theano的最新版本后,2018年将终止Theano的开发和维护。这个消息并不令人感到意外。在过去的几年里,出现了不同的开源Python深度学习框架,这些框架通常是由大型科技公司开发或支持的,而且有些引起了很大的关注。

2017年开源深度学习框架图景

目前,从GitHub的star和fork数量,以及Stack Overflow活跃度来看,谷歌的TensorFlow似乎是最常用的深度学习框架。有人预计,伴随着TensorFlow的推出,谷歌将主导这个市场多年。但是,看起来其他框架确实也吸引了越来越多的充满热情的用户群。值得一提的是PyTorch的开发和发展。PyTorch是在2017年1月由Facebook推出的。它是经典机器学习库Torch框架的一个端口,Torch二进制文件包装于GPU加速的Python。

除了GPU加速和内存使用的高效外,PyTorch受欢迎的主要因素是动态计算图的使用。已经有其他一些不太知名的深度学习框架使用动态计算图,例如Chainer。动态图的优点在于,图(graph)是由run定义(“define by run”),而不是传统的“define and run”。特别是,在输入可以变化的情况下,例如文本这样的非结构化数据,这非常有用而且高效。

深度学习框架你最看好谁

图:PyTorch动态计算图 - 来源:http://pytorch.org/about/

其他科技巨头也坐不住了。微软开发了名为CNTK的内部深度学习框架,在2017年正式推出2.0版本,并将其重新命名为微软认知工具包(Microsoft Cognitive Toolkit)。 2017年,Facebook还推出了Caffe2。它将成为众所周知的Caffe框架的继承者。Caffe框架最初是伯克利视觉和学习中心开发的,现在仍然非常受欢迎,这是由于它的社区性质,它是计算机视觉的应用程序,以及它的Model Zoo ——一系列预训练的模型。不过,Caffe2似乎还没有跟上Caffe的脚步。

另一个流行的深度学习框架是MXNet,由微软和亚马逊共同支持。MXNet的历史已经有一段时间了,但是当MXNet作为一个深度学习框架被提及时,我经常听到人们说“那是一个R语言的深度学习框架吧?”。是的,但不止。MXNet实际上支持许多语言,包括C ++,Python,javascript,Go,以及R。MXNet最为突出的是它的可扩展性和性能。

这些只是众多可选择的框架中的一小部分。其他开源的深度学习框架还有Deeplearning4j和Dlib(基于C ++)。而且在2017年,谷歌旗下的DeepMind发布了Sonnet(一个建立在TensorFlow上的高级面向对象的库)。其他值得一提的框架还有H20.ai和Spark。

深度学习框架你最看好谁

用Keras直接构建模型— source: https://github.com/keras-team/keras

除了这些框架之外,我们还有一些包装在一个或多个框架中的接口(interface)。对于深度学习来说,最为人熟知和广泛使用的接口无疑是Keras。Keras是一个高级深度学习API,用Python编写,由谷歌的深度学习研究员François Chollet开发。谷歌在2017年宣布,Keras已被选为TensorFlow的高级API。这意味着Keras将被包含在下一个TensorFlow版本中。除了TensorFlow,Keras也可以使用Theano或者CNTK作为后端。

Keras的功能强大,因为它用非常直接的方式,即通过堆叠多个层来创建深度学习模型。使用Keras时,用户不必进行layers背后的数学运算。这似乎是快速原型设计的一种理想选择。Keras也是Kaggle比赛的热门工具。

那么,一方面我们现在拥有了高级的Keras API,可以让你轻松地构建简单而高级的深度学习模型;另一方面我们还有低级的TensorFlow框架,能为构建模型提供更大的灵活性。这两者都由谷歌支持。但是竞争并没有停止——2017年10月,微软和亚马逊的AWS联合宣布推出Gluon API。Gluon是一个封装了MXNet的高级Python深度学习接口,未来它还将支持微软的CNTK。Gluon是Keras的直接竞争对手,尽管AWS声称他们强烈支持所有深度学习框架,但显然,他们会打着AI民主化的口号押注于Gluon。

用Gluon堆叠卷积层和密集层以及参数初始化

令人惊讶的是,如今TensorFlow的最大竞争对手似乎是PyTorch。社区对PyTorch的兴趣越来越高涨,例如,Kaggle的最新竞赛中,参赛者经常选择使用PyTorch作为其解决方案的一部分,PyTorch也被用在最新的研究论文中。而TensorFlow终于引入动态图机制是在2017年10月发布的Eager Execution,这是TensorFlow的“define-by-run”接口。谷歌希望通过这次发布,赢回那些喜欢上PyTorch以及它的动态图的用户。

但对于广受欢迎的深度学习课程fast.ai的开发者来说,这个改变来得太迟了。今年9月,fast.ai宣布从Keras&TensorFlow转换到PyTorch。fast.ai的创始研究员、Kaggle的前总裁兼首席科学家Jeremy Howard认为PyTorch将能够保持领先地位。只有时间能告诉我们答案了。

有这么多深度学习框架,对于新入门者来说,选择哪个框架可能是有挑战性的问题。坦白说,即使是经验丰富的研究人员和开发人员,也很难跟上深度学习框架最新的发展。对此,一个好消息是开放神经网络交换(ONNX)格式的发布。ONNX于9月8日由微软和Facebook联合发布,并在12月发布了V1版本。ONNX是一个表示深度学习模型的开放格式。它使用户可以更轻松地在不同框架之间转移模型。例如,它允许用户构建一个PyTorch模型,然后使用MXNet运行该模型来进行推理。

开放神经网络交换(ONNX)的Github页面

ONNX由微软、亚马逊和Facebook等公司共同发起,宣布支持ONNX的公司还有AMD、ARM、华为、 IBM、英特尔、Qualcomm等。谷歌不在这个阵营中并不令人惊讶。ONNX从一开始就支持Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch,但与其他开源项目一样,社区也已经为TensorFlow添加了一个转换器。

小结

2017年深度学习框架方面有很多令人兴奋的发展,就跟快速发展的深度学习和人工智能一样。很难预测新的一年会发生什么。我们可能会看到一些整合,不过,大科技公司肯定会想使用和推广自己的技术栈。我们很高兴看到由不同技术巨头支持的不同框架,它们互相推动,促进更快的创新。这是我对2017年深度学习框架竞争观察的第一部分,在第二部分中,我将根据不同的度量标准,例如速度、内存使用、可移植性和可伸缩性等,来对比不同的框架性能。


以上是关于深度学习框架你最看好谁的主要内容,如果未能解决你的问题,请参考以下文章

从TensorFlow到PyTorch:九大深度学习框架哪款最适合你?

转载从TensorFlow到PyTorch:九大深度学习框架哪款最适合你?

资源 | 从TensorFlow到PyTorch:九大深度学习框架哪款最适合你?

深度 | 主流深度学习框架对比:看你最适合哪一款?

主流深度学习框架对比:看你最适合哪一款?

2017年四巨头的深度学习框架之战,你支持谁?