---
title: ENABLE_FORCE_V2_CONTROL
description: "TensorFlow 1.15训练场景下，如果输入是动态shape，由于tf.case/tf.cond/tf.while_loop这些API对应TensorFlow V1版本的控制流算子（例如Switch、Merge、Enter、LoopCond、NextIteration、Exit、ControlTrigger等）不支持动态shape，仅TensorFlow V2版本的控制流算子（例如If、Case、While、For、PartitionedCall等）支持动态shape，因此，如果用户的训练脚本中使用了这些API，需要将V1版本的控制流算子转换为V2版本，用于支持动态shape功能。另外，如果网络中的分支结构较多，采用V1版本的控制流算子可能导致流数超限，此时也需要将V1版本的控制流算子转换成V2版本算子解决。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/maintenref/envvar/envref_07_0037.html
sourcePath: /source/zh/canncommercial/900/maintenref/envvar/envref_07_0037.html
indexId: 06f94ff3edc6fd0ac3999cec71faa7b0d6b422340abdac8b84b2e0d4e39d2cc367
---
# ENABLE_FORCE_V2_CONTROL

#### 功能描述

TensorFlow 1.15训练场景下，如果输入是动态shape，由于tf.case/tf.cond/tf.while_loop这些API对应TensorFlow V1版本的控制流算子（例如Switch、Merge、Enter、LoopCond、NextIteration、Exit、ControlTrigger等）不支持动态shape，仅TensorFlow V2版本的控制流算子（例如If、Case、While、For、PartitionedCall等）支持动态shape，因此，如果用户的训练脚本中使用了这些API，需要将V1版本的控制流算子转换为V2版本，用于支持动态shape功能。另外，如果网络中的分支结构较多，采用V1版本的控制流算子可能导致流数超限，此时也需要将V1版本的控制流算子转换成V2版本算子解决。

此环境变量设置为“1”时，代表开启V1版本的控制流算子转换成V2版本算子的功能，设置为其他值时不会开启此功能。


#### 配置示例

```
export ENABLE_FORCE_V2_CONTROL=1
```


#### 使用约束

- 该环境变量仅适用于TensorFlow1.15训练场景。
- 使用该环境变量，可能会出现V1版本控制流算子到V2版本控制流算子转换失败的情况，例如网络脚本中带ref控制算子的场景。
  为避免V1到V2控制流算子转换失败，建议通过修改网络脚本的方式，实现V1版本控制流算子到V2版本控制流算子的转换。

  在import tensorflow as tf后增加如下两条指令： 1 2 tf.enable_control_flow_v2() tf.enable_resource_variables()

- 此环境变量不支持通过底层ops调用控制类算子场景的转换，例如tf.raw_ops.Merge 、tf.raw_ops.Switch，请手工修改网络脚本。
- 使用该环境变量将V1版本控制流算子转换到V2版本控制流算子后，可能存在性能下降的情况。


#### 支持的型号

Atlas 350 加速卡

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

Atlas A2 训练系列产品 / Atlas A2 推理系列产品

Atlas 训练系列产品
