首页 > 学院 > 开发设计 > 正文

错误Tensor is not an element of this graph tensorflow

2019-11-08 18:39:56
字体:
来源:转载
供稿:网友

1、说明:tensorflow使用图来定义计算,在session中来执行图中定义的计算,如果没有显式的说明,那么session就跟默认的图相关联.graph 和 session应该是一一对应的.下面,举例说明,session如果和graph不一一对应的话,会出现error

[python] view plain copy 在CODE上查看代码片import tensorflow as tf    def activation(e, f, g):      return e + f + g    with tf.Graph().as_default():    a = tf.constant([5, 4, 5], name='a')    b = tf.constant([0, 1, 2], name='b')    c = tf.constant([5, 0, 5], name='c')      res = activation(a, b, c)    init = tf.initialize_all_variables()    with tf.Session() as sess:    # Start running Operations on the Graph.    sess.run(init)    hi = sess.run(res)    PRint hi  说明:运行该脚本会报错:is%20not%20an%20element%20of%20this%20graph。该错误的意思就是说操作不在图中,也就是和我们的session相关联的图中并没有该操作.why?

2、分析原因:

首先,tensorflow会为我们指定一张默认的图.然后sesssion会直接和该默认图相关联.除非我们自定义一张图.不然,我们的操作都是在那张默认图上的.然后我们分析报错的代码:

[python]%20view%20plain%20copy%20import tensorflow as tf    def activation(e, f, g):      return e + f + g    with tf.Graph().as_default():    a = tf.constant([5, 4, 5], name='a')    b = tf.constant([0, 1, 2], name='b')    c = tf.constant([5, 0, 5], name='c')      res = activation(a, b, c)  说明:此段代码描述的是,新增一张图,然后在该图上去定义操作,也就是目前我们有两张图,一张是系统自定义的图.[python]%20view%20plain%20copy%20init = tf.initialize_all_variables()    with tf.Session() as sess:    # Start running operations on the Graph.    sess.run(init)    hi = sess.run(res)    print hi  说明:此段代码,其实是描述的是,在默认的图上去定义了初始化操作,然后想在默认图上去执行res操作,注意res操作是在我们自定义的图上的。所以,当然是会报错的.

修改一:

[python]%20view%20plain%20copy%20import tensorflow as tf    def activation(e, f, g):      return e + f + g    with tf.Graph().as_default():    a = tf.constant([5, 4, 5], name='a')    b = tf.constant([0, 1, 2], name='b')    c = tf.constant([5, 0, 5], name='c')      res = activation(a, b, c)    init = tf.initialize_all_variables()    with tf.Session() as sess:    # Start running operations on the Graph.    sess.run(init)    #hi = sess.run(res)    #print hi  说明:这样修改就没问题,只在session上运行init操作,也就是在默认图上执行session操作.

修改二:

[python]%20view%20plain%20copy%20派生到我的代码片import tensorflow as tf    def activation(e, f, g):      return e + f + g    with tf.Graph().as_default():    a = tf.constant([5, 4, 5], name='a')    b = tf.constant([0, 1, 2], name='b')    c = tf.constant([5, 0, 5], name='c')      res = activation(a, b, c)      init = tf.initialize_all_variables()      with tf.Session() as sess:      # Start running operations on the Graph.      sess.run(init)      hi = sess.run(res)      print hi  说明:把所有的操作都定义在我们指定的图上面,并且,session也定义在缩进内,相当于该session只和我们定义的图相关联,只执行我们定义在图内的操作,这样就不会报错.
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表