在TensorFlow中,张量Tensor可以被简单地理解为多维数组,流Flow直观地表达了张量之间通过计算相互转化的过程。TensorFlow是一个通过计算图的形式来表述计算的编程系统。TensorFlow中的每一个计算都是计算图中的一个节点,而节点之间的边描述了计算之间的依赖关系。
在TensorFlow程序中,系统会自动维护一个默认的计算图,通过tf.get_default_graph函数
可以获取当前默认的计算图。除了使用默认的计算图,TensorFlow支持通过tf.Graph函数
来生成新的计算图。
import tensorflow as tf
g1 = tf.Graph()
with g1.as_default():
v = tf.get_variable("v", initializer=tf.zeros(shape=[1]))
g2 = tf.Graph()
with g2.as_default():
v = tf.get_variable("v", initializer=tf.ones(shape=[1]))
# 在计算图g1中读取变量”v“的取值。[0.]
with tf.Session(graph=g1) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("", reuse=True):
print(sess.run(tf.get_variable("v")))
# 在计算图g2中读取变量”v“的取值。[1.]
with tf.Session(graph=g2) as sess:
tf.global_variables_initializer().run()
with tf.variable_scope("", reuse=True):
print(sess.run(tf.get_variable("v")))
计算图可以通过tf.Graph.device函数
来指定运行计算的设备,这为TensorFlow使用GPU提供了机制。
g = tf.Graph()
# 指定计算运行的设备。
with g.device('/gpu:0'):
result = a + b
计算图的三个功能:用来隔离张量和计算、提供了管理张量和计算的机制、有效地整理TensorFlow程序中的资源。
在一个计算图中,可以通过集合collection来管理不同类别的资源。通过tf.add_to_collection函数
可以将资源加入一个或多个集合中,然后通过tf.get_collection函数
获取一个集合里面的所有资源。
TensorFlow中维护的集合列表
集合名称 | 集合内容 | 使用场景 |
---|---|---|
tf.GraphKeys.VARIABLES | 所有变量 | 持久化TensorFlow模型 |
tf.GraphKeys.TRAINABLE_VARIABLES | 可学习的变量(一般指神经网络中的参数) | 模型训练、生成模型可视化内容 |
tf.GraphKeys.SUMMARIES | 日志生成相关的张量 | TensorFlow计算可视化 |
tf.GraphKeys.QUEUE_RUNNERS | 处理输入的QueueRunner | 输入处理 |
tf.GraphKeys.MOVING_AVERAGE_VARIABLES | 所有计算了滑动平均值的变量 | 计算变量的滑动平均值 |
(最近更新:2019年04月12日)