开发 | 谷歌刚发布的深度学习动态计算图工具TensorFlow Fold是什么?

2 月 7 日,谷歌通过博客正式发布了 TensorFlow Fold,该库针对 TensorFlow 1.0 框架量身打造,可以帮助深度学习开发者根据不同结构的输入数据建立动态的计算图(Dynamic Computation Graphs),简化了模型训练阶段对输入数据的预处理过程,提升了系统的运行效率。

一般而言,大部分的深度学习项目都需要对模型的训练数据进行一定程度的预处理。在这个过程中,各种不同规模和结构的输入数据(例如不同分辨率的图片数据)将被裁剪成相同的维度和尺寸,然后被压入栈,等待模型训练阶段的批处理流程。这一步骤之所以至关重要,是因为它使得 TensorFlow 等高性能的深度学习框架可以并行地针对不同的输入数据运行同一个计算图,加上当前的 GPU 和多核 CPU 普遍支持的 SIMD(Single Instruction Multiple Data,单指令多数据流) 等加速技术,大大提升了深度学习模型的运算速度。

然而,依然存在诸多问题域无法进行一般的预处理,因此模型必须针对不同的输入数据建立不同的计算图。例如自然语言理解中的解析树(parse trees),源代码中的抽象语法树(abstract syntax trees)以及网页中的 DOM 树等等。在这些问题中,不同的输入数据具有不同的计算图,而且这些计算图并不能划分到同一个批处理流程中,因而也就无法实现对处理器、内存和高速缓存的最高效利用。

谷歌此次发布的 TensorFlow Fold 完美解决了这一问题。按照谷歌官方博客的介绍,TensorFlow Fold 库会根据每个不同的输入数据建立单独的计算图,因为各个输入数据都可能具有各自不同的规模和结构,因此计算图也应该各不相同。此后,动态批处理功能将自动组合这些计算图,以实现在输入数据内部和不同输入数据之间的批处理操作,同时还可以通过插入一些附加指令来实现不同批处理操作之间的数据互通。更重要的是,相比于其他实现,TensorFlow Fold 将 CPU 的速度提高了 10 倍以上,GPU 的速度提高了 100 倍。

更全面的原理介绍详见《DEEP LEARNING WITH DYNAMIC COMPUTATION GRAPHS》,论文链接如下: https://openreview.net/pdf?id=ryrGawqex

上图的动画展示了一个利用动态批处理运行的递归神经网络。相同颜色的操作被划分到同一次批处理中,这使得 TensorFlow 能够更高效地运行。其中Embed操作负责将单词转换为向量表示,FC(完全连接,Fully Connected)操作负责将单词向量组合为短语的向量。该网络最后的输出是一个完整句子的向量表示。虽然这里只展示了一个针对单一语句的解析树,但实际上该网络可以在任意形状和大小的多个解析树上并行地进行动态批处理。

目前,谷歌已经在 Github 平台开源了 TensorFlow Fold 库的源代码。需要注意的是,目前 TensorFlow Fold 只在 Linux 平台进行了测试,而且由于API接口的变化,TensorFlow Fold 目前也只适配了 TensorFlow 1.0 。另外,TensorFlow Fold 兼容 Python 2.7 和 3.3+ 版本。详细的安装和文档说明请见 Github 页面: https://github.com/tensorflow/fold

Via Googleblog锋网雷锋网

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-02-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI黑科技工具箱

1.试水:可定制的数据预处理与如此简单的数据增强(下)

上一部分我们讲了MXNet中NDArray模块实际上有很多可以继续玩的地方,不限于卷积,包括循环神经网络RNN、线性上采样、池化操作等,都可以直接用NDArra...

4073
来自专栏ATYUN订阅号

使用Python完成你的第一个学习项目

你是否想使用python进行机器学习但却难以入门? 在这篇教程中,你将用Python完成你的第一个机器学习项目。 在以下的教程中,你将学到: 下载并安装P...

67911
来自专栏SnailTyan

非极大值抑制(Non-Maximum Suppression)

博客:noahsnail.com  |  CSDN  |  简书 |   云+社区

6560
来自专栏北京马哥教育

20行 Python 代码实现验证码识别

一、探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如...

5508
来自专栏AI科技大本营的专栏

TensorSpace:一套用于构建神经网络3D可视化应用的框架

今天要为大家推荐一套超酷炫的,用于构建神经网络 3D 可视化应用的框架——TensorSpace。

871
来自专栏AI研习社

Github 项目推荐 | 用 TensorFlow 实现的模型集合

该库包含了大量用 TensorFlow 实现的不同模型。 官方模型(official models) 文件里是使用 TensorFlow 高级 API 的示例模...

3766
来自专栏大数据智能实战

基于tensorflow 1.0的图像叙事功能测试(model/im2txt)

作为多模态数据处理的经典,图像自动打标签(图像叙事功能)一直是一项非常前沿的技术,涉及到机器视觉,自然语言处理等模块。 幸运的是,谷歌基于tensorflow将...

5626
来自专栏TensorFlow从0到N

TensorFlow从0到1 - 5 - TensorFlow轻松搞定线性回归

上一篇 第一个机器学习问题 其实是一个线性回归问题(Linear Regression),呈现了用数据来训练模型的具体方式。本篇从平行世界返回,利用Tenso...

3658
来自专栏ATYUN订阅号

自相关与偏自相关的简单介绍

自相关和偏自相关图在时间序列分析和预测中经常使用。这些图生动的总结了一个时间序列的观察值与他之前的时间步的观察值之间的关系强度。初学者要理解时间序列预测中自相关...

5414
来自专栏Python中文社区

基于RNN自动生成古诗

專 欄 ❈ 作者:yonggege,Python中文社区专栏作者 GitHub地址:https://github.com/wzyonggege ❈ 0. ch...

2585

扫码关注云+社区