一文上手最新Tensorflow2.0系列(一)|常见的基本概念 | 您所在的位置:网站首页 › 胃这个字怎么读 › 一文上手最新Tensorflow2.0系列(一)|常见的基本概念 |
⼀⽂上⼿最新Tensorflow2.0系列(⼀)|常见的基本概念 在本⽂中我们将对TensorFlow中的⼀些基本概念做⼀个简单的介绍,希望进⼀步了解这些概念及其实现的读者,可以参考官⽅的⽩⽪书(主要是 15年的)以及TensorFlow官⽹的⼀些⽂档。需要注意的是,这些资料中的部分内容对于TensorFlow2.0来说已经不适⽤了,读者在阅读的时候 需要留意。 1. TensorFlow常见基本概念 1.1 计算图 计算图(computation graph)是⼀个有向图(directed graph),是对TensorFlow中计算任务的抽象描述,也称为数据流图(data flow graph)。TensorFlow使⽤计算图将计算表⽰成了独⽴的指令之间的依赖关系,在计算图中,节点表⽰计算单元(即⼀个独⽴的运算操作),图 中的边表⽰计算使⽤或产⽣的数据。在TensorFlow1.x版本中,当我们使⽤TensorFlow低级API进⾏编程时,我们⾸先需要定义好计算图,然后 创建TensorFlow会话(session)来执⾏计算图。 在TensorFlow1.x版本中采⽤的是静态图机制,我们需要预先定义好计算图,然后再可以反复的调⽤它(1.x版本有提供Eager Execution接⼝, 让⽤户可以使⽤动态图)。TensorFlow2.0则采⽤了动态图机制(1.x版本的Eager Execution在2.0中成为了默认的执⾏⽅式),我们可以像执 ⾏普通的python程序⼀样执⾏TensorFlow的代码,⽽不再需要⾃⼰预先定义好静态图,调试代码也更加容易。TensorFlow1.x的静态图机制⼀ 直被⽤户所诟病,调整为动态图机制是TensorFlow2.0⼀个最重⼤的改进,并且其也提供了⼀些⽅法来保留静态计算图的⼀些优势。 1.2 会话 在1.x版本中,会话(session)是客户端程序与TensorFlow系统进⾏交互的接⼝,我们定义好的计算图必须在会话中执⾏。当会话被创建时会初 始化⼀个空的图,客户端程序可以通过会话提供的“Extend”⽅法向这个图中添加新的节点来创建计算图,并通过“tf.Session”类提供 的“run”⽅法来执⾏计算图。⼤多数情况下我们只需要创建⼀次会话和计算图,之后我们可以在会话中反复执⾏整个计算图或者其中的某些⼦ 图。 TensorFlow2.0采⽤了动态图机制,我们不需要在会话中执⾏计算图了,“tf.Session”类被放到了兼容模块“tensorflow.compat.v1”中,这 个模块⾥有完整的TensorFlow1.x的API。为了保留静态图的优势(例如性能优化和可移植性等),TensorFlow2.0提供了“tf.function”⽅ 法,使⽤“tf.function”修饰的python函数,TensorFlow可以将其作为单个图来运⾏。 1.3 运算操作和运算核 计算图中的每⼀个节点就是⼀个运算操作(operation,通常简称op),每⼀个运算操作都有名称,并且代表了⼀种类型的抽象运算,例 如“MatMul”代表矩阵的乘法。每个运算操作都可以有⾃⼰的属性,但是所有的属性都必须被预先设置,或者能够在创建计算图时根据上下⽂推 断出来。 通过设置运算操作的属性可以让运算操作⽀持不同的张量(tensor)元素类型,例如让向量加法操作运算只接受浮点类型的张量。运算 核(kernel)是⼀个运算操作在某个具体的硬件(⽐如CPU或GPU)上的实现,在TensorFlow中可以通过注册机制加⼊新的运算操作或者为已 有的运算操作添加新的运算核。 TensorFlow的部分运算操作 |
CopyRight 2018-2019 实验室设备网 版权所有 |