1. tensorflow中的Session
- graph:定义一个计算图,不保存任何值,只是定义了所用代码所规定的操作
- session:允许计算图或者图的一部分,为这个分配资源并且保存中间结果的值和变量
1.1 定义图
graph = tf.Graph()
with graph.as_default():
variable = tf.Variable(42, name='foo')
initialize = tf.initialize_all_variables()
assign = variable.assign(13)
定义一个graph通过一个变量和三个操作:变量总是返回他的当前值,initialize 初始化变量值为42,assign 给变量赋新值为13.
1.2 在Session中执行计算
给graph创建一个session来运行图中定义的三个操作中的任意一个,session会分配内存去存储变量的当前值
with tf.Session(graph=graph) as sess:
sess.run(initialize)
sess.run(assign)
print(sess.run(variable))
变量的值仅在一个session中有效,如果我们尝试在session结束后查询变量值,tensorflow将会报错,因为变量在此时没有初始化.
with tf.Session(graph=graph) as sess:
print(sess.run(variable))
# Error: Attempting to use uninitialized value foo
一个graph也能使用多个session,但是必须再一次初始化变量,新session的值将会完全的独立于之前的session的
with tf.Session(graph=graph) as sess:
sess.run(initialize)
print(sess.run(variable))
# Output: 42
2. 加载graph中的所有tensor的name
sess=tf.Session()
sess.run(tf.global_variables_initializer())
saver = tf.train.import_meta_graph( 'checkpoints/lenet.ckpt.meta')
saver.restore(sess, tf.train.latest_checkpoint('checkpoints/'))
graph = tf.get_default_graph()
graph.get_operations()