TensorFlow阅读报告汇总(word文档良心出品).doc

上传人:桔**** 文档编号:556634246 上传时间:2022-12-07 格式:DOC 页数:13 大小:223.51KB
返回 下载 相关 举报
TensorFlow阅读报告汇总(word文档良心出品).doc_第1页
第1页 / 共13页
TensorFlow阅读报告汇总(word文档良心出品).doc_第2页
第2页 / 共13页
TensorFlow阅读报告汇总(word文档良心出品).doc_第3页
第3页 / 共13页
TensorFlow阅读报告汇总(word文档良心出品).doc_第4页
第4页 / 共13页
TensorFlow阅读报告汇总(word文档良心出品).doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《TensorFlow阅读报告汇总(word文档良心出品).doc》由会员分享,可在线阅读,更多相关《TensorFlow阅读报告汇总(word文档良心出品).doc(13页珍藏版)》请在金锄头文库上搜索。

1、TensorFlow论文阅读报告 1.基本信息题目:TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems来源:Google Research时间:2015.9作者:Martn Abadi, Ashish Agarwal, Paul Barham2.摘要TensorFlow是一个表达机器学习算法的接口,并且是执行算法的实现框架。使用 TensorFlow 表示的计算可以在众多异构的系统上方便地移植,从移动设备如手机或者平板电脑到成千的GPU计算集群上都可以执行。该系统灵活,可以被用来表示很多的算

2、法,包括深度神经网络的训练和推断算法。也已经被用于科研和应用机器学习系统在内的若干计算机科学领域或者其他领域中,例如语言识别、计算机视觉、机器人、信息检索、自然语言理解、地理信息抽取和计算药物发现。3.引言基于第一代可扩展分布式训练和推断系统 DistBelief 的经验,构建了 TensorFlow第二代大规模机器学习模型的实现和部署的系统。TensorFlow 使用类似数据流模型的计算,将这些计算映射到不同的硬件平台,例如使用包含一个或者多个 GPU 显卡的装有 Android 和 iOS 的单个机器,或运行在数百台包含数千个 GPU 的大规模训练系统。拥有一个单一的系统可以扩展分布到众多

3、的平台上可以大大简化真实场景中机器学习系统的使用,正如用分离的系统进行大规模训练和小规模的部署,会产生巨大的维护代价和较差的抽象效果。TensorFlow 的计算被表示为含状态的数据流图,在让这个系统足够灵活能够快速地实验研究中产生的新模型,并同时充分地提升产品级训练的性能和部署机器学习模型健壮性。为扩展神经网络训练搞更大的部署环境,TensorFlow 允许通过复制和并行执行一个核心模型数据流图,使client 简单地表达不同类型的并行,依赖不同计算设备合作更新一个共享的参数或者其他的状态。 对计算描述的微妙变动可以使用较低的代价来达到和尝试很多不同的并行的法。对比 DistBelief,T

4、ensorFlow 的编程模型更加灵活,性能也更好,支持在大规模的异构硬件平台上训练和使用很多的模型。4.主要技术1、编程模型和基本概念 TensorFlow 的计算由一个有向图描述,这个图中由一个节点集合组成。该图表达了数据流计算,作出了一些类型的节点保持和更新持久状态和让分支及循环控制结构类似于 Naiad 的行为方式的扩展。客户一般都会使用 TensorFlow 支持的前端语言(C+或者Python)构建一个计算图。下图表示一段样例使用 Python 构建并执行了一个 TensorFlow 的计算图:下图表示结构计算图:在一幅 TensorFlow 图中,每个节点(node)有一个或者多

5、个输入和零个或者多个输出,表示一种操作(operation)的实例化。流过图中正常的边(输出到输入)的值都是张量(tensor),任意维度的数组其中基础元素类型是指定的或者在图的构造过程中自动推断出来的。特别的边,我们称之为控制依赖(control dependencies),同样也存在在图中:这类边上没有数据流过,但是他们表示源节点必须在目标节点的控制依赖开始执行前完成运行。由于我们的模型包括可变状态,控制依赖可以被直接用来确保 happens-before 关系。我们的实现同样会插入控制依赖来确保独立操作之间的顺序,比如说作为控制内存使用最高峰值的方式。1)操作和核(kernel)一个操作

6、有一个名字。它表示一个抽象的计算(比如说,“矩阵相乘”或者“相加”)。一个操作可以有属性(attribute),所有的属性必须提供或者在图构造的过程中推断出以实例化一个节点来执行操作。属性通常的使用方式是让操作在不同的张量元素类型上多态(例如,两个 float 类型的张量和两个 int32 类型的张量)。核(kernel)是一种操作的特别实现,可以运行在一个特定类型的设备上(如 CPU 或者 GPU)。TensorFlow 的 binary 定义了可以通过注册(registration)机制实现的操作和核的集合上,这个集合可以通过连接额外的操作/核的定义/注册。下表表示内置于 TensorFl

7、ow 核心库的一些操作类型。2)会话(session) 客户端通过创建会话(session)和 TensorFlow 系统进行交互。为了创建一个计算图,会话接口支持外部(external)方法来提升当前由包含额外节点和边的会话图(当会话创建时初始的图是空的)。另一个由会话接口提供的主要的操作就是 Run,以需要计算的输出名称和替换某些输出节点的张量的操作集合作为其参数输入。通过控制 Run 的参数,TensorFlow 的实现可以计算所有节点的必须执行传递闭包来计算需要的输出,然后安排执行合适节点来保证他们的依赖关系。大多数 TensorFlow 的使用都是针对一个图启动一个会话,然后执行整个

8、图或者通过 Run 多次调用执行分离的子图。3)变量(variable)在大多数计算中,图都是执行多次的。大多数的张量在一次执行后不会存活。然而,变量(variable)是一种特别的操作,可以返回一个在图执行若干次过程中存活的持久化的可变张量的句柄。这个句柄可以传递给一系列特定的操作,例如 Assign 和 AssignAdd(等同于 +=)就可以改变其引用的张量了。对应 TensorFlow 在机器学习中的应用,模型的参数典型地就存放在变量引用的张量中,并作为模型训练图的 Run 的一部分进行更新。2、实现TensorFlow 系统的主要部分就是客户端,它使用了会话接口来和 master 及

9、一个或者多个的 worker processes 进行通信,每个 worker process 负责按照 master 的要求执行对一个或者多个计算设备(CPU 或者)的任意访问和在这些设备上进行图节点的计算。我们有本地和分布式实现的 TensorFlow 接口。本地实现通常是客户端、master 和 worker 都是在同一台机器上单一的操作系统进程上运行。分布式实现采用了本地实现的很多的代码,但是扩展了对客户端、master 和 worker 可以在不同的机器的不同的进程上运行的场景支持。1)设备设备是 TensorFlow 的计算核心。每个 worker 负责一个或者多个设备,每个设备有

10、一个设备类型和一个名字。设备名字由识别设备类型的部分,在 worker 中的设备索引,以及在分布式设定中,worker 的 job和任务的标志构成。2)张量张量是一种有类型的、多维度数组。支持若干张量元素类型,包含大小为从 8 bit 到 64 bit 的带符号和无符号整型,IEEE 浮点数和双精度类型、复数类型和字符串类型。后台存储通过一个分配器进行管理,该分配器由张量所处的设备确定。3)变量变量维护图执行过程中的状态信息。通常会将一个统计模型中的参数表示为一组变量。例如,你可以将一个神经网络的权重作为某个变量存储在一个 tensor 中。在训练过程中, 通过重复运行训练图, 更新这个 te

11、nsor。4)Fetch(输入)为了取回操作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时, 传入一些 tensor, 这些 tensor 会帮助你取回结果. 在之前的例子里, 可以单个节点 state, 也可以取回多个 tensor。5)Feed(输出)feed 使用一个 tensor 值临时替换一个操作的输出结果. 可以提供 feed 数据作为 run() 调用的参数. feed 只在调用它的方法内有效, 方法结束, feed 就会消失。6)单设备执行单一的worker进程运行在单一的设备上。图上的节点按照代表节点之间的顺序执行。每个节点上设置一个计数来记录这

12、个节点上还没有执行的依赖。一旦这个计数变为 0,节点就可以被调度使用,并会加入到待续的队列中。待续队列按照某个非指定的顺序处理,指派节点执行的kernel 到设备对象上。当一个节点完成执行,所有依赖这个完成节点的节点计数都会增加。3)多设备执行(1)节点的放置给定计算图,TensorFlow 实现的主要责任之一就是将计算映射到可用的设备集合上。该置放算法的输入是一个代价模型,包括对每个图节点的输入和输出张亮的规模的估计,和对每个节点在给定其输入张量时的计算时间。置放算法首先运行模拟的图的执行过程,对每个节点使用贪心策略选择一个设备。置放算法从计算图的源点开始,在系统中的每个设备上模拟相应的活动

13、。对每个在遍历中抵达的节点,会考虑可选设备的集合。对那些拥有多个可选设备的节点,置放算法使用一种贪心策略来检查在每个可能的置放节点需要的完成时间。节点操作完成最快的设备会被选作该操作的设备,置放决策会继续针对图中其他的节点进行处理。(2)交叉设备通信之前是根据设备划分节点,现在是根据发送和接受划分节点。可以保证资源设备到目的设备中需要的张量数据只被传输一次,目的设备仅为张量分配一次内存。3)分布式执行 分布式执行和多设备执行非常相似。布局算法之后,每个设备创建一个子图。发送和接受节点对在工作进程中使用远程通讯机制例如TCP、RDMA等在机器边界之间移动数据。3、扩展该部分介绍了程序模块中一些更

14、高级的功能。分别是:梯度计算、部分执行、设备限制、控制流、输入操作、队列、容器。4、优化该部分介绍了TensorFlow系统中用于提升性能和资源利用率的优化。包括:通用子表达式消除、控制数据通信和内存分配、异步kernel、用于kernel实现的优化库、有损压缩。5.总结1、TensorFlow基本使用1、使用图 (graph) 来表示计算任务.2、在被称之为 会话 (Session) 的上下文 (context) 中执行图.3、使用 tensor 表示数据.4、通过 变量 (Variable) 维护状态.5、使用 feed 和 fetch 为任意操作输入和输出数据.2、使用步骤1)构建图构建

15、图的第一步, 是创建源 op (source op). 源 op 的输出被传递给其它 op 做运算。Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它 op 构造器作为输入。 2)在一个会话中启动图构造阶段完成后, 才能启动图. 启动图的第一步是创建一个 Session 对象, 如果无任何创建参数, 会话构造器将启动默认图.Session 对象在使用完后需要关闭以释放资源. 除了显式调用 close 外, 也可以使用 with 代码块 来自动完成关闭动作。3)计算图TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段,

16、op 的执行步骤被描述成一个图. 在执行阶段, 使用会话执行图中的 op。例如, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op。 TensorFlow 支持 C, C+, Python 编程语言. 目前, TensorFlow 的 Python 库更加易用, 它提供了大量的辅助函数来简化构建图的工作, 这些函数尚未被 C 和 C+ 库支持。3、安装:支持Linux和Mac(Linux安装示例)1、安装Python的工具包pip2、安装TensorFlow3、安装Python的沙箱工具virtualenv(为了不来回修改各种环境变量)4、将TensorFlow安装到virtualenv中4、应用整个系统是分布式的,不同节点可映射到不同

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号