tensorflow基础知识(四) Sesstion会话

在tensorflowbian编程思想中,我们说到每个计算图都必须要在一个会话Session中执行。本节主要讲会话的作用以及怎么使用会话。

1. 会话(Session)的作用

会话(Session)可以管理*TensorFlow运行时的所有资源。 计算图都是在Sesstion中运行的,因此会话中拥有很多资源,并且Sesstion可以对这些资源进行管理。例如,当所有计算完成后,可以使用Session.close()释放会话资源*,这样的资源管理可以避免资源浪费。

2. 会话的生成方式

主要有:

  • 函数生成法 tf.sesstion()
  • 上下文管理器 with tf.sesstion() as sess
  • 默认会话 with sess.as_default()
  • 交互式会话 tf.InteractiveSession()

2.1 使用 tf.sesstion() 函数生成法

    #创建一个会话
    sess = tf.Session()

    #使用这个会话可以得到张量的结果,例如sess.run(result)
    sess.run(op)

    #关闭会话
    sess.close()

注:

最后需要加上
sess.close()
来关闭会话

2.2 使用 上下问管理器

#创建一个会话,通过上下文管理器管理会话
    with tf.Session() as sess:
        sess.run(op)

2.3 使用 默认会话

在前面计算图我们知道,可以指定某个计算图为默认图,同样的,我们用函数tf.session()生成的sess,可以使用sess.as_default()方法手动指定默认会话。

a = tf.constant([1.0])
b = tf.constant([2.0])
output = a + b
sess = tf.Session()
with sess.as_default():

    print(result.eval()) #计算张量的结果

2.4 使用交互式会话

交互式环境下,比如iPython,直接使用tf.InteractiveSession() 构造默认会话.那么Tensor.eval() 和 Operation.run() 方法会使用这个默认会话去执行操作。

sess=tf.InteractiveSession()
a=tf.constant(5)
b=tf.Variable(3)

init_op = tf.global_variables_initializer() #变量同样需要先初始化
c=tf.multiply(a,b)

sess.run(init_op)
print (sess.run(c))

3. tf.InteractiveSession()与tf.Session()的区别

tf.InteractiveSession()实际上构建了一个默认会话,且 Tensor.eval() 和 Operation.run() 方法会使用这个默认会话去执行操作 run ops.

  • tf.Session()需要在启动session之前先构建整个计算图,然后启动该计算图。

  • tf.InteractiveSession()可以先构建一个session然后再定义操作(operation),主要最后要sess.close()

猜你喜欢

转载自blog.csdn.net/promisejia/article/details/81587343