部分奇异值分解(SVD)的内存有效实现
为了简化模型,我想计算与矩阵最大20个奇异值相关的左奇异矢量,其中和。不幸的是,我的矩阵将是稠密的,没有任何结构。 Ñ ≈ 10 6 ķ ≈ 10 3甲A∈RN,kA∈RN,kA \in \mathbb R^{N,k}N≈106N≈106N\approx 10^6k≈103k≈103k\approx 10^3AAA 如果我只是svd从numpy.linalgPython模块中的例程中调用该大小的随机矩阵,则会遇到内存错误。这是由于的分配用于分解。甲= V 小号ùV∈RN,NV∈RN,NV\in \mathbb R^{N,N}A=VSUA=VSüA = VSU 周围有避免这种陷阱的算法吗?例如,通过仅建立与非零奇异值关联的奇异矢量。 我准备在计算时间和准确性上进行交易。