You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We're excited to release version 0.8.2 of TensorLy. As always, a huge thank you to the core team and all the contributors!
This version adds many improvements to TensorLy 0.8, including:
Tensor-Ring via ALS
We now provide an ALS-based method for tensor ring decomposition, as well as a randomized sampling-based version, thanks to @OsmanMalik in #501 and #511
There are two main ways to implement tensor algebraic methods:
Perhaps the most common, using existing matrix based algebraic methods, which typically involves unfolding the tensor (reshaping the tensor into a matrix and permuting its dimensions)
Directly leverage tensor contraction, e.g. through an ensue interface. This implies that the einsum actually performs tensor contraction.
We improved the tenalg backend, you can transparently dispatch all tensor algebraic operations to the backend's einsum:
importtensorlyastl# Tensor algebrafromtensorlyimporttenalg# Dispatch all operations to einsumtenalg.set_backend('einsum')
Now all tenalg functions will call einsum under the hood!
Opt-Einsum support
In addition, for each einsum call, you can now use opt-einsum to compute a (near) optimal contraction path and cache it with just one call!
# New opt-einsum pluginfromtensorly.pluginsimportuse_opt_einsum# Transparently compute and cache contraction path using opt-einsumuse_opt_einsum('optimal')
Switch back to the original backend's einsum:
# New opt-einsum pluginfromtensorly.pluginsimportuse_default_einsumuse_default_einsum()
Efficient contraction on GPU with cuQuantum
If you want to accelerate your computation, you probably want to use the GPU.
TensorLy has been supporting GPU transparently for a while, through its MXNet, CuPy, TensorFlow, PyTorch and more recently, JAX backends.
Now you can also get efficient tensor contractions on GPU using NVIDIA's cuQuantum library!
Nowanyfunctiontothe`tenalg`module# New opt-einsum pluginfromtensorly.pluginsimportuse_cuquantum# Transparently compute and cache contraction path using opt-einsumuse_cuquantum('optimal')
# Create a new tensor on GPUtensor=tl.randn((32, 256, 256, 3), device='cuda')
# Decompose it with CP, keep 5% of the parametersparafac(tensor, rank=0.05, init='random', n_iter_max=10)
Similarity measure
We now provide CorrIndex, a correlation invariant index
This release brings a new multi-linear partial least squares regression, as first introduce by Rasmus Bro, exposed in a convenient scikit-learn-like class, CP_PLSR
We now have a unified interface for Singular Value Decomposition svd_interface.
It has support for resolving sign indeterminacy, returning a non-negative output, missing values (masked input), and various computation methods, all in one, neat interface!
New datasets
TensorLy now includes real-world datasets well-suited for tensor analysis, that you can now directly load/download in a ready to use form!
COVID-19 Serology Dataset
Systems serology is a new technology that examines the antibodies from a patient’s serum, aiming to comprehensively profile the interactions between the antibodies and Fc receptors alongside other types of immunological and demographic data. Here, we will apply CP decomposition to a COVID-19 system serology dataset. In this dataset, serum antibodies of 438 samples collected from COVID-19 patients were systematically profiled by their binding behavior to SARS-CoV-2 (the virus that causes COVID-19) antigens and Fc receptors activities. The data is formatted in a three-mode tensor of samples, antigens, and receptors Samples are labeled by the status of the patients.
IL-2 signals through the Jak/STAT pathway and transmits a signal into immune cells by phosphorylating STAT5 (pSTAT5). When phosphorylated, STAT5 will cause various immune cell types to proliferate, and depending on whether regulatory (regulatory T cells, or Tregs) or effector cells (helper T cells, natural killer cells, and cytotoxic T cells, or Thelpers, NKs, and CD8+ cells) respond, IL-2 signaling can result in immunosuppression or immunostimulation respectively. Thus, when designing a drug meant to repress the immune system, potentially for the treatment of autoimmune diseases, IL-2 which primarily enacts a response in Tregs is desirable. Conversely, when designing a drug that is meant to stimulate the immune system, potentially for the treatment of cancer, IL-2 which primarily enacts a response in effector cells is desirable. In order to achieve either signaling bias, IL-2 variants with altered affinity for its various receptors (IL2Rα or IL2Rβ) have been designed. Furthermore IL-2 variants with multiple binding domains have been designed as multivalent IL-2 may act as a more effective therapeutic.
The data contains the responses of 8 different cell types to 13 different IL-2 mutants, at 4 different timepoints, at 12 standardized IL-2 concentrations. It is formatted as a 4th order tensor of shape (13 x 4 x 12 x 8), with dimensions representing IL-2 mutant, stimulation time, dose, and cell type respectively.
A Kinetic fluorescence dataset, well suited for Parafac and multi-way partial least squares regression (N-PLS).
The data is represented as a four-way data set with the modes: Concentration, excitation wavelength, emission wavelength and time.
Airborne Visible / Infrared Imaging Spectrometer (AVIRIS) hyperspectral sensor data. It consists of 145 times 145 pixels and 220 spectral reflectance bands in the wavelength range 0.4–2.5 10^(-6) meters.
This release is only possible thanks to a lot of voluntary work by the whole TensorLy team that work hard to maintain and improve the library! Thanks in particular to the core devs
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
New 0.8.2 features:
We're excited to release version 0.8.2 of TensorLy. As always, a huge thank you to the core team and all the contributors!
This version adds many improvements to TensorLy 0.8, including:
Tensor-Ring via ALS
We now provide an ALS-based method for tensor ring decomposition, as well as a randomized sampling-based version, thanks to @OsmanMalik in #501 and #511
Big improvements to PARAFAC2
MXNet deprecated
We are now deprecating MXNet, and both MXNet and TensorFlow backend will be remove in the near future.
Better interfaces for SVD
We provide a neat, clean and simple to use interface to use all the major variants of SVD, and it keeps improving!
Improvements to CP
Other changes and other quality of life improvements
pip
caching to CI by @SauravMaheshkar in feat: addpip
caching to CI #514New Contributors
pip
caching to CI #514Full Changelog: 0.8.1...0.8.2
New features in 0.8.0
Transparent support for einsum
There are two main ways to implement tensor algebraic methods:
We improved the tenalg backend, you can transparently dispatch all tensor algebraic operations to the backend's einsum:
Now all tenalg functions will call einsum under the hood!
Opt-Einsum support
In addition, for each einsum call, you can now use opt-einsum to compute a (near) optimal contraction path and cache it with just one call!
Switch back to the original backend's einsum:
Efficient contraction on GPU with cuQuantum
If you want to accelerate your computation, you probably want to use the GPU.
TensorLy has been supporting GPU transparently for a while, through its MXNet, CuPy, TensorFlow, PyTorch and more recently, JAX backends.
Now you can also get efficient tensor contractions on GPU using NVIDIA's cuQuantum library!
Similarity measure
We now provide CorrIndex, a correlation invariant index
CP-partial least square regression
This release brings a new multi-linear partial least squares regression, as first introduce by Rasmus Bro, exposed in a convenient scikit-learn-like class,
CP_PLSR
Tensor-Train via orthogonal iteration
We have a new tensor decomposition
tensor_train_OI
class for tensor-train decomposition via orthogonal iteration.Unified SVD interface
We now have a unified interface for Singular Value Decomposition
svd_interface
.It has support for resolving sign indeterminacy, returning a non-negative output, missing values (masked input), and various computation methods, all in one, neat interface!
New datasets
TensorLy now includes real-world datasets well-suited for tensor analysis, that you can now directly load/download in a ready to use form!
COVID-19 Serology Dataset
Systems serology is a new technology that examines the antibodies from a patient’s serum, aiming to comprehensively profile the interactions between the antibodies and Fc receptors alongside other types of immunological and demographic data. Here, we will apply CP decomposition to a COVID-19 system serology dataset. In this dataset, serum antibodies of 438 samples collected from COVID-19 patients were systematically profiled by their binding behavior to SARS-CoV-2 (the virus that causes COVID-19) antigens and Fc receptors activities. The data is formatted in a three-mode tensor of samples, antigens, and receptors Samples are labeled by the status of the patients.
IL2
IL-2 signals through the Jak/STAT pathway and transmits a signal into immune cells by phosphorylating STAT5 (pSTAT5). When phosphorylated, STAT5 will cause various immune cell types to proliferate, and depending on whether regulatory (regulatory T cells, or Tregs) or effector cells (helper T cells, natural killer cells, and cytotoxic T cells, or Thelpers, NKs, and CD8+ cells) respond, IL-2 signaling can result in immunosuppression or immunostimulation respectively. Thus, when designing a drug meant to repress the immune system, potentially for the treatment of autoimmune diseases, IL-2 which primarily enacts a response in Tregs is desirable. Conversely, when designing a drug that is meant to stimulate the immune system, potentially for the treatment of cancer, IL-2 which primarily enacts a response in effector cells is desirable. In order to achieve either signaling bias, IL-2 variants with altered affinity for its various receptors (IL2Rα or IL2Rβ) have been designed. Furthermore IL-2 variants with multiple binding domains have been designed as multivalent IL-2 may act as a more effective therapeutic.
The data contains the responses of 8 different cell types to 13 different IL-2 mutants, at 4 different timepoints, at 12 standardized IL-2 concentrations. It is formatted as a 4th order tensor of shape (13 x 4 x 12 x 8), with dimensions representing IL-2 mutant, stimulation time, dose, and cell type respectively.
Kinetic
A Kinetic fluorescence dataset, well suited for Parafac and multi-way partial least squares regression (N-PLS).
The data is represented as a four-way data set with the modes: Concentration, excitation wavelength, emission wavelength and time.
Indian Pines
Airborne Visible / Infrared Imaging Spectrometer (AVIRIS) hyperspectral sensor data. It consists of 145 times 145 pixels and 220 spectral reflectance bands in the wavelength range 0.4–2.5 10^(-6) meters.
Black linting
We now automatically check for code formatting and the CI tests the code style against the Black styleguides.
List of merged pull requests in this release
In addition to these big features, this release also comes with a whole lot of improvements, better documentation and bug fixes!
Non-exhaustive list of changes:
tl.shape
return tuple for PyTorch backend by @MarieRoald in Maketl.shape
return tuple for PyTorch backend #357keepdims
totl.sum
with the PyTorch backend by @MarieRoald in Addkeepdims
totl.sum
with the PyTorch backend #356tl.clip
for the PyTorch and TensorFlow backends by @MarieRoald in Fix bug withtl.clip
for the PyTorch and TensorFlow backends #355Credit
This release is only possible thanks to a lot of voluntary work by the whole TensorLy team that work hard to maintain and improve the library! Thanks in particular to the core devs
New Contributors
Big thanks to all the new contributors and welcome to the TensorLy community!
Full Changelog: 0.7.0...0.8.0
This discussion was created from the release 0.8.2.
Beta Was this translation helpful? Give feedback.
All reactions