TensorFlow中的三种图

图(graph)是TensorFlow用于表达计算任务的一个核心概念。

Graph

graph被定义为一些operation和tensor的集合。例如,

a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
c = tf.placeholder(tf.float32)
d = a*b+c
e = d*2

该图如下,其中每个圆圈表示一个operation,椭圆到椭圆的边为tensor,箭头的指向表示了这张图operation输入输出tensor的传递关系。



在TensorFlow运行时,Python构建的“图”并不是启动一个session之后始终不变的,TensorFlow先将Python代码描绘的图转换成protocol buffer,再通过c/c++/cuda运行protocol buffer所定义的图。

graphdef

从Python graph中序列化出来的图为graphdef,是由许多protocol buffer组成的。

node {
  name: "Placeholder"     # 注释:这是一个叫做 "Placeholder" 的node
  op: "Placeholder"
  attr {
    key: "dtype"
    value {
      type: DT_FLOAT
    }
  }
  attr {
    key: "shape"
    value {
      shape {
        unknown_rank: true
      }
    }
  }
}
node {
  name: "Placeholder_1"     # 注释:这是一个叫做 "Placeholder_1" 的node
  op: "Placeholder"
  attr {
    key: "dtype"
    value {
      type: DT_FLOAT
    }
  }
  attr {
    key: "shape"
    value {
      shape {
        unknown_rank: true
      }
    }
  }
}
node {
  name: "mul"                 # 注释:一个 Mul(乘法)操作
  op: "Mul"
  input: "Placeholder"        # 使用上面的node(即Placeholder和Placeholder_1)
  input: "Placeholder_1"      # 作为这个Node的输入
  attr {
    key: "T"
    value {
      type: DT_FLOAT
    }
  }
}

以上三个nodedef定义了两个placeholder和一个木

你可能感兴趣的:(TensorFlow中的三种图)