x = tf.random_uniform([], -1, 1)
y = tf.random_uniform([], -1, 1)
def f1():return x+y
def f2():return x-y
def f3():return 0
r = tf.case({tf.less(x,y): f1, tf.greater(x,y): f2}, default = f3,exclusive
= True)
这是一个问题:如果x<返回x + y y,x - y如果x> y,0否则,我似乎得到int对象没有属性'name'。任何建议
答案 0 :(得分:1)
让f3
返回float而不是整数。
这对我有用:
x = tf.random_uniform([], -1, 1)
y = tf.random_uniform([], -1, 1)
def f1():return x+y
def f2():return x-y
def f3():return 0.0
r = tf.case({tf.less(x,y): f1, tf.greater(x,y): f2}, default=f3,
exclusive=True)
修改强>
虽然上面的代码适用于最近的Tensorflow以使其适用于旧版本,但还需要f3
返回Tensor
。
x = tf.random_uniform([], -1, 1)
y = tf.random_uniform([], -1, 1)
def f1():return x+y
def f2():return x-y
def f3():return tf.constant(0.0)
r = tf.case({tf.less(x,y): f1, tf.greater(x,y): f2}, default=f3,
exclusive=True)
答案 1 :(得分:0)
只需将随机数包装在tf.sign()
函数中:
import tensorflow as tf
x = tf.sign(tf.random_uniform((10,), -1, 1))
with tf.Session() as sess:
print sess.run(x)
你会得到类似的结果:[ 1. 1. 1. -1. 1. -1. -1. -1. -1. 1.]
。它的工作原因是:
返回数字符号的元素指示。
y = sign(x)= -1,如果x< 0; 0如果x == 0或tf.is_nan(x);如果x> 1,则为1 0