# tf.name_scope

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.14.0/tensorflow/python/framework/ops.py#L5616-L5706) |

A context manager for use when defining a Python op.

    tf.name_scope(
        name
    )

This context manager pushes a name scope, which will make the name of all
operations added within it have a prefix.

For example, to define a new Python op called `my_op`:

    def my_op(a, b, c, name=None):
      with tf.name_scope("MyOp") as scope:
        a = tf.convert_to_tensor(a, name="a")
        b = tf.convert_to_tensor(b, name="b")
        c = tf.convert_to_tensor(c, name="c")
        # Define some computation that uses `a`, `b`, and `c`.
        return foo_op(..., name=scope)

When executed, the Tensors `a`, `b`, `c`, will have names `MyOp/a`, `MyOp/b`,
and `MyOp/c`.

Inside a [`tf.function`](https://www.tensorflow.org/versions/r2.14/api_docs/python/tf/function), if the scope name already exists, the name will be
made unique by appending `_n`. For example, calling `my_op` the second time
will generate `MyOp_1/a`, etc.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `name` | The prefix to use on all names created within the name scope. |

<br />

<br />

<br />

<br />

| ## Raises ||
|---|---|
| `ValueError` | If name is not a string. |

<br />

<br />

<br />

<br />

| ## Attributes ||
|---|---|
| `name` | <br /> <br /> |

<br />

## Methods

### `__enter__`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.14.0/tensorflow/python/framework/ops.py#L5663-L5695)

    __enter__()

Start the scope block.

<br />

<br />

<br />

| Returns ||
|---|---|
| The scope name. ||

<br />

### `__exit__`

[View source](https://github.com/tensorflow/tensorflow/blob/v2.14.0/tensorflow/python/framework/ops.py#L5697-L5699)

    __exit__(
        type_arg, value_arg, traceback_arg
    )