-
Notifications
You must be signed in to change notification settings - Fork 0
Dynamic sketching to accelerate Canonical Polyadic Decomposition via multiplicative weight update-based rate selection
License
kaggour/CPD-MWU
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Welcome to CPD-MWU (Canonical Polyadic Decomposition-Multiplicate Weight Updates). CPD-MWU is a distributed algorithm for performing canonical polyadic decomposition of large dense tensors by slicing the tensor along its largest mode and then operating on those slices in parallel. CPD-MWU uses dynamic sketching to reduce the runtime of CPD, and for ill-conditioned tensors has the added benefit of reducing the relative decomposition error, as well. This code has two dependencies to be aware of: 1) Numpy is used to represent tensors, matrices and for performing various operations on them. Your numpy instance may depend on another server-specific library such as BLAS or ATLAS, or both. Whatever you are using, you need to make sure that your numpy instance is using single-threaded instances of them. When the tensor slices get large enough ATLAS, for example, will automatically attempt to use multiple threads to perform matrix operations. This clashes with Spark, which limits the number of CPU's a single executor can use, and will cause the code to fail. 2) TensorLy is a nice package of Python routines for dealing with tensors. I use one or two functions from this package, so you need to make sure it is installed and in your path. https://tensorly.github.io/
About
Dynamic sketching to accelerate Canonical Polyadic Decomposition via multiplicative weight update-based rate selection
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published