---
title: 什么是Scope融合
description: "为了实现高性能的计算，往往需要对子图中的小算子进行融合，使得融合后的大算子（多对一场景）或小算子组合（多对多场景）可以充分利用硬件加速资源。"
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/Convergence/tfscopedevg/atlastfscopedev_11_0004.html
sourcePath: /source/zh/TensorFlowCommercial/900/Convergence/tfscopedevg/atlastfscopedev_11_0004.html
indexId: b622b09171a39a87f121c83fc464b0e02d1893cbd8cd961aa97a561d26c2365188
---
# 什么是Scope融合

为了实现高性能的计算，往往需要对子图中的小算子进行融合，使得融合后的大算子（多对一场景）或小算子组合（多对多场景）可以充分利用硬件加速资源。

在TensorFlow框架中，通过TensorFlow的作用域函数tf.name_scope()，可以将不同的对象及操作放在由tf.name_scope()指定的作用域中，便于在tensorboard中展示清晰的逻辑关系图：

```
import tensorflow as tf;   
tf.reset_default_graph()

#定义一块名为xx_name_scope的区域，并在其中工作
with tf.name_scope('xx_name_scope'):   
     a = tf.constant(1,name='my_a')    
     b = tf.Variable(2,name='my_b') 
     c = tf.add(a,b,name='my_add')      
print("a.name = "+a.name) 
print("b.name = "+b.name) 
print("c.name = "+c.name)

# 保存graph用于tensorboard绘图
with tf.Session() as sess:
   sess.run(tf.global_variables_initializer())
   writer = tf.summary.FileWriter("./test",sess.graph)
   print(sess.run(c))
writer.close()
```

输出结果：

```
a.name = xx_name_scope/my_a:0 
b.name = xx_name_scope/my_b:0 
c.name = xx_name_scope/my_add:0
```

从输出结果可以看出，在tf.name_scope()下的所有对象和操作，其name属性前都加了xx_name_scope，用以表示这些内容全在其范围下。

从tensorboard中也可以看到Scope信息：


Scope融合是一种基于Scope来进行融合的能力，把Scope内的多个小算子替换为一个大算子或多个算子组合，以实现效率的提升。

当前除了支持基本的Scope内所有算子融合外，还支持更加灵活的融合配置，例如嵌套式识别、并列式识别、Scope+普通算子识别，如图1所示。

图1 Scope融合支持的场景
