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 上做到这一点?
解决方案
如果我理解A(:,:)
在 MATLAB 中正确地将许多维度压缩到矩阵的第二维中,则最终A(:,:)
的形状为 (8,5*4*4),如A=rand(8,5,4,4)
. 在这种情况下,这应该相当于A(:,:)
:
A = A.reshape(A.shape[0], -1, order='F')
A
-1 隐式计算适合二维矩阵所需的剩余形状。根据@hegdep 的评论,matlab 存储数组的默认格式是F.contiguous
(相对于numpy 的默认存储C-contiguous
格式)。
推荐阅读
- ios - 删除 NSMutableAttributedString 中的特定文本
- javascript - 如何从其他 javascript 文件中导入函数?
- python - Scrapy 在 Shell 和 Spider 之间返回不同的结果
- java - 在队列中添加元素时,调用侦听器以通知队列元素是可变的
- angular - 离子存储获取返回一个承诺“Bearer [object Promise]”如何返回一个值并将其用作授权令牌?
- python - pycharm中的PyAudio
- python-3.x - 如何在 2000 万张图像(总大小 10GB)上训练图像相似度模型?
- javascript - 上传文件时如何设置内容类型
- .net-core - Ignore 和 DoNotValidate 不适用于 AutoMapper 8.1 和 .NET Core 2.1
- ios - 在 Xcode 中连接到服务器时出现错误“等待套接字准备好写入时超时”