【发布时间】:2021-05-09 09:51:03
【问题描述】:
给定一个查询向量(one-hot-vector)q,大小为50000x1,一个大稀疏矩阵A,大小为50000 x 50000,nnz 为A,为0.3十亿,我想要计算r=(A + A^2 + ... + A^S)q(通常是4 <= S <=6)。
我可以使用循环迭代上面的方程
r = np.zeros((50000,1))
for i in range(S):
q = A.dot(q)
r += q
但我想要更快的方法。
首先想到的是A 可以是对称的,所以eigen decomposition would help for compute power of A。但由于A 是大型稀疏矩阵,分解后的密集矩阵与A 大小相同,这会导致性能下降(在内存和速度方面)。
还考虑了低秩近似。但是A 又大又稀疏,所以不确定r 哪个等级合适。
预先计算一些东西是完全可以的,比如A + A^2 + ... + A^S = B。但我希望最后的计算速度很快:计算 Bq 少于 40 毫秒。
是否有任何参考或论文或技巧?
【问题讨论】:
-
有任何反馈吗?请查看this
标签: python matrix scipy linear-algebra sparse-matrix