展平时将张量与矩阵相乘

2024-09-29 23:27:07 发布

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

我有一个张量a(可以是任意维)和一个矩阵M。我想通过展平张量来乘以它们,得到一个矩阵

在MATLAB上,我可以简单地执行以下操作:

function B = multiplyflatten(A,M)
B = M*A(:,:)

为了进行测试,可以使用

A=rand(8,5,4,4)
B=rand(1,8)

如何使用numpy-ndarrays在python上获得等价的东西?下面的块不会产生等价的东西

def multiplyflatten(A,M):
    B=np.matmul(M,A[:,:])

A(:,:)是在MATLAB中将许多维度压缩为矩阵的第二维度。在Python上有没有一种简单的方法可以做到这一点


Tags: 方法numpydefnpfunction矩阵ndarrays中将
1条回答
网友
1楼 · 发布于 2024-09-29 23:27:07

如果我理解A(:,:)在MATLAB中正确地将许多维度压缩为矩阵的第二维度,那么最后的A(:,:)的形状为(8,5*4*4),如A=rand(8,5,4,4)的示例所示。在这种情况下,这应该相当于A(:,:)

A = A.reshape(A.shape[0], -1, order='F')

-1隐式计算将A拟合到二维矩阵所需的剩余形状。根据@hegdep的评论,matlab存储数组的默认格式是F.contiguous(而numpy的默认存储格式是C-contiguous

相关问题 更多 >

    热门问题