Graph#

Graphfunction 用来表示函数的计算过程。每个图包含一组 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