【发布时间】:2021-04-28 14:42:19
【问题描述】:
我需要在 numpy(或 pytorch)中对两个张量进行乘积:
我有
A = np.arange(1024).reshape(8,1,128)
B = np.arange(9216).reshape(8, 128, 9)
并且想要获得C,点积在A (axis=2) 的最后一个暗淡和B (axis=1) 的中间暗淡上求和。这应该有尺寸8x9。目前,我正在做:
C = np.zeros([8, 9])
for i in range(8):
C[i,:] = np.matmul(A[i,:,:], B[i,:,:])
如何优雅地做到这一点?
我试过了:
np.tensordot(weights, features, axes=(2,1)).
但它返回8x1x8x9。
【问题讨论】:
-
您为当前正在执行的操作提供的代码不会计算 C。
cam是什么?它与C有什么关系? -
np.matmul(A, B)应该产生 (8,1,9) -
@AlexanderGuyer
cam=C。我修好了。对不起。我想在 A 的昏暗 2 和 B 的昏暗 1 上获得点积。如果我忽略第一个轴,那不是矩阵积吗?
标签: python numpy pytorch numpy-einsum