TensorLy 官方项目标识

TensorLy

Stars

面向张量学习的 Python 库,统一提供张量代数、CP/Tucker/TT 等分解、回归与深度张量化模型,并通过可切换后端让同一套算法运行在 NumPy、PyTorch、JAX、TensorFlow、CuPy 与 Paddle 上。

Tensor DecompositionSparse Robust PCANumPy · SciPy · Multi-backend
SPARSE LINEAR ALGEBRA · BACKEND CONTRACT

让稀疏 Robust PCA 真正走通 SVD

接口兼容只是入口;reduced 分解还必须守住稀疏边界,并在秩亏矩阵上得到有限、可重构且正交的奇异向量。

SPARSE INPUT · RANK DEFICIENTA ∈ COOm×n
shapem ≠ n
rankr < min(m,n)

Robust PCA → singular-value thresholding

BEFORE · BROKEN PATHtl.svd(A, full_matrices=False)NO SPARSE SVD CONTRACT
λ ≈ 0σ = √λ1 / σ → NaN

interface failure · unstable rank-deficient basis

AFTER · SPARSE REDUCED SVD
FULLdense SciPy SVDREDUCEDsparse Gram matrix
clip λ ≥ 0masked 1 / σQR complete U or V
A ≈ U Σ Vᵀ

finite · reconstructable · orthonormal

接口断层

full_matrices 暴露稀疏后端缺失 SVD

稀疏 NumPy 后端没有实现当前的 `svd(matrix, full_matrices=...)` 契约,Sparse Robust PCA 在奇异值阈值步骤调用 `tl.truncated_svd()` 时直接以参数不匹配终止。补齐接口后还有第二层数值问题:秩亏稀疏矩阵的 Gram 矩阵会产生零或微小负特征值,直接开方并除以奇异值会生成 NaN;收敛范数聚合还可能把稀疏零维结果隐式稠密化。

稀疏边界

Reduced 走 Gram,Full 才显式稠密化

Reduced SVD 只需要较小一侧的奇异向量,可以继续在 `A Aᵀ` 或 `Aᵀ A` 的稀疏 Gram 矩阵上求解;Full SVD 必须返回方形基,本身就是稠密结果,才适合显式交给 SciPy。对于零奇异方向,伪逆系数应当置零,而缺失的正交方向需要通过 QR 补全,不能用除零结果冒充奇异向量。

数值稳定

零奇异值不再参与倒数

为稀疏后端实现完整 `svd()` 分流:非稀疏或 full-matrices 路径交由 `scipy.linalg.svd()`,稀疏 reduced 路径复用 `partial_svd()`。Gram 特征值先裁到非负区间,再仅对大于机器精度的奇异值计算倒数;宽矩阵补全 `V`、高矩阵补全 `U`,并按 `R` 对角线统一 QR 符号。同步规范化零维 norm 返回值,并用 `stack` 汇总 Robust PCA 收敛范数以保留稀疏语义。

正交完成

QR 补齐退化方向并保持可重构

Sparse Robust PCA 现在可以完成迭代并持续返回稀疏 low-rank 与 error 张量;宽、窄两类秩亏矩阵的 reduced SVD 均保持有限值、可重构性以及 `UᵀU`、`VVᵀ` 正交约束。新增回归覆盖全部修改行,NumPy 全套测试 537 项通过、3 项跳过、1 项预期失败。

TensorLy 从多框架后端、核心张量运算到张量分解和深度张量网络的能力层次
同一张量算法建立在可切换后端契约之上

底层把 NumPy、SciPy、PyTorch、JAX、TensorFlow、CuPy 与 Paddle 统一为可切换后端,上层的张量运算、分解和回归因而能够复用同一算法接口。本次修复发生在这条抽象边界:稀疏 NumPy 后端既要兑现统一的 SVD 契约,也要让 reduced 分解停留在稀疏 Gram 矩阵路径,避免 Robust PCA 为一次阈值更新付出整矩阵稠密化的内存代价。