1.计算图
- 用户不定义计算图时,系统会自动维护一个默认的计算图,tensorflow 会自动将定义的所有计算添加到默认的计算图
tf.get_default_graph() # 获取当前的默认图
- 用户自己创建计算图,用
with
创建图指定为默认计算图后,下面的运算都在这个计算图内,变量为该计算图独有,不与其他计算图共享
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
a.graph()
2.张量
- 张量只是引用了程序中的运算结果而不是一个真正的数组,张量保存的是运算结果的属性,而不是真正的数字
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)
- 定义会话
# 接上
with tf.Session() as sess :
tf.initialize_all_variables()
print(sess.run(result))
#输出[ 4. 6.]
- 指定sess为默认会话
sess = tf.Session()
with sess.as default():
<with-block>
在定义计算时tensorflow会自动生成一个默认的计算图,如果没有特殊指定,定义的运算会自动加入这个计算图中。通过手动指定,会话也可以成为默认的(tensorflow不会自动生成默认的会话)