【问题标题】:Tensorflow: empty computational graph & garbage collectionTensorflow:空计算图和垃圾收集
【发布时间】:2016-06-27 06:44:16
【问题描述】:

1 个空图错误

嘿,我正在尝试完全分开运行多个张量流图,但遇到了以下继承问题。

还有

import tensorflow as tf


class A:

    g = tf.Graph()
    g.as_default()
    s = tf.Session(graph=g)

    x = tf.placeholder(tf.float32)

    __call__ = lambda self,X: self.s.run(self.y, {self.x:X})


class B(A):

    y = 2 * A.x


test = B()
print test([1,1,2])

错误

RuntimeError: The Session graph is empty.  Add operations to the graph before calling run()

2 - 垃圾收集

我也很想知道删除这些不同的图,如果我用 Session().close() 关闭会话并且它是唯一知道该图的会话,该图现在会消失并被垃圾收集吗?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    问题 1

    如果您希望将您的操作添加到特定图表中,您需要使用with g.as_default() 作为上下文:

    class A:
    
        g = tf.Graph()
        with g.as_default():
            x = tf.placeholder(tf.float32)
    
        s = tf.Session(graph=g)
    
        __call__ = lambda self,X: self.s.run(self.y, {self.x:X})
    
    
    class B(A):
    
        with g.as_default():
            y = 2 * A.x
    
    
    test = B()
    print test([1,1,2])
    

    (PS:你的代码写得很糟糕,希望只是为了测试)


    问题 2

    图表不受相应会话的影响。

    您可以创建图表,打开会话并关闭它,图表将保持不变:

    g = tf.Graph()
    with g.as_default():
        # build graph...
        x = tf.constant(1)
    
    sess = tf.Session(graph=g)
    sess.run(x)
    sess.close()
    
    # Now we can create a new session with the same graph
    sess2 = tf.Session(graph=g)
    sess2.run(x)
    sess2.close()
    

    【讨论】:

    • 您无法删除或关闭图表。你可以停止使用它。如果要将默认图表重置为空图表,可以使用tf.reset_default_graph()
    • 什么情况下需要建图,运行后删除?在我看来,TensorFlow 比 Theano 更好,而且每一天都变得更好。
    • 是的,在 tensorflow 中有很多更好的编译时间,但我正在尝试编写一个可修剪的神经网络,TF 和 theano 都不支持计算图修剪……至少 TF 支持添加
    • 你会不会碰巧知道持久未使用的图是否会是一个很大的优化问题?就像我选择在我的 gpu 上运行一样,它的内存是否会被未使用但已加载的 tf.Variables() 填充?
    • 是的,您不能在 TensorFlow 中删除图形节点。我猜一个有很多未使用节点的大图会有点重,但这取决于整个图的大小。关于内存和变量的问题最好在另一个 StackOverflow 问题中发布,也许 TF 团队的人会回答。
    猜你喜欢
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2012-03-21
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多