创建从-1和1中随机选择的两个0-d张量x和y

时间:2017-04-27 12:28:41

标签: tensorflow

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'。任何建议

2 个答案:

答案 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