tenrso-decomp
Tensor decomposition methods: CP-ALS, Tucker-HOOI/HOSVD, and TT-SVD.
Overview
tenrso-decomp provides production-grade implementations of major tensor decomposition algorithms:
- CP-ALS - Canonical Polyadic decomposition via Alternating Least Squares
- Tucker-HOSVD - Higher-Order SVD (one-pass truncation)
- Tucker-HOOI - Higher-Order Orthogonal Iteration (iterative refinement)
- TT-SVD - Tensor Train decomposition via sequential SVD
All methods support initialization strategies, convergence criteria, and reconstruction error tracking.
Features
- Multiple initialization methods (random, SVD, leverage scores)
- Non-negative factorization (optional)
- Regularization support
- Reconstruction error tracking
- Generic over scalar types (f32, f64)
- Parallel execution
Usage
Add to your Cargo.toml:
[]
= "0.1"
CP Decomposition (TODO: M2)
use cp_als;
use Array;
let tensor = zeros;
// CP-ALS with rank 64
let cp = cp_als?;
println!;
println!;
Tucker Decomposition (TODO: M2)
use ;
// HOSVD (one-pass, fast)
let tucker = tucker_hosvd?;
// HOOI (iterative, more accurate)
let tucker = tucker_hooi?;
println!;
println!;
Tensor Train (TODO: M2)
use tt_svd;
// TT-SVD with truncation tolerance
let tt = tt_svd?;
println!;
println!;
API Reference
CP Decomposition
Computes CP decomposition using Alternating Least Squares.
Parameters:
tensor- Input tensorrank- Number of componentsmax_iters- Maximum iterationstol- Convergence tolerancenonneg- Enable non-negative constraints
Returns: CpDecomposition with factor matrices and metadata
Tucker Decomposition
Computes Tucker decomposition via HOSVD or HOOI.
Tensor Train
Computes Tensor Train decomposition with SVD truncation.
Initialization Strategies
CP-ALS Initialization
- Random - Random uniform/normal initialization
- SVD-based - Use leading left singular vectors
- Leverage scores - Importance sampling based initialization
- NNSVD - Non-negative SVD for non-negative CP
Tucker Initialization
- HOSVD - Direct SVD of unfolded tensors
- Random subspace - Random initialization for HOOI
Performance Targets
- CP-ALS (256³, rank 64): < 2s / 10 iterations (16-core CPU)
- Tucker-HOOI (512×512×128, ranks [64,64,32]): < 3s / 10 iterations
- TT-SVD (32⁶, eps=1e-6): < 2s build time, ≥10× memory reduction
Examples
See examples/ directory:
cp_als.rs- CP decomposition example (TODO)tucker.rs- Tucker decomposition example (TODO)tt.rs- Tensor Train example (TODO)reconstruction.rs- Error analysis (TODO)
Testing
# Run unit tests
# Run benchmarks
# Property tests
Dependencies
- tenrso-core - Tensor types
- tenrso-kernels - MTTKRP, n-mode products
- scirs2-core - Array operations
- scirs2-linalg - SVD, QR decompositions
- rayon (optional) - Parallel execution
Contributing
See ../../CONTRIBUTING.md for development guidelines.
License
Apache-2.0