latent-riemannian-world
Riemannian geometry + Bayesian inference + world models for diffusion model latent spaces.
Why this library?
| latent-geometry | Diffusion-Pullback | lrw | |
|---|---|---|---|
| Pullback metric | ✓ | ✓ | ✓ |
| Fisher-Rao metric | ✗ | ✗ | ✓ |
| Bayesian metric | ✗ | ✗ | ✓ |
| Geodesic solver (IVP) | ✗ | ✗ | ✓ |
| Geodesic solver (BVP) | ✗ | ✗ | ✓ |
| Parallel transport | ✗ | ✗ | ✓ |
| SVGD / Riemannian SGLD | ✗ | ✗ | ✓ |
| World model / temporal | ✗ | ✗ | ✓ |
| Python 3.12+ / PyTorch 2.4+ | ✗ | ✗ | ✓ |
Installation
pip install latent-riemannian-world
Quick Start
import torch
from lrw.metric import PullbackMetric, BayesianMetric
from lrw.geodesic import GeodesicSolver, BVPSolver
from lrw.transport import SchildsLadder, PoleLadder
from lrw.bayes import SVGD, RiemannianSGLD
from lrw.world import LatentStateSpace, RiemannianRSSM
decoder = your_model.decode # (B, D) -> (B, C, H, W)
metric = PullbackMetric(decoder=decoder)
z = torch.randn(4, 16)
# IVP solver — fast, approximate
solver = GeodesicSolver(metric=metric)
path = solver.interpolate(z[0:1], z[1:2], n_points=10)
# BVP solver — true geodesic, guaranteed arrival at z1
bvp = BVPSolver(metric=metric, lr=0.1, max_iter=50)
true_path, info = bvp.geodesic_path(z[0:1], z[1:2], n_points=10)
print(f"Converged: {info['converged']}, error: {info['final_error']:.4f}")
IVP vs BVP
| GeodesicSolver (IVP) | BVPSolver | |
|---|---|---|
| Speed | Fast | Slower (iterative) |
| Arrival at z1 | Not guaranteed | Guaranteed |
| Use case | Prototyping | WAN keyframes, final quality |
Module Structure
lrw/
├── metric/ PullbackMetric, FisherMetric, BayesianMetric
├── geodesic/ GeodesicSolver (IVP), BVPSolver (true geodesic), slerp
├── transport/ SchildsLadder, PoleLadder
├── bayes/ SVGD, RiemannianSGLD
├── world/ LatentStateSpace, RiemannianRSSM
└── utils/ sym_inv, sym_sqrt, riemannian_norm, manifold_assert_*
References
- Shao et al. (2018) The Riemannian Geometry of Deep Generative Models. CVPR.
- Arvanitidis et al. (2018) Latent Space Oddity. ICLR.
- Park et al. (2023) Riemannian Geometry of Diffusion Models. NeurIPS.
- Liu et al. (2016) Stein Variational Gradient Descent. NeurIPS.
- Hafner et al. (2020) Dream to Control. ICLR.
License
BSL-1.1 — (c) 2025 lajjadred
Release files for latent-riemannian-world 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| latent_riemannian_world-0.3.0.tar.gz | 19.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| latent_riemannian_world-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.8 kB
Release files / latent_riemannian_world-0.3.0.tar.gz
| Download URL | latent_riemannian_world-0.3.0.tar.gz |
|---|---|
| Size | 19.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
51b2af41154357dcd0958f6084849d9170fdf8e8035fca650a4420fa145441e3
|
|
BLAKE2b-256 checksum How to use checksums |
22b11c6dea777207156929239dbc90ccadcc9ddcf6b5fb7f37893806bdc5eeec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / latent_riemannian_world-0.3.0-py3-none-any.whl
| Download URL | latent_riemannian_world-0.3.0-py3-none-any.whl |
|---|---|
| Size | 27.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9ae044d4f68d766dd1c77daacacd7645f5d6a26389322eef7bc8a57c29a5eeee
|
|
BLAKE2b-256 checksum How to use checksums |
c56e8b9c62611872f299af7e7a366de32213886452a77292aae46d1ef84cd91e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|