什么是默认的全局variable_scope
在Tensorflow? 我怎样才能检查对象? 有没有人想过这想法?
Answer 1:
从技术上讲,有一个为所有变量没有全局变量的作用域 。 如果你运行
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
,你可以很容易地检查。
文章来源: What is the default variable_scope in Tensorflow?