Tensorflow中的默认variable_scope是什么?

时间:2017-10-22 04:36:21

标签: variables tensorflow machine-learning scope

Tensorflow中的默认全局variable_scope是什么?我该如何检查物体?有没有人有这个想法?

1 个答案:

答案 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的普通实例。