什么是Tensorflow默认variable_scope?(What is the default

2019-09-25 16:36发布

什么是默认的全局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?