tensorflow中的control_flow_ops模块属于tensorflow.python.ops中的一个模块,从switch函数的名称上看就是一个开关函数。
函数:control_flow_ops.switch(data,pred,dtype=None,name=None)
功能:用来选择数据的输出通道,如果pred为False则data从第一个输出,如果pred为True则数据从第二个输出
参数:
- data:需要被选择输出的tensor数据
- pred:bool类型用来选择data的输出通道
- dtype:可选,用来设置返回tensor的数据类型,如果为None则输出tensor的数据类型与输入tensor类型保持一致
name:操作名称
返回值:(output_false,output_true),如果pred为true就输出output_true,如果pred为false就输出output_false
import tensorflow as tf
from tensorflow.python.ops import control_flow_ops
if __name__ == "__main__":
with tf.Session() as sess:
output_false,output_true = control_flow_ops.switch([1,2,3,4],False)
print(output_false.eval())
output_false,output_true = control_flow_ops.switch([5,6,7,8],True)
print(output_true.eval())
注意:如果输出通道与选择的输出通道不统一会报错,tensorflow.python.framework.errors_impl.InvalidArgumentError: Retval[0] does not have value
output_false,output_true = control_flow_ops.switch([1,2,3,4],False)
print(output_true.eval())