深度学习领域Facebook等巨头在2017都做了什么
扫描二维码
随时随地手机看文章
深度学习是机器学习中一种基于对数据进行表征学习的方法,作为当下最热门的话题,谷歌、Facebook、微软等巨头纷纷围绕深度学习做了一系列研究,一直在支持开源深度学习框架的建设。
过去一年间,在这些巨头的加持下,深度学习框架格局发生了极大改变:新框架横空出世,旧的框架也逐渐退出历史舞台,而框架与框架之间的联系也更加紧密,生态更为开放。这一年,小编也在时刻关注着这些发展和变化,下面这些话题,每一个都引起了开发者此起彼伏的讨论:
Facebook 开源 PyTorch,成为 TensorFlow 强敌
Theano 完成历史使命,功成身退
ONNX 开放平台横空出世,力图促进开放的开发生态
CNTK,Keras,MXNet 均迎来重大更新
微软携手亚马逊推出 Gluon 深度学习库,英特尔推出增强学习框架 Coach
针对移动终端,Caffe2 和 TensorFlow Lite 先后开源
接下来,小编会盘点上述机器学习框架之间的重大发展和改变,以飨读者。
Facebook 开源 PyTorch,以风起云涌之势占领开发者社区
2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,针对 Python 语言发布了全新的机器学习工具包——PyTorch。PyTorch 实际上是 NumPy 的替代,它支持 GPU,有着更高级的功能,可以用来构建和训练深度神经网络。一经发布,它便受到广泛关注和讨论。经过将近一年的发展,目前 PyTorch 已经成为从业者最重要的研发工具之一。
年初发布 PyTorch 时,Facebook 曾表示,「它有望辅助、或在一定程度上替代现有的 Python 数学库(比如 NumPy)。」目前来看,PyTorch 的使用越来越广泛,这一预言成为现实。
在众多开发者眼中,PyTorch 是 TensorFlow 之外一个非常好的选择。
以下为 PyTorch 主要优势:
它处于机器学习第一大语言 Python 的生态圈之中,使得开发者能接入广大的 Python 库和软件。因此,Python 开发者能够用他们熟悉的风格写代码,而不需要针对外部 C 语言或 C++ 库的 wrapper,使用它的专门语言。
不需要从头重新构建整个网络,它为改进现有的神经网络提供了更快速的方法——采用动态计算图(dynamic computaTIonal graph)结构,而不是大多数开源框架,比如 TensorFlow、Caffe、CNTK、Theano 等采用的静态计算图。
PyTorch 中用于数据加载的 API 设计得很好。接口在数据集、采样器和数据加载器中有明确规定。数据加载器接收数据集和采样器,根据采样器的调度,在数据集上生成迭代器。加载并行数据就像把 num_workers 语句传递到数据加载器一样简单。
采用了定制的 GPU 内存分配器。这使得开发者的深度学习模型能够有「最大限度的内存效能」,训练比从前更大的深度神经网络。
GitHub 地址:https://github.com/pytorch/pytorch
#pTensorFlow引入动态图机制#e#
TensorFlow 是 Google 于 2015 年底推出的深度学习框架。过去两年间,它在开发者社区享有盛誉,目前已成为最为常用的深度学习框架。它的功能全,社区好,因此使用率也一直稳定保持领先。而随着 PyTorch 等框架的横空出世,因为文档和接口混乱,使用繁琐等缺点,TensorFlow 广受诟病。
在 2017 年,开发团队不断为 TensorFlow 引入新的功能:年初发布 TensorFlow 1.0,实现对 Keras 的全面支持;年底引入 Eager ExecuTIon 动态图机制,让开发变得更加简单和直观。
以下为 TensorFlow 被大家广为称赞的优点:
TensorFlow 的 Saver 对象很容易使用,并为检查点(check-poinTIng)提供了更多选择。
在序列化中,TensorFlow 的主要优点是可以将整个图保存为协议缓冲区。这包括参数和运算。此外,该图可以通过其他支持的语言 (C++,Java) 加载。这对不支持 Python 的调度栈来说至关重要。理论上,在改变模型源代码之后,你想要运行旧模型时它也能有所帮助。
支持移动和嵌入式部署,虽然将 TensorFlow 部署到 Android 或 iOS 上需要大量的工作,但不必用 Java 或 C++重写模型的整个推理程序。
此外,TensorFlow Serving 支持高性能的服务器端部署,可以支持用户轻松地换用模型而不会降低服务性能。
另外,它在年底引入 Eager ExecuTIon——一种命令式、由运行定义的接口,一旦从 Python 被调用可立即执行操作,这使得 TensorFlow 的入门学习变得更简单,也使得研发工作变得更直观。
GitHub 地址:https://github.com/tensorflow/tensorflow