VAE_LinNF¶
This module is the implementation of a Variational Auto Encoder with Normalizing Flow (https://arxiv.org/pdf/1505.05770.pdf).
Available samplers¶
Samples from a Standard normal distribution in the Autoencoder’s latent space. |
|
Fits a Gaussian Mixture in the Autoencoder’s latent space. |
|
Fits a second VAE in the Autoencoder’s latent space. |
|
Fits a Masked Autoregressive Flow in the Autoencoder’s latent space. |
|
Fits an Inverse Autoregressive Flow in the Autoencoder’s latent space. |
- class pythae.models.VAE_LinNF_Config(input_dim=None, latent_dim=10, uses_default_encoder=True, uses_default_decoder=True, reconstruction_loss='mse', flows=<factory>)[source]¶
VAE with linear Normalizing Flow config class.
- Parameters
input_dim (int) – The input_data dimension
latent_dim (int) – The latent space dimension. Default: None.
reconstruction_loss (str) – The reconstruction loss to use [‘bce’, ‘mse’]. Default: ‘mse’
flows (List[str]) – A list of strings corresponding to the class of each flow to be applied. Default: [‘Plannar’, ‘Planar’]. Flow choices: [‘Planar’, ‘Radial’].
- class pythae.models.VAE_LinNF(model_config, encoder=None, decoder=None)[source]¶
Variational Auto Encoder with linear Normalizing Flows model.
- Parameters
model_config (VAE_LinNF_Config) – The Variational Autoencoder configuration seting the main
model (parameters of the) –
encoder (BaseEncoder) – An instance of BaseEncoder (inheriting from torch.nn.Module which plays the role of encoder. This argument allows you to use your own neural networks architectures if desired. If None is provided, a simple Multi Layer Preception (https://en.wikipedia.org/wiki/Multilayer_perceptron) is used. Default: None.
decoder (BaseDecoder) – An instance of BaseDecoder (inheriting from torch.nn.Module which plays the role of decoder. This argument allows you to use your own neural networks architectures if desired. If None is provided, a simple Multi Layer Preception (https://en.wikipedia.org/wiki/Multilayer_perceptron) is used. Default: None.
flows (List[str]) – A list of strings corresponding to the class of each flow to be applied. Default: Empty list (no flow is applied).
Note
For high dimensional data we advice you to provide you own network architectures. With the provided MLP you may end up with a
MemoryError.- forward(inputs, **kwargs)[source]¶
The VAE with linear normalizing flows model
- Parameters
inputs (BaseDataset) – The training dataset with labels
- Returns
An instance of ModelOutput containing all the relevant parameters
- Return type
- get_nll(data, n_samples=1, batch_size=100)[source]¶
Function computed the estimate negative log-likelihood of the model. It uses importance sampling method with the approximate posterior distribution. This may take a while.
- Parameters
data (torch.Tensor) – The input data from which the log-likelihood should be estimated. Data must be of shape [Batch x n_channels x …]
n_samples (int) – The number of importance samples to use for estimation
batch_size (int) – The batchsize to use to avoid memory issues