对于想了解基于Kronecker乘积的矩阵乘法的读者,本文将是一篇不可错过的文章,我们将详细介绍kronecker乘积性质,并且为您提供关于ApacheSpark中的矩阵乘法、c–GSL-GNU中的矩
对于想了解基于 Kronecker 乘积的矩阵乘法的读者,本文将是一篇不可错过的文章,我们将详细介绍kronecker乘积性质,并且为您提供关于Apache Spark中的矩阵乘法、c – GSL-GNU中的矩阵乘法、c – 具有稀疏矩阵的二次型矩阵乘法算法、c – 如何在时间复杂度方面优化cpp中的矩阵乘法?的有价值信息。
本文目录一览:- 基于 Kronecker 乘积的矩阵乘法(kronecker乘积性质)
- Apache Spark中的矩阵乘法
- c – GSL-GNU中的矩阵乘法
- c – 具有稀疏矩阵的二次型矩阵乘法算法
- c – 如何在时间复杂度方面优化cpp中的矩阵乘法?
基于 Kronecker 乘积的矩阵乘法(kronecker乘积性质)
如何解决基于 Kronecker 乘积的矩阵乘法?
我正在尝试使用每个 Kronecker 因子 A 和 B 的特征向量来获得 Kronecker 乘积矩阵的特征向量 kron(A,B)。我相信 Kronecker 乘积矩阵的每个特征向量是A 的特征向量和 B 的特征向量之间的克罗内克积。
我已经获得了因子的特征向量,但我无法找到一种有效的方法来获得 kron(A,B) 的特征向量,而不涉及循环两个因子矩阵。
这是我所拥有的(a、b 是 Kronecker 因子)。
evals_a,evecs_a = torch.linalg.eigh(a)
evals_b,evecs_b = torch.linalg.eigh(b)
这是我想要有效实施的:
evecs_kron_ab = []
for evec_a in evecs_a:
for evec_b in evecs_b:
evec_kron_ab = torch.kron(evec_a,evec_b)
evecs_kron_ab.append(evec_kron_ab)
理想情况下,特征向量列表也是一个张量,每一行都是一个特征向量
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Apache Spark中的矩阵乘法
我正在尝试使用Apache Spark和Java执行矩阵乘法。
我有两个主要问题:
- 如何创建可以表示Apache Spark中矩阵的RDD?
- 如何将两个这样的RDD相乘?
c – GSL-GNU中的矩阵乘法
解决方法
gsl_blas_sgemm()
.只需将标量设置为1,将添加的矩阵设置为零即可.一个例子是
here.
c – 具有稀疏矩阵的二次型矩阵乘法算法
C = A*B*A'
我意识到A经常是稀疏的,我想利用这个事实.所以我正在寻找一种能够处理这种情况的算法.数值稳定性很重要.有什么我可以使用的吗?
(我没有写我们的图书馆所以我不知道是否有任何陷阱我应该考虑到?)
由于“我们的”简单O(n ^ 3)乘法在目标平台上的执行速度比本征3快,因为我需要数值稳定性且矩阵不是很大,我猜Strassen的算法以及coppersmith-Winograd算法都不是我正在寻找什么.相反,它只是二次形式乘法,让我可以轻松地检查A中的零.
谢谢你的任何建议!
解决方法
c – 如何在时间复杂度方面优化cpp中的矩阵乘法?
for(i=0; i<r1; ++i) for(j=0; j<c2; ++j) for(k=0; k<c1; ++k) { mult[i][j]+=a[i][k]*b[k][j]; }
解决方法
但实际上它们比你编写的更难实现,并且它们在O()下隐藏了非常大的时间常数,所以你写的O(n ^ 3)算法在n值较低时更好,更容易实现.
还有一个Strassen的假设,声称对于每个eps> 0有一种算法将两个矩阵与时间复杂度O(n ^ {2 eps})相乘.但是你可能已经注意到它现在只是一个假设.
关于基于 Kronecker 乘积的矩阵乘法和kronecker乘积性质的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Apache Spark中的矩阵乘法、c – GSL-GNU中的矩阵乘法、c – 具有稀疏矩阵的二次型矩阵乘法算法、c – 如何在时间复杂度方面优化cpp中的矩阵乘法?的相关信息,请在本站寻找。
本文标签: