1.计算图

  • 用户不定义计算图时,系统会自动维护一个默认的计算图,tensorflow 会自动将定义的所有计算添加到默认的计算图
1
tf.get_default_graph() # 获取当前的默认图
  • 用户自己创建计算图,用with创建图指定为默认计算图后,下面的运算都在这个计算图内,变量为该计算图独有,不与其他计算图共享
1
2
3
4
g1 = tf.Graph()
with g1.as_default() :
a=tf.get_variable("a",[2],initializer=tf.ones_initializer())
b=tf.get_variable("b",[2],initializer=tf.zeros_initializer())
  • 获取某个变量的计算图,如变量a
1
a.graph()

2.张量

  • 张量只是引用了程序中的运算结果而不是一个真正的数组,张量保存的是运算结果的属性,而不是真正的数字
1
2
3
4
5
6
import tensorflow as tf 
a=tf.constant([1.0,2.0],name ="a")
b=tf.constant([3.0,4.0],name ="b")
result=a+b
print(result)
#输出 Tensor ("add:0",shape=(2,), dtype=float32)

add:0 :由加法得来的第一个输出
shape=(2,):形状为2的数组,只有一个维度,注意不是2*1,
dtype=float32:元素类型为float32

要想获得result的真值需定义会话sess进行真正的运算
使用sess.run(result)
result.eval(session=sess)
sess为默认会话时result.eval()

3.会话(Session)

  • 定义会话
1
2
3
4
5
6
# 接上
with tf.Session() as sess :
tf.initialize_all_variables()
print(sess.run(result))

#输出[ 4. 6.]
  • 指定sess为默认会话
1
2
3
sess = tf.Session()
with sess.as default():
<with-block>

在定义计算时tensorflow会自动生成一个默认的计算图,如果没有特殊指定,定义的运算会自动加入这个计算图中。通过手动指定,会话也可以成为默认的(tensorflow不会自动生成默认的会话)