我们应该如何处理name_scope的自动增量?

时间:2018-10-17 12:11:39

标签: python tensorflow

def foo():
    with tf.Session() as sess:
        with tf.name_scope("foo") as abso:
            print(abso)

for i in range(10):
    foo()

这是测试tf的name_scope的简单代码。 该代码段的输出为

foo/
foo_1/
foo_2/
foo_3/
foo_4/
foo_5/
foo_6/
foo_7/
foo_8/
foo_9/

通过哪种方式,邮政编码的输出全部为foo/

当我想将tf模型制作为webapp时,这是一个问题。 该应用程序可以正确处理第一个请求。 但是,当涉及到第二个或更高版本的请求时,它将尝试使用另一个name_scope(例如foo_1)加载图以及所有变量,这将导致致命错误。

3 个答案:

答案 0 :(得分:1)

您可以存储由tf.name_scope方法创建的范围并重新使用它。例如:

scope = "foo"
def foo():
    global scope
    with tf.Session() as sess:
        with tf.name_scope(scope) as scope:
            print(scope)
for i in range(10):
    foo()

将打印

foo/
foo/
foo/
foo/
foo/
foo/
foo/
foo/
foo/
foo/

答案 1 :(得分:0)

在我们建立会话之前,我尝试添加tf.reset_default_graph()并成功

答案 2 :(得分:0)

请参见https://github.com/tensorflow/tensorflow/issues/6007。 如上一期所述,您可以使用绝对name_scope(例如tf.name_scope(“ foo /”))来防止自动递增。