1.计算图
- 用户不定义计算图时,系统会自动维护一个默认的计算图,tensorflow 会自动将定义的所有计算添加到默认的计算图
- 用户自己创建计算图,用
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())
|
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.]
|
1 2 3
| sess = tf.Session() with sess.as default(): <with-block>
|
在定义计算时tensorflow会自动生成一个默认的计算图,如果没有特殊指定,定义的运算会自动加入这个计算图中。通过手动指定,会话也可以成为默认的(tensorflow不会自动生成默认的会话)