用NumPy进行矩阵和张量乘法

2024-05-15 03:38:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用张量做矩阵乘法,但我不知道怎么用Numpy来做。我一直在尝试使用np.tensordot(),但我没能做到

简单地说,如果我们要做矩阵乘法,我们有一个向量v(Nx1)和一个矩阵S(NxN),我们就可以做这个运算

v^T S v=>;(1xN)(NxN)(Nx1)=>;一个数字

v = np.ones((3,1))
S = np.ones((3,3))
y = v.T.dot(S).dot(v)
y.shape = (1) or ()

现在,我想做的是:

让矩阵M(3x5)和张量Z(5x3x3),这样我可以得到
M^T Z M
其中,T(Z)得出矩阵,其中T(x)M

^{pr2}$

有人知道如何在不使用Tensorflow的情况下使用Numpy来实现这一点吗?在


Tags: orgtnumpynpones矩阵数字向量
1条回答
网友
1楼 · 发布于 2024-05-15 03:38:17

我想这是你想要的:

import numpy as np

M = np.ones((3, 5))
Z = np.ones((5, 3, 3))
# Multiply (5, 1, 3) x (5, 3, 3) x (5, 3, 1)
result = (M.T[:, np.newaxis] @ Z @ M.T[:, :, np.newaxis]).squeeze()
print(result)

输出:

^{pr2}$

为了方便起见,我使用了@运算符,但是如果您更喜欢它或使用的是较旧的Python版本,可以将其替换为np.matmul

result = np.matmul(np.matmul(M.T[:, np.newaxis], Z), M.T[:, :, np.newaxis]).squeeze()

相关问题 更多 >

    热门问题