社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

TensorFlow过去这一年:最好用的深度学习框架,并且越来越好

AI前线 • 6 年前 • 328 次点击  
作者|Martin Heller,InfoWorld 特约编辑
编译|Debra
编辑|Emily
AI 前线导读:TensorFlow 更新到 r1.5 版本后,这个 Google 的机器学习和神经网络开源库功能变得更强、更成熟,也更容易学习和使用。

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

也许去年你会认为 TensorFlow 是一个太难学或不成熟的深度学习框架,但现在可能不会这么想了。

自我 2016 年 10 月回顾了 TensorFlow r0.10 版本以来,Google 的这个深度学习开源框架已经变得更加成熟,添加了更多的算法和部署选项,而且更容易开发。目前,TensorFlow 已经更新到 r1.5,还有后续的预发布版本 r1.6(主分支和日常建模)。

TensorFlow 项目的活跃度一直相对较高。据粗略计算,目前 GitHub 上的 TensorFlow 代码库共有 2.7 万次提交,被收藏 8.5 次,以及 4.2 万个 forks。这些让人印象深刻的数字反映其活跃度和对人们的吸引力,甚至超过了 Node.js 代码库。相比之下,得到亚马逊大力支持的 MXNet 框架的活跃度低得多:约不到 7 千次提交,1.3 万次收藏,以及不到 5 千个 forks。2017 年 2 月 TensorFlow r1.0 发布时的另一个统计数据显示,人们在在线的 6000 多个开源代码库中使用了 TensorFlow。

在这篇回顾文章中,我将集中讨论截至 2018 年 1 月,TensorFlow 的现状以及相比去年增加了哪些重要的功能。

TensorFlow 功能

和去年一样,TensorFlow 可以运行并训练手写数字分类、图像识别、文字嵌入、递归神经网络、用于机器翻译的序列——序列模型,自然语言处理和基于 PDE(偏微分方程)的深度神经网络。它仍然支持 CPU 和 Nvidia GPU,可以在 Ubuntu Linux、MacOS、Android、iOS 和 Windows 上运行,支持与用于训练相同模型的大规模产品预测,只是会更加灵活。它仍然是自动分化的,在 TensorBoard 中仍然有一个模型可视化工具,(抱歉,R 和 Scala 程序员们)仍然使用 Python 语言提供最好的支持。

自 r0.10 版本以来,TensorFlow 的改进很大,增加了很多功能和附加功能,并修复了许多错误,所以我此次仅提及它的亮点。例如,各种版本升级了 CUDA 和 cuDNN 库支持,通过采用最新的 Nvidia GPU 优化代码提高了性能,并增加了性能更优的 windows HDFS(Hadoop 文件系统)支持,以及新的求解器和更好的 Go 支持。经过几个月的预测,特定域的 TensorFlow 图表编译器 XLA 的性能提高,还发布了一款排错程序。与此同时,有了 PyPI 和 pip 等标准的 Python 基础结构,以及科学计算社区广泛使用的 NumPy 软件包,TensorFlow 得到更多优化。

RNN(经常用于自然语言处理的递归神经网络)支持有了较大的进步,新的英特尔 MKL(数学核心库)集成也提高 CPU 深度学习性能方面的性能。在编程的易用性方面,TensorFlow 库中添加了罐式估算器(预定义的模型层),包括若干回归器和分类器。此外还增加了用于统计分布、信号处理基元和图像可微分重采样的库,并为 TensorFlow 量身定制了 Keras(高级神经网络 API,其标准实现也可以在 MXNet、Deeplearning4j、Microsoft Cognitive Toolkit 和 Theano 上运行)。若干模块被移入核心库也显示出其高效性,服务器库的生产部署也得到改进。

此外,TensorFlow 还添加了一个训练数据集库,并保证向后兼容性,而这对开发标准训练数据集的新模型很有用。另外,它还添加了 Java 支持,并进行了多次改进。最后,在 TensorFlow r1.5 中发布了 eager execution (支持命令式编程风格的 TensorFlow 实验性界面,如 NumPy)和 TensorFlow Lite(预测移动和嵌入式设备)预览版。

TensorFlow 安装

总的来说,TensorFlow 的安装已经有了明显的改善。和之前一样,安装 TensorFlow 的方法有多种,包括 Python 虚拟环境,“本地”pip、Docker 和源码构建。

TensorFlow 团队建议使用 virtualenv 进行安装,但我使用的是“原生”pip。

除了编号发布版本的二进制文件外,TensorFlow 团队现在还为 Linux、Mac 和 Windows 提供主分支 Python 隔夜版本二进制文件。调用以下命令可以轻松安装隔夜版本 Mac CPU wheel(参见上图):

sudo pip 安装 tf 隔夜版本

尽管目前的 master 分支文档声称,三个平台的 CPU 和 GPU 版本都有隔夜版本,但我无法为 Mac 安装 GPU 版本,因为 Pip 找不到它。根据我以往的经验,Mac GPU 版本虽然能安装成功,但并不能使用,直到 r1.2 发布,Mac GPU 版本被删除。我不确定在 r1.6 版本中恢复 Mac GPU 的计划是否属实,或者隔夜构建文档是否有误。无论如何,在不改写当前安装的情况下快速安装 GPU 总比之前有了进步。

尽管如此,MacBook Pro 并不是经常使用 TensorFlow 训练深度学习模型的理想机器。在一台含有一个或多个新的高端 Nvidia GPU 的 Linux 机器上来做这件事效果会好得多,或者花上几千美元为自己购买一台专用于训练的 PC。如果您只是偶尔进行训练,那么 AWS、Azure、Google Compute Engine 或 IBM Cloud 的 GPU 都可以轻松地运行 TensorFlow。

使用 TensorFlow

一年前,TensorFlow 最大的两个问题,一是太难学,二是编写代码太多。现在,这两个问题都已经得到解决。

为了使 TensorFlow 更易学,TensorFlow 团队制作了更多的学习资料,并改进了现有的入门教程。另外还有一些第三方也制作了自己的 TensorFlow 教程,而且有很多印刷版 TensorFlow 书籍和在线 TensorFlow 课程。您甚至可以在线学习斯坦福大学的 TensorFlow 深度学习研究(CS20)课程,课程的所有的幻灯片和讲义都可以在网上找到。

TensorFlow 库新增加的部分为学习者提供了需要较少编程就可以创建和训练模型的接口。其中包括仅支持 TensorFlow 的 Keras 包 tf.kera,以及 tf.estimator,它提供了许多高级工具来处理模型,包括深层神经元的回归器和分类器网络(DNN)以及线性和 DNN 组合,再加上一个可以建立自己的估算器的基类。另外,这个数据集 API 可以让你用简单的、可重用的碎片构建复杂的输入管道。而且你不必二者择一,因为 TensorFlow-Keras 教程显示,你可以同时使用 tf.keras、tf.data.dataset 和 tf.estimator。

TensorFlow Lite

TensorFlow Lite 目前还处于开发者预览版的阶段,是针对移动和嵌入式设备的轻量级解决方案,这个版本可以让你在设备上进行机器学习推理(但不是训练),并具有低延迟性和二进制计算量少的特点。TensorFlow Lite 还支持 Android 神经网络 API 的硬件加速。

TensorFlow Lite 的基本思想是训练一个完整的 TensorFlow 模型,并将其转换为 TensorFlow Lite 模型格式。然后,您可以在 Android 或 iOS 上的移动应用程序中使用转换后的文件。

或者,您可以使用一个预先训练的 TensorFlow Lite 模型进行图像分类或智能答复。智能回复是根据上下文信息,从选项中进行选择做出回应,实质上与 Google Gmail 客户端中的回复预测功能相似。

另一个方法是用新的标记数据集重新训练现有的模型,这种技术可以显著减少训练时间。此教程被称为 TensorFlow for Poets。

TensorFlow Serving

TensorFlow Serving 是一个可以适应各种生产环境的高度灵活、高性能的机器学习模型服务系统。它不仅可以用于单一的模型,用户可以使用多个版本的多个服务器,也可以请求使用特定模型的最新版本或特定版本 ID,这样就可以轻松地尝试各种新的算法和实验。

您可以将复合模型表示为多个独立服务器或单个组合服务器。源(sources)控制服务器的访问权,可以从任意存储系统发现服务器。

Eager Execution

Eager Execution 是 TensorFlow 的一个实验性的接口,风格类似于 NumPy 的命令式编程。当您启用 Eager execution 时,TensorFlow 将立即启动操作。如此,您就不必用 Session.run()执行一个预先构建的图。

虽然只是没有前向兼容性保证的预览 / 前置(pre-alpha)版本,它不失为简化 TensorFlow 矩阵操作和模型代码的另一个有用的方法。Eager Execution 也使得调试 TensorFlow 代码比运行会话更容易。

Eager Execution 与 NumPy 数组、GPU 加速、自动分化以及在 tf.layers 模块中使用 Keras 样式的图层类兼容。您可以发布用于 TensorBoard 的摘要,但是需要使用摘要类的新版本,而且 Eager Execution 会发出警告:“流畅的分布式和多 GPU 训练与 CPU 性能体验还有待完善”。

TensoTensorFlow 与竞争对手

总体而言,TensorFlow 始终处于机器学习和深度学习框架的前沿。

然而,虽然 TensorFlow 在不断完善,深度学习框架竞品也在不断进步。性能良好且已经得到扩展,并入 Apache 基金会麾下的 MXNet,在功能和性能方面也在不断改进。Microsoft Cognitive Toolkit 也在许多方面取得了长足进展,包括支持 Keras 和(gasp!)TensorBoard。 Facebook 的 Caffe2 是 Caffe 的一个重要的改写版本,在图像处理卷积网络中增加了递归和 LSTM(长短期记忆)网络。

开源的 H2O.ai 预测引擎通过增加一个专有超参数调整和功能工程层 Driverless AI而性能得以提升,虽然意义重大,但价格昂贵。Scikit Learn 仍然很好用,它支持 ML 但不支持深度神经网络。对于那些已经使用 Spark 并且不需要训练深度神经网络的人来说,Spark MLlib 是一个很好的选择。

费用:Apache License 2.0 认证的免费开放源代码。

平台:推荐使用 Ubuntu 14.04+,MacOS 10.11+,Windows 7+; Nvidia GPU 和 CUDA。目前,大多数云服务支持在 Nvidia GPU 上运行的 TensorFlow。另外,TensorFlow Lite 能够在 Android 和 iOS 上运行经过训练的模型。

优点
  • 多种模型和算法

  • 在含有 GPU 或 TPU 的硬件上表现出色

  • 支持 Python,现已与 NumPy 很好地结合

  • 极好的文档

  • 显示计算网络图很棒的软件

缺点
  • 虽然比之前简单,但仍然很难学

  • 对 Java,C 和 Go 的支持滞后

  • 不支持 R 或 Lua


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/W1l6GAgOrN
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/6232
 
328 次点击