展平时将张量与矩阵相乘
Multiply tensor with matrix while flattening
我有一个张量 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 上有没有简单的方法来做到这一点?
如果我理解 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
)。
我有一个张量 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 上有没有简单的方法来做到这一点?
如果我理解 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
)。