PythonOT/POT
POT : Python Optimal Transport
What it solves
This library provides a comprehensive suite of solvers for Optimal Transport (OT) problems. OT is a mathematical framework used to measure the distance between probability distributions, which is highly useful in machine learning for tasks like domain adaptation, comparing datasets, and training generative models.
How it works
It implements a wide range of algorithms—from exact linear programming solvers (like the Earth Mover's Distance) to faster, regularized approximations (like the Sinkhorn algorithm). The library is designed to be hardware-agnostic, offering backends that integrate seamlessly with NumPy, PyTorch, JAX, TensorFlow, and CuPy, allowing these computations to run on both CPUs and GPUs.
Who it’s for
It is intended for researchers and machine learning engineers working on signal processing, computer vision, or deep learning who need to incorporate Wasserstein distances or OT-based loss functions into their models.
Highlights
- Extensive collection of OT solvers: includes Gromov-Wasserstein, Fused Gromov-Wasserstein, unbalanced OT, and partial OT.
- Multi-backend support: works natively with PyTorch, JAX, TensorFlow, and NumPy arrays.
- ML-ready: provides pre-built modules for domain adaptation, Wasserstein barycenters, and Graph Neural Network (GNN) layers.
- Performance-optimized: includes stabilized Sinkhorn implementations and stochastic solvers for large-scale datasets.
Related
- Project
ott-jax/ottA JAX-powered library for solving optimal transport problems at scale, providing tools to efficiently match point clouds using discrete solvers and neural network approaches.
- Project
hyperopt/hyperoptA Python library for serial and parallel hyperparameter optimization over complex search spaces, including real-valued, discrete, and conditional dimensions.
- Project
lotus-data/lotusLOTUS is a Python library for large‑scale, LLM‑driven data processing. It introduces *semantic operators* (LLM‑based map, filter, reduce, join, etc.) and an optimizer that batches and cascades model calls to improve accuracy while lowering API costs. The library supports both pure LLM operators and *agentic* operators that run tool‑using agents (e.g., a sandboxed Python REPL) on each data shard, enabling complex tasks like code‑base analysis, research synthesis, failure‑mode mining, document extraction, LLM‑as‑judge evaluation, and RAG. Install via `pip install lotus-ai`; usage revolves around creating a `Corpus`, specifying a task, and invoking `agent` or semantic operators. Backed by Stanford/UC Berkeley research and documented on ReadTheDocs, with community Discord and example notebooks.
- Project
sktime/skproA Python library for supervised probabilistic prediction that provides tools for tabular regression, survival analysis, and uncertainty quantification with scikit-learn compatible interfaces.
- Project
WenjieDu/PyPOTSPyPOTS is a Python machine learning toolbox designed to handle partially-observed multivariate time series data, providing unified APIs for imputation, forecasting, classification, clustering, and anomaly detection.