PyroVED Versions Save

Invariant representation learning from imaging and spectral data

v0.3.0

5 months ago

What's Changed

Full Changelog: https://github.com/ziatdinovmax/pyroVED/compare/v0.2.3...v0.3.0

v0.2.3

2 years ago

New functionalities

  1. The ability to condition (i)VAE on both continuous and discrete variables. The latter usually represent categorical data classes (aka labels) whereas the former can represent some continuous property (or multiple properties) of the data that we know. See the example notebook.

  2. (i)VAE for semi-supervised regression. To date, most applications of the semi-supervised VAE were for categorical data. Here we introduce an option to use semi-supervised VAE for regression analysis where for some (small) part of the data both the label variable and the predictors are observed, while for other (larger) part of the data only the predictors are given. The usage of the ss_reg_iVAE class is similar to that of the ssiVAE

  3. The auxSVITrainer now works for both classification and regression tasks. To choose between the two, use the task argument (e.g. task="classification" or task=regression```).

Breaking changes

  1. The way categorical variables are passed to ivae.manifold2d has changed.

Before:

for i in range(10):
    cvae.manifold2d(d=12, label=i, cmap="viridis")

Now:

for i in range(10):
    cls = pv.utils.to_onehot(torch.tensor([i,]), 10)
    cvae.manifold2d(d=12, y=cls, cmap="viridis")
  1. pyroVED < 0.2.3 is not compatible with the latest PyTorch version 1.9. Hence, if using earlier pyroVED versions, downgrade to the PyTorch < 1.9. See this page for details.

v0.2.1

2 years ago

Minor bug fixes and improvements

v0.2.0

2 years ago

Breaking changes

Due to the addition of scale invariance, it is not sustainable any longer to place a new letter for each invariance before VAE. Hence, from now we are going to call it simply iVAE ('i' for invariant). As a result, the model names change as follows:

trVAE -> iVAE sstrVAE -> ssiVAE jtrVAE -> jiVAE

In addition invariances are now passed as a list during the model initialization. For example, to enforce rotation, translation, and scale invariances, use

model = pv.models.iVAE(data_dim, latent_dim, invariances=['r', 't', 's'])

To enforce rotational invariance only, use

model = pv.models.iVAE(data_dim, latent_dim, invariances=['r'])

Note that the default behavior is invariances=None.

New functionalities

  • Scale invariance for all VAE models

Other improvements

  • User has now an option to choose a specific GPU device for model and data
  • One can now select Gaussian Error Linear Unit (GELU) as an activation function for the encoder and decoder NNs
  • Some improvements to documentation

v0.1.2

3 years ago

Minor bug fixes and improvements including:

  • Option to use different scale factors for discrete and continuous KL terms (for jtrVAE)
  • Option to generate and plot traversals of the learned latent manifolds (for jtrVAE and sstrVAE)
  • Option to condition data generation with a trained model on the angle and/or shifts

v0.1.1

3 years ago

Push minor changes and bug fixes to PyPI

v0.1.0

3 years ago
  • Add a variational encoder-decoder model (input and output are different), which can be used e.g for the realization of the im2spec-type models
  • Add a baseVAE class for more flexibility and less repetition
  • More tests and bug fixes

v0.0.3

3 years ago

Bug fixes and minor improvements

v0.0.2

3 years ago
  • Add joint (t)(r)VAE using parallel enumeration in Pyro
  • Bug fixes
  • Add some tests

v0.0.1

3 years ago

Pre-alpha release of the pyroVED package