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
)加载图以及所有变量,这将导致致命错误。
答案 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 /”))来防止自动递增。