Skip to main content
Pre-release

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

Documentation Status CircleCI codecov CodeFactor License PyPI version DOI arXiv

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)

Source distribution for latte-metrics 0.0.1a6
File Size Uploaded
latte-metrics-0.0.1a6.tar.gz 34.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for latte-metrics 0.0.1a6
File Interpreter ABI Platform
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page