name_scope

paddle.static. name_scope ( prefix: str | None = None ) → Generator[None, None, None] [source]

Generate hierarchical name prefix for the operators in Static Graph.

Note

This should only used for debugging and visualization purpose. Don’t use it for serious analysis such as graph/program transformations. Don’t use it in dygraph, since it will cause memory leak.

Parameters

prefix (str, optional) – prefix. Default is none.

Examples

>>> import paddle
>>> paddle.enable_static()
>>> with paddle.pir_utils.OldIrGuard():
...     with paddle.static.name_scope("s1"):
...         a = paddle.static.data(name='data', shape=[None, 1], dtype='int32')
...         b = a + paddle.to_tensor(1)
...         with paddle.static.name_scope("s2"):
...             c = b * paddle.to_tensor(1)
...         with paddle.static.name_scope("s3"):
...             d = c / paddle.to_tensor(1)
...     with paddle.static.name_scope("s1"):
...         f = paddle.tensor.pow(d, paddle.to_tensor(2.0))
...     with paddle.static.name_scope("s4"):
...         g = f - paddle.to_tensor(1)
...
...     # Op are created in the default main program.
...     for op in paddle.static.default_main_program().block(0).ops:
...         # elementwise_add is created in /s1/
...         if op.type == 'elementwise_add':
...             assert op.desc.attr("op_namescope") == '/s1/'
...         # elementwise_mul is created in '/s1/s2'
...         elif op.type == 'elementwise_mul':
...             assert op.desc.attr("op_namescope") == '/s1/s2/'
...         # elementwise_div is created in '/s1/s3'
...         elif op.type == 'elementwise_div':
...             assert op.desc.attr("op_namescope") == '/s1/s3/'
...         # elementwise_sum is created in '/s4'
...         elif op.type == 'elementwise_sub':
...             assert op.desc.attr("op_namescope") == '/s4/'
...         # pow is created in /s1_1/
...         elif op.type == 'pow':
...             assert op.desc.attr("op_namescope") == '/s1_1/'