|View source on GitHub|
A context manager for defining ops that creates variables (layers).
tf.compat.v1.variable_scope( name_or_scope, default_name=None, values=None, initializer=None, regularizer=None, caching_device=None, partitioner=None, custom_getter=None, reuse=None, dtype=None, use_resource=None, constraint=None, auxiliary_name_scope=True )
Used in the notebooks
|Used in the guide|
This context manager validates that the (optional)
values are from the same
graph, ensures that graph is the default graph, and pushes a name scope and a
name_or_scope is not None, it is used as is. If
name_or_scope is None,
default_name is used. In that case, if the same name has been
previously used in the same scope, it will be made unique by appending
Variable scope allows you to create new variables and to share already created ones while providing checks to not create or share by accident. For details, see the Variable Scope How To, here we present only a few basic examples.
Simple example of how to create a new variable:
with tf.compat.v1.variable_scope("foo"): with tf.compat.v1.variable_scope("bar"): v = tf.compat.v1.get_variable("v", ) assert v.name == "foo/bar/v:0"
Simple example of how to reenter a premade variable scope safely:
with tf.compat.v1.variable_scope("foo") as vs: pass # Re-enter the variable scope. with tf.compat.v1.variable_scope(vs, auxiliary_name_scope=False) as vs1: # Restore the original name_scope. with tf.name_scope(vs1.original_name_scope): v = tf.compat.v1.get_variable("v", ) assert v.name == "foo/v:0" c = tf.constant(, name="c") assert c.name == "foo/c:0"
Keep in mind that the counters for
default_name are discarded once the
parent scope is exited. Therefore when the code re-enters the scope (for
instance by saving it), all nested default_name counters will be restarted.
with tf.compat.v1.variable_scope("foo") as vs: with tf.compat.v1.variable_scope(None, default_name="bar"): v = tf.compat.v1.get_variable("a", ) assert v.name == "foo/bar/a:0", v.name with tf.com