如果想对TensorFlow进行灵活的运用,就需要知道TensorFlow中一些概念与TensorFlow程序的搭建流程,这里我们需要操作(op)、图 (graph)、 会话 (Session) 、变量 (Variable) 等基本概念。同时应该这些变量一般的作用为:
- 使用图 (graph) 来表示计算任务。
- 在被称之为 会话 (Session) 的上下文 (context) 中执行图。
- 使用 tensor 表示数据
- 通过 变量 (Variable) 维护状态
- 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据.
文章目录
- 变量 (Variable)
- 张量(Tensor )
- 操作(op)
- 图 (graph)
- 构件图
- 启动图
- 会话 (Session)
- 会话的创建与关闭
- 方法一 tf.Session()
- 方法二 with tf.Session() as sess:
- 实例
- 参考
变量 (Variable)
当训练模型时,用变量来存储和更新参数。变量包含张量 (Tensor)存放于内存的缓存区。建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可在之后模型训练和分析是被加载。
张量(Tensor )
学习TensorFlow自然得知道Tensor是什么东西?tensor可以 看作是一个 n 维的数组或列表。一个 tensor 包含一个静态类型 rank, 和 一个 shape。TensorFlow在进行计算的时候全部是使用的Tensor,每个 Tensor 可以看做类型化的多维数组。
操作(op)
操作(op)是在TensorFlow执行最基本的运算,一个 op 获得 0 个或多个 Tensor, 执行计算, 产生 0 个或多个 Tensor。操作就相当于基本的运算,每一个TensorFlow程序都是由很多的操作组成的。
现在有三个节点, 两个 constant() op, 和一个matmul() op。
图 (graph)
TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段。在构建阶段, op 的执行步骤被描述成一个图。 在执行阶段, 使用会话执行执行图中的 op。通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op。
构件图
构建图的第一步, 是创建源 op (source op). 源 op 不需要任何输入, 例如 常量 (Constant). 源 op 的输出被传递给其它 op 做运算。Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它 op 构造器作为输入。TensorFlow Python 库有一个默认图 (default graph), op 构造器可以为其增加节点. 这个默认图对 许多程序来说已经足够用了。
默认图现在有三个节点, 两个 constant() op, 和一个matmul() op。
启动图
构造阶段完成后, 才能启动图. 启动图的第一步是创建一个 Session 对象, 如果无任何创建参数, 会话构造器将启动默认图.
会话 (Session)
Tensorflow依赖于一个高效的C++后端来进行计算。与后端的这个连接叫做会话 (Session)。一般而言,使用TensorFlow程序的流程是先创建一个图,然后在session中启动它。
会话的创建与关闭
会话创建与关闭有两种方法,不同方法创建的会话关闭的方法不一样。
方法一 tf.Session()
使用
方法二 with tf.Session() as sess:
实例
上边程序的输出为:
代码中 assign() 操作是图所描绘的表达式的一部分, 正如 add() 操作一样. 所以在调用 run() 执行表达式之前, 它并不会真正执行赋值操作.
通常会将一个统计模型中的参数表示为一组变量. 例如, 你可以将一个神经网络的权重作为某个变量存储在一个 tensor 中. 在训练过程中, 通过重复运行训练图, 更新这个 tensor.