我是新的张量流。我尝试按照tutorial的要求通过自定义训练来实现线性回归。
但是当我尝试计算> "What’s the complete name of Sachin Tendulkar ?":
> "Sachin Ramya Tendulkar":
> - False
> "Sachin Ramesh Tendulkar":
> - True
> "Sachin Tendehar":
> - False
> " Sachin 10dulkar":
> - False
> "Hint":
> - "biscuit & cookies"
时
我收到此错误
W*x + b
InvalidArgumentError:无法计算添加为输入#1(从零开始)的加法运算是双张量,但是浮点张量[Op:Add]
我初始化了W和b
tf.add(tf.matmul(W,x),b)
W = tf.Variable(np.random.rand(1,9))
b = tf.Variable([1],dtype = tf.float32)
但是当我将b的初始化更改为
x = tf.Variable(np.random.rand(9,100))
我没有收到任何错误。是什么原因呢?
答案 0 :(得分:1)
np.random.rand(1,9)
(和其他初始化)的结果为np.float64
类型。将其与tf.Variable
一起使用可得到tf.float64
类型的张量。
Tensorflow的add
的参数必须具有相同的类型。 matmul
的结果为tf.float64
类型,而b
的类型为tf.float32
类型。您需要将一个类型转换为另一个类型。
在Tensorflow中,您可以执行以下操作(建议,按照惯例进行操作):
# Can be done in a single line too
matmul_result = tf.matmul(W,x)
matmul_result = tf.cast(matmul_result, tf.float32)
tf.add(matmul_result, b)
或者您可以这样做:
tf.add(tf.matmul(W,x), tf.cast(b, tf.float64))
您还可以直接更改numpy数组的类型:
W = tf.Variable(np.random.rand(1,9).astype(np.float32))