
减少是
axis=1针对
X和
axis=0进行的
tensor,因此
np.tensordot基于的解决方案将是-
np.tensordot(X,tensor, axes=([1],[0]))
说明:
让我们以迭代解决方案进行解释,并在其中进行第一次迭代:
output[:, :, 0] = X.dot(tensor[:, :, 0])
在点积中,第一个输入为
X,其形状为
(N x N),第二个输入为
tensor[:, :, 0],这是沿最后一个轴的第一个切片,其形状为
(N xN。这点积引起的沿第二轴线减少
X,即,
axis=1与沿着第一轴,即
axis=0的
tensor[:, :,0],这也正好是整个阵列的第一轴线
tensor。现在,这将在所有迭代中继续进行。因此,即使在大画面,我们需要做的是相同的:减少/丧失
axis=1在
X和
axis=0张量,就像我们做!
整合@ hlin117的答案
np.tensordot(X,tensor, axes=([1],[0]))
定时:
>>> N = 200>>> tensor = np.random.rand(N, N, 30)>>> X = np.random.rand(N, N)>>> >>> %timeit np.tensordot(X, tensor, axes=([1], [0]))100 loops, best of 3: 14.7 ms per loop>>> %timeit np.tensordot(X, tensor, axes=1)100 loops, best of 3: 15.2 ms per loop
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)