您是正确的,该
if语句在这里不起作用,因为该条件是在图构造时评估的,而大概您希望该条件取决于运行时馈入占位符的值。(实际上,它将始终采用第一个分支,因为`condition
0
计算结果为aTensor`,这在Python中是“真实的”。)
为了支持条件控制流,TensorFlow提供了
tf.cond()运算符,该运算符根据布尔条件评估两个分支之一。为了向您展示如何使用它,我将重写您的程序,为简单起见,这
condition是一个标
tf.int32量值:
x = tf.placeholder(tf.float32, shape=[None, ins_size**2*3], name="x_input")condition = tf.placeholder(tf.int32, shape=[], name="condition")W = tf.Variable(tf.zeros([ins_size**2 * 3, label_option]), name="weights")b = tf.Variable(tf.zeros([label_option]), name="bias")y = tf.cond(condition > 0, lambda: tf.matmul(x, W) + b, lambda: tf.matmul(x, W) - b)



