尝试转换数学运算时MatMul排名错误

时间:2017-12-17 16:42:05

标签: python numpy tensorflow multidimensional-array

我有一个脚本,我正在尝试将我的数学运算从NumPy操作转换为TensorFlow操作,因此它可以在GPU上更快。在我的脚本中,我最终遇到了一个形状为数组的数组(260),需要与另一个形状为(260)的数组进行矩阵乘法,如下所示:

import numpy as np

x = np.array([2] * 260)
y = np.array([4] * 260)
r = np.matmul(x,y) #np.dot(x,y) also works
print(r) #2080

但TensorFlow中的相同操作是不可能的。

import tensorflow as tf

x = tf.Variable([2] * 260)
y = tf.Variable([4] * 260)
r = tf.matmul(x,y)

init = tf.initialize_all_variables()
sess = tf.Session()

sess.run(init)
result = sess.run(r)
print(result) # ERRROR

TensorFlow错误说:

  

ValueError:Shape必须是等级2,但对于' MatMul'是等级1 (OP:   ' MatMul')输入形状:[260],[260]。

我试图通过无数种方式重塑输入,但这些方法都没有用,例如:x = tf.expand_dims(x,1)

1 个答案:

答案 0 :(得分:2)

由于两个输入都是1维的,因此矩阵乘法是内积,

tf.reduce_sum(tf.multiply(x, y))

tf.tensordot(x, y, 1)

另请参阅this answer了解计算内积的几种替代方法。