This release is a pre-release and may not be stable for production use.
Cross-framework Python Package for Evaluation of Latent-based Generative Models
Latte
Latte (for LATent Tensor Evaluation) is a cross-framework Python package for evaluation of latent-based generative models. Latte supports calculation of disentanglement and controllability metrics in both PyTorch (via TorchMetrics) and TensorFlow.
Installation
For developers working on local clone, cd to the repo and replace latte with .. For example, pip install .[tests]
pip install latte-metrics # core (numpy only)
pip install latte-metrics[pytorch] # with torchmetrics wrapper
pip install latte-metrics[keras] # with tensorflow wrapper
pip install latte-metrics[tests] # for testing
Running tests locally
pip install .[tests]
pytest tests/ --cov=latte
Quick Examples
Functional API
import latte
from latte.functional.disentanglement.mutual_info import mig
import numpy as np
latte.seed(42)
z = np.random.randn(16, 8)
a = np.random.randn(16, 2)
mutual_info_gap = mig(z, a, discrete=False, reg_dim=[4, 3])
Modular API
import latte
from latte.metrics.core.disentanglement import MutualInformationGap
import numpy as np
latte.seed(42)
mig = MutualInformationGap()
# ...
# initialize data and model
# ...
for data, attributes in range(batches):
recon, z = model(data)
mig.update_state(z, attributes)
mig_val = mig.compute()
TorchMetrics API
import latte
from latte.metrics.torch.disentanglement import MutualInformationGap
import torch
latte.seed(42)
mig = MutualInformationGap()
# ...
# initialize data and model
# ...
for data, attributes in range(batches):
recon, z = model(data)
mig.update(z, attributes)
mig_val = mig.compute()
Keras Metric API
import latte
from latte.metrics.keras.disentanglement import MutualInformationGap
from tensorflow import keras as tfk
latte.seed(42)
mig = MutualInformationGap()
# ...
# initialize data and model
# ...
for data, attributes in range(batches):
recon, z = model(data)
mig.update_state(z, attributes)
mig_val = mig.result()
Example Notebooks
See Latte in action with Morpho-MNIST example notebooks on Google Colab:
Documentation
https://latte.readthedocs.io/en/latest
Supported metrics
🧪 Beta support | ✔️ Stable | 🔨 In Progress | 🕣 In Queue | 👀 KIV |
| Metric | Latte Functional | Latte Modular | TorchMetrics | Keras Metric |
|---|---|---|---|---|
| Disentanglement Metrics | ||||
| 📝 Mutual Information Gap (MIG) | 🧪 | 🧪 | 🧪 | 🧪 |
| 📝 Dependency-blind Mutual Information Gap (DMIG) | 🧪 | 🧪 | 🧪 | 🧪 |
| 📝 Dependency-aware Mutual Information Gap (XMIG) | 🧪 | 🧪 | 🧪 | 🧪 |
| 📝 Dependency-aware Latent Information Gap (DLIG) | 🧪 | 🧪 | 🧪 | 🧪 |
| 📝 Separate Attribute Predictability (SAP) | 🧪 | 🧪 | 🧪 | 🧪 |
| 📝 Modularity | 🧪 | 🧪 | 🧪 | 🧪 |
| 📝 β-VAE Score | 👀 | 👀 | 👀 | 👀 |
| 📝 FactorVAE Score | 👀 | 👀 | 👀 | 👀 |
| 📝 DCI Score | 👀 | 👀 | 👀 | 👀 |
| 📝 Interventional Robustness Score (IRS) | 👀 | 👀 | 👀 | 👀 |
| 📝 Consistency | 👀 | 👀 | 👀 | 👀 |
| 📝 Restrictiveness | 👀 | 👀 | 👀 | 👀 |
| Interpolatability Metrics | ||||
| 📝 Smoothness | 🧪 | 🧪 | 🧪 | 🧪 |
| 📝 Monotonicity | 🧪 | 🧪 | 🧪 | 🧪 |
| 📝 Latent Density Ratio | 🕣 | 🕣 | 🕣 | 🕣 |
| 📝 Linearity | 👀 | 👀 | 👀 | 👀 |
Bundled metric modules
🧪 Experimental (subject to changes) | ✔️ Stable | 🔨 In Progress | 🕣 In Queue
| Metric Bundle | Latte Functional | Latte Modular | TorchMetrics | Keras Metric | Included |
|---|---|---|---|---|---|
| Dependency-aware Disentanglement | 🧪 | 🧪 | 🧪 | 🧪 | MIG, DMIG, XMIG, DLIG |
| LIAD-based Interpolatability | 🧪 | 🧪 | 🧪 | 🧪 | Smoothness, Monotonicity |
Cite
For individual metrics, please cite the paper according to the link in the 📝 icon in front of each metric.
If you find our package useful, please cite open access paper on Software Impacts (Elsevier) as
@article{
watcharasupat2021latte,
author = {Watcharasupat, Karn N. and Lee, Junyoung and Lerch, Alexander},
title = {{Latte: Cross-framework Python Package for Evaluation of Latent-based Generative Models}},
journal = {Software Impacts},
volume = {11},
pages = {100222},
year = {2022},
issn = {2665-9638},
doi = {https://doi.org/10.1016/j.simpa.2022.100222},
url = {https://www.sciencedirect.com/science/article/pii/S2665963822000033},
}
Metadata
Release files for latte-metrics 0.0.1a6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| latte-metrics-0.0.1a6.tar.gz | 34.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| latte_metrics-0.0.1a6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 87.3 kB
Release files / latte-metrics-0.0.1a6.tar.gz
| Download URL | latte-metrics-0.0.1a6.tar.gz |
|---|---|
| Size | 34.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
588de376b508fba930ac9d25ad81ca1bcd4dca4274487e06ef56d5131e61db1f
|
|
BLAKE2b-256 checksum How to use checksums |
11b27047fd75d4c67c10cac20dcd7ca5c11b7768ef830cb869ed73b19af0f8cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.8.16
|
Release files / latte_metrics-0.0.1a6-py3-none-any.whl
| Download URL | latte_metrics-0.0.1a6-py3-none-any.whl |
|---|---|
| Size | 52.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
de87d2265306bdfc6e74d6e0a40ce95f79a50ae477f7aff17c16f5dbe3b01607
|
|
BLAKE2b-256 checksum How to use checksums |
809cccc0fc8920cdf15cf498e6e7ee3ff8f68cd3c74a404591ae53f051d714ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.8.16
|