Releases: ziatdinovmax/pyroVED
v0.3.0
What's Changed
- Remove redundant lines of code by @ziatdinovmax in #44
- cvae by @ziatdinovmax in #47
- Devices by @ziatdinovmax in #49
- Use torch.Generator only if device arg is passed by @ziatdinovmax in #50
- Fix the traversal manifold visualization by @ziatdinovmax in #51
- Remove restrictions on matplotlib version by @ziatdinovmax in #52
Full Changelog: v0.2.3...v0.3.0
v0.2.3
New functionalities
-
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.
-
(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 thessiVAE
-
The
auxSVITrainer
now works for both classification and regression tasks. To choose between the two, use thetask
argument (e.g.task="classification" or
task=regression```).
Breaking changes
- 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")
- 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
Minor bug fixes and improvements
v0.2.0
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
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
Push minor changes and bug fixes to PyPI
v0.1.0
- 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
Bug fixes and minor improvements
v0.0.2
- Add joint (t)(r)VAE using parallel enumeration in Pyro
- Bug fixes
- Add some tests
v0.0.1
Pre-alpha release of the pyroVED package