在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日)
本文深入探讨了TensorFlow中计算图的概念与应用,包括张量、流、计算图的创建与管理,以及如何通过计算图指定设备进行计算,实现GPU加速。同时,介绍了集合在计算图中的作用,如变量管理、日志生成等。
621

被折叠的 条评论
为什么被折叠?



