尝试运行以下基本示例来运行条件计算我收到以下错误消息:
'x'传递float与预期的float_ref
不兼容
什么是tensorflow float_ref以及代码必须如何修改?
import tensorflow as tf
from tensorflow.python.ops.control_flow_ops import cond
a = tf.Variable(tf.constant(0.),name="a")
b = tf.Variable(tf.constant(0.),name="b")
x = tf.Variable(tf.constant(0.),name="x")
def add():
x.assign( a + b)
return x
def last():
return x
calculate= cond(x==0.,add,last)
with tf.Session() as s:
val = s.run([calculate], {a: 1., b: 2., x: 0.})
print(val) # 3
val=s.run([calculate],{a:4.,b:5.,x:val})
print(val) # 3
答案 0 :(得分:2)
这并不能解释float_ref是什么,但它解决了问题:
1)需要在会话中创建变量 2)分配操作不是我们所期望的
这个固定代码有效:
def add():
print("add")
x = a + b
return x
def last():
print("last")
return x
with tf.Session() as s:
a = tf.Variable(tf.constant(0.),name="a")
b = tf.Variable(tf.constant(0.),name="b")
x = tf.constant(-1.)
calculate= cond(x.eval()==-1.,add,last)
val = s.run([calculate], {a: 1., b: 2.})
print(val) # 3
print(s.run([calculate],{a:3.,b:4.})) # 7
print(val) # 3
答案 1 :(得分:2)
FYI。 我得到了类似的错误,我的是:
节点GradientDescent / update_input / ApplyGradientDescent是从_arg_input_0_1传递的浮点数:0与预期的float_ref不兼容。
这是因为我的节点树中有一个tf.Variable
而不是t.fplaceholder
。用占位符替换变量后,它就可以了。
答案 2 :(得分:1)
shuffle
这里引用了一个浮点数,即你的Tensorflow浮点变量> shuffle()
> str(environment(cards[[2]])$deck)
'data.frame': 52 obs. of 3 variables:
$ face : Factor w/ 13 levels "ace","eight",..: 11 9 2 7 8 1 7 3 5 13 ...
$ suit : Factor w/ 4 levels "clubs","diamonds",..: 2 3 4 4 2 4 3 4 3 3 ...
$ value: int 10 7 8 9 12 1 9 5 11 2 ...
。
正如here所述,您遇到此错误,因为您不能像在此声明中那样在同一会话中同时分配和传递变量作为feed_dict :< / p>
float_ref
当您解决该语句以结束时,它变得更加明显:
x
答案 3 :(得分:0)
更改
a = tf.Variable(tf.constant(0.),name="a")
b = tf.Variable(tf.constant(0.),name="b")
x = tf.Variable(tf.constant(0.),name="x")
def add():
x.assign( a + b)
return x
收件人:
a = tf.placeholder(dtype=tf.float32,name="a")
b = tf.placeholder(dtype=tf.float32,name="b")
x = tf.placeholder(dtype=tf.float32,name="x")
def add():
x= a + b
return x