假设我有以下张量:
X = np.zeros((3,201, 340))
Y = np.zeros((340, 28))
使用 numpy 成功制作 X、Y 的点积,并生成形状为 (3, 201, 28) 的张量。
但是,使用tensorflow时,我收到以下错误:形状必须是等级2,但等级3错误...
最小代码示例:
X = np.zeros((3,201, 340))
Y = np.zeros((340, 28))
print(np.dot(X,Y).shape) # successful (3, 201, 28)
tf.matmul(X, Y) # errornous
知道如何使用 tensorflow 实现相同的结果吗?
最佳答案
由于您正在使用张量
,因此使用tensordot
(为了性能)会比np.dot
更好。 NumPy 允许它 (numpy.dot) 通过降低性能来处理张量
,而 tensorflow
似乎根本不允许这样做。
因此,对于 NumPy,我们将使用 np.tensordot
-
np.tensordot(X, Y, axes=((2,),(0,)))
对于tensorflow
,它将是 tf.tensordot
-
tf.tensordot(X, Y, axes=((2,),(0,)))
关于python - 广播 np.dot 与 tf.matmul 进行张量矩阵乘法(形状必须为 2 级,但为 3 级错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47969305/