---
title: 融合规则生效
description: "在注册融合规则时，定义了融合规则的生效方式："
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommunity/latest/Convergence/tfscopedevg/atlastfscopedev_11_0022.html
sourcePath: /source/zh/TensorFlowCommunity/910/Convergence/tfscopedevg/atlastfscopedev_11_0022.html
indexId: d1fc0ef5c3b7058c679da409d31deb70df35753fb9fc91661962015864bb9ff387
---
# 融合规则生效

在注册融合规则时，定义了融合规则的生效方式：

- 当定义为通用规则时，默认生效，不支持用户指定失效。
- 当定义为定制化规则时，默认不生效，此时，可以参考如下生效该融合规则。
**表1 定制化融合规则生效方式**

| 场景 | 生效方式 |  |  |
| --- | --- | --- | --- |
| 离线推理场景下，使用离线模型转换工具编译TensorFlow原始模型 | 通过模型转换命令行参数enable\_scope\_fusion\_passes指定需要生效的融合规则，多个用“,”分隔： 1 \-\-enable\_scope\_fusion\_passes = DecodeBboxV2ScopeFusionPass | 1 | \-\-enable\_scope\_fusion\_passes = DecodeBboxV2ScopeFusionPass |
| 1 | \-\-enable\_scope\_fusion\_passes = DecodeBboxV2ScopeFusionPass |  |  |
| 离线推理场景下，解析TensorFlow原始模型 | 通过aclgrphParseTensorFlow接口解析TensorFlow原始模型时，通过 ENABLE\_SCOPE\_FUSION\_PASSES参数指定需要生效的融合规则，多个用“,”分隔： 1 {ge::AscendString(ge::ir\_option::ENABLE\_SCOPE\_FUSION\_PASSES), ge::AscendString("DecodeBboxV2ScopeFusionPass")}, | 1 | {ge::AscendString(ge::ir\_option::ENABLE\_SCOPE\_FUSION\_PASSES), ge::AscendString("DecodeBboxV2ScopeFusionPass")}, |
| 1 | {ge::AscendString(ge::ir\_option::ENABLE\_SCOPE\_FUSION\_PASSES), ge::AscendString("DecodeBboxV2ScopeFusionPass")}, |  |  |
| 训练或在线推理场景下，在TensorFlow框架内执行 | 通过TensorFlow框架运行配置参数enable\_scope\_fusion\_passes指定需要生效的融合规则，多个用“,”分隔： 1 2 3 4 5 6 7 8 9 10 11 12 13 import tensorflow as tf from npu\_bridge.estimator import npu\_ops from tensorflow.core.protobuf.rewriter\_config\_pb2 import RewriterConfig config = tf.ConfigProto() custom\_op = config.graph\_options.rewrite\_options.custom\_optimizers.add() custom\_op.name = "NpuOptimizer" custom\_op.parameter\_map["use\_off\_line"].b = True custom\_op.parameter\_map["enable\_scope\_fusion\_passes"].s = tf.compat.as\_bytes("DecodeBboxV2ScopeFusionPass") config.graph\_options.rewrite\_options.remapping = RewriterConfig.OFF with tf.Session(config=config) as sess: sess.run(xx\_name\_scope) \# xx\_name\_scope是融合算子名字的示例。 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | import tensorflow as tf from npu\_bridge.estimator import npu\_ops from tensorflow.core.protobuf.rewriter\_config\_pb2 import RewriterConfig config = tf.ConfigProto() custom\_op = config.graph\_options.rewrite\_options.custom\_optimizers.add() custom\_op.name = "NpuOptimizer" custom\_op.parameter\_map["use\_off\_line"].b = True custom\_op.parameter\_map["enable\_scope\_fusion\_passes"].s = tf.compat.as\_bytes("DecodeBboxV2ScopeFusionPass") config.graph\_options.rewrite\_options.remapping = RewriterConfig.OFF with tf.Session(config=config) as sess: sess.run(xx\_name\_scope) \# xx\_name\_scope是融合算子名字的示例。 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | import tensorflow as tf from npu\_bridge.estimator import npu\_ops from tensorflow.core.protobuf.rewriter\_config\_pb2 import RewriterConfig config = tf.ConfigProto() custom\_op = config.graph\_options.rewrite\_options.custom\_optimizers.add() custom\_op.name = "NpuOptimizer" custom\_op.parameter\_map["use\_off\_line"].b = True custom\_op.parameter\_map["enable\_scope\_fusion\_passes"].s = tf.compat.as\_bytes("DecodeBboxV2ScopeFusionPass") config.graph\_options.rewrite\_options.remapping = RewriterConfig.OFF with tf.Session(config=config) as sess: sess.run(xx\_name\_scope) \# xx\_name\_scope是融合算子名字的示例。 |  |  |
