Tensorflow中的默认全局variable_scope
是什么?我该如何检查物体?有没有人有这个想法?
答案 0 :(得分:2)
从技术上讲,所有变量都没有全局变量范围。如果你运行
x = tf.Variable(0.0, name='x')
从脚本的顶层,将在默认图形中创建一个没有变量范围的新变量x
。
但是,tf.get_variable()
函数的情况有点不同:
x = tf.get_variable(name='x')
它首先做的是调用tf.get_variable_scope()
函数,它返回当前变量作用域,然后从本地堆栈中查找作用域:
def get_variable_scope():
"""Returns the current variable scope."""
scope = ops.get_collection(_VARSCOPE_KEY)
if scope: # This collection has at most 1 element, the default scope at [0].
return scope[0]
scope = VariableScope(False)
ops.add_to_collection(_VARSCOPE_KEY, scope)
return scope
请注意,此堆栈可以为空,在这种情况下,只需创建一个新范围并将其推送到堆栈顶部。
如果此是您需要的对象,则可以通过调用以下方式访问它:
scope = tf.get_variable_scope()
从顶层开始,或者如果您已经在范围内直接转到ops.get_collection(_VARSCOPE_KEY)
。这正是新变量通过调用tf.get_variable()
函数获得的范围。它是您可以轻松检查的类tf.VariableScope
的普通实例。