tensorflow中,不可以直接拿tensor比较的结果作为 if 语句的条件,因此tensorflow中实现了自己的条件语句:
a = tf.get_variable("a",initializer=1)
b = tf.get_variable("b",initializer=2)
pred = tf.equal(a,b)
## 下面这种写法是正确的
def fun1():
return a
def fun2():
return b
c = tf.cond(pred, fun1, fun2)
## 下面这种写法是错误的
# if tf.equal(a,b):
# c = a
# else:
# c = b
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(c))
同理,tensorflow中,while函数也是需要有条件判断语句的,所以tensorflow实现了自己的while循环:
a = tf.get_variable("a",initializer=1)
b = tf.get_variable("b",initializer=5)
def cond(a, b):
# 输入为loop_vars, 输出为布尔值
return tf.less(a, b)
def body(a, b):
# 输入为loop_vars, 输出为lop_vars
a = a + 2
b = b + 1
return a, b
a, b = tf.while_loop(cond, body, l