Graph
#
Graph
被 function
用来表示函数的计算过程。每个图包含一组 Operation
对象,这些对象代表计算单元;以及 Tensor
对象,这些对象代表在算子之间流动的数据单元。
import set_env
直接使用图(已弃用)#
可以直接构建和使用 Graph
,而无需 function
,这是在 TensorFlow 1 中的要求。但这种做法已被弃用,建议改用 function
。如果直接使用 Graph
,还需要其他已弃用的 TensorFlow 1 类来执行图,例如 tf.compat.v1.Session
。
可以使用 as_default()
上下文管理器注册默认图。然后,算子将被添加到 Graph
中而不是立即执行。例如:
import tensorflow as tf
g = tf.Graph()
with g.as_default():
# 在 `g` 中定义算子和张量。
c = tf.constant(30.0)
assert c.graph is g
d = c * c
d
<tf.Tensor 'mul:0' shape=() dtype=float32>
g.building_function # 仅当此图表示函数时返回 `True`
False
# 返回此图已知的集合的名称
g.collections
[]
g.finalized # 如果此图已经被最终确定,则为 `True`
False
计算图的 GraphDef
版本信息。(有关每个版本含义的详细信息,请参阅 GraphDef)。
g.graph_def_versions
producer: 1882
g.operations # 算子
[<tf.Operation 'Const' type=Const>, <tf.Operation 'mul' type=Mul>]
g.as_graph_def()
node {
name: "Const"
op: "Const"
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 30
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
}
node {
name: "mul"
op: "Mul"
input: "Const"
input: "Const"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
versions {
producer: 1882
}
import tensorflow as tf
g = tf.Graph()
with g.as_default():
# 创建常量算子
a = tf.constant(3)
b = tf.constant(4)
# 创建加法算子
c = a + b
# 启动会话
with tf.compat.v1.Session() as sess:
# 运行计算图并获取结果
result = sess.run(c)
print(f"a + b = {result}")
a + b = 7
import tensorflow as tf
g = tf.Graph()
with g.as_default():
# 创建常量算子
a = tf.constant(3)
b = tf.Variable(0, dtype=tf.int32) # 初始化变量 b,并指定数据类型为int32
# 创建加法算子
c = a + b
# 启动会话
with tf.compat.v1.Session() as sess:
# 初始化所有变量
sess.run(tf.compat.v1.global_variables_initializer())
# 运行计算图并获取结果
result = sess.run(c, feed_dict={b: 4})
print(f"a + b = {result}")
a + b = 3