gpt4 book ai didi

python - 矩阵乘法tensorflow与numpy的区别

转载 作者:太空狗 更新时间:2023-10-30 00:13:11 25 4
gpt4 key购买 nike

我有一个案例,两个具有特定维度的矩阵的矩阵乘法在 numpy 中有效,但在 tensorflow 中无效。

x = np.ndarray(shape=(10,20,30), dtype = float)
y = np.ndarray(shape=(30,40), dtype = float)
z = np.matmul(x,y)
print("np shapes: %s x %s = %s" % (np.shape(x), np.shape(y), np.shape(z)))

这按预期工作并打印:

np shapes: (10, 20, 30) x (30, 40) = (10, 20, 40)

但是在 tensorflow 中,当我尝试乘以与上面的 numpy 数组相同形状的占位符和变量时,我得到一个错误

x = tf.placeholder(tf.float32, shape=(10,20,30))
y = tf.Variable(tf.truncated_normal([30,40], name='w'))
print("tf shapes: %s x %s" % (x.get_shape(), y.get_shape()))
tf.matmul(x,y)

结果

tf shapes: (10, 20, 30) x (30, 40)
InvalidArgumentError:
Shape must be rank 2 but is rank 3 for 'MatMul_12'
(op: 'MatMul') with input shapes: [10,20,30], [30,40].

为什么这个操作会失败?

最佳答案

不知道为什么 tf.matmul 不支持这种乘法(可能是核心开发人员之一可以提供有意义的答案)。

但是,如果您只是想以这种方式乘以张量,请查看 tf.einsum功能。它可以处理任意阶的张量。

关于python - 矩阵乘法tensorflow与numpy的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42193592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com