【发布时间】:2020-10-24 15:54:54
【问题描述】:
我有稀疏的 COO 3D A 矩阵 NxNxM(第三维是 M)和密集的 2D B 矩阵 (NxN),这将是我的求解器的优化变量。我想将 A 和 B 相乘以获得 (NxNXM) 矩阵。然后我需要对生成的 3D 矩阵的元素求和以创建 2D 矩阵 (NxN)。
为了澄清,如果我不使用稀疏矩阵,我可以用下面的代码来做。它是 3D 和 2D 矩阵的乘法。
np.sum(np.einsum('ijk,jk->ijk', A, B))
其中 A 是 3D 矩阵,B 是 2D 矩阵。
我的目标函数是最小化稀疏 A 与决策变量矩阵 B 相乘的元素之和。
我该怎么做?
我正在使用pydata sparse library 创建稀疏矩阵。
【问题讨论】:
-
pydata提供什么?使用scipy.sparse包,您必须使用它自己的乘法方法。numpy函数做错了。 -
您只能将 2D 矩阵与
scipy.sparse相乘,但我的 A 矩阵是 3D 且它是稀疏的。 -
您想要逐元素乘积还是点积?
-
@CJR 逐元素乘法
标签: python matrix sparse-matrix matrix-multiplication