Tensorflow中Session是什么

翻译自:What is a TensorFlow Session?

好多人搞不清楚tf.Graph 与tf.Session ,这很简单(原文是 It's simple :p ):

  • Graph定义了计算。 它不计算任何值,它不包含任何值,它是代码中定义的指定操作。
  • Session允许执行Graph或Graph的一部分。 它分配资源(在一台或多台机器上),并保存中间结果和变量的实际值。
    我们来看一个例子。

定义Graph

我们定义一个带有变量和三个操作的图:变量总是返回我们变量的当前值。 initialize将初始值42赋给该变量。 assign将新值为13赋给该变量。

graph = tf.Graph()
with graph.as_default():
    variable = tf.Variable(42, name='foo')
    initialize = tf.initialize_all_variables()
    assign = variable.assign(13)

注:Tensorflow会被帮我们创建一个默认的Graph,前两行的代码可以省略。

在Session中运行计算

要运行刚才定义的三个操作中的任何一个,我们需要为Graph创建一个Session。 Session还将分配内存来存储变量的当前值。

with tf.Session(graph=graph) as sess:
  sess.run(initialize)
  sess.run(assign)
  print(sess.run(variable))
# Output: 13

变量的值仅在一个会话中有效, 如果我们尝试在第二个会话中查询该值,TensorFlow将引发一个错误,因为该变量没有在那里初始化。

with tf.Session(graph=graph) as sess:
  print(sess.run(variable))
# Error: Attempting to use uninitialized value foo

当然,我们可以在多个Session中使用图表,我们只需要重新初始化变量。 新的Session中的值将与第一个完全独立:

with tf.Session(graph=graph) as sess:
  sess.run(initialize)
  print(sess.run(variable))
# Output: 42
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 儿童有些他们对世界的理解,但是这些与严格意义上的科学理论有区别,这仅仅是一种朴素理论。例如儿童对力和运动的迷思概...
    小潘老师搞教育阅读 1,357评论 0 22
  • 旅行的目的是什么,打算停留多久 拜托,一声又一声,无措和茫然 穿着睡衣在机场随意走动 寻找生存之道 那是家,我不害...
    停留在过去的未来阅读 556评论 0 0
  • 之前很火的一篇文章《寒门再难出贵子》讲述了一群重点大学毕业生,被安排到银行实习,在实习过程中来自不同家庭背景的孩子...
    竹夕颜阅读 891评论 2 2