动态shape网络执行时报v1控制流算子不支持的错误
问题现象
模型执行时报如下错误:
1 | node node_name(node_type) is v1 control operator, which is not supported, please convert to v2 control operator |
原因分析
这是由于当前网络为动态shape网络,且存在TensorFlow V1版本的控制流算子。动态shape网络的执行当前不支持V1版本的控制流算子,所以会造成网络执行失败。
解决方案
将网络中的TensorFlow V1版本的控制流算子转换为V2版本。
- 方式一(推荐):修改网络脚本,在import tensorflow as tf后增加如下两条指令,将TensorFlow V1版本的控制流算子转换为V2版本。
1 2
tf.enable_control_flow_v2() tf.enable_resource_variables()
- 方式二:配置环境变量,将V1版本的控制流算子转换为V2版本。
export ENABLE_FORCE_V2_CONTROL=1
注意:使用该环境变量,可能会存在V1版本控制流算子到V2版本控制流算子转换失败的场景,例如网络脚本中带ref控制算子的场景。
父主题: 模型训练问题(TensorFlow网络)