Skip to main content

Hyperbolic Deep Learning in JAX

Project description

Hyperbolix

Hyperbolic Deep Learning in JAX

Tests Python JAX License

Pure JAX implementation of hyperbolic deep learning with manifold operations, neural network layers, and Riemannian optimizers. Built with Flax NNX and Optax.

Features

  • 🌐 3 Manifolds: Euclidean, Poincaré Ball, Hyperboloid
  • 🧠 13+ Neural Network Layers: Linear, convolutional, regression
  • 4 Hyperbolic Activations: ReLU, Leaky ReLU, Tanh, Swish
  • 📈 Riemannian Optimizers: RAdam and RSGD with automatic manifold detection
  • 🚀 Pure JAX/Flax NNX: vmap-native API, JIT-compatible (10-100x speedup)
  • 1,400+ tests passing with comprehensive benchmark suite

Quick Start

import jax.numpy as jnp
from hyperbolix.manifolds import poincare
from hyperbolix.nn_layers import HypLinearPoincare
from flax import nnx

# Manifold operations
x = jnp.array([0.1, 0.2])
y = jnp.array([0.3, -0.1])
distance = poincare.dist(x, y, c=1.0, version_idx=0)

# Neural network layer
layer = HypLinearPoincare(
    manifold_module=poincare,
    in_dim=128,
    out_dim=64,
    rngs=nnx.Rngs(0)
)
output = layer(x_batch, c=1.0)

Installation

git clone https://github.com/hyperbolix/hyperbolix.git
cd hyperbolix
uv sync  # or: pip install -e .

Requirements: Python 3.12+, JAX 0.4.20+, Flax 0.8.0+, Optax 0.1.7+

Documentation

📖 Full Documentation

Build docs locally: uv run mkdocs serve

Key Concepts

Pure functional design: No stateful classes, curvature passed at call time

import hyperbolix.manifolds.poincare as poincare
dist = poincare.dist(x, y, c=1.0, version_idx=0)  # (dim,) → scalar

vmap-native API: Functions operate on single points, use jax.vmap for batching

# Batch operations
distances = jax.vmap(poincare.dist, in_axes=(0, 0, None, None))(
    x_batch, y_batch, 1.0, 0
)

Citation

@software{hyperbolix2026,
  title = {Hyperbolix: Hyperbolic Deep Learning in JAX},
  author = {Klein, Timo and Lang, Thomas},
  year = {2026},
  url = {https://github.com/hyperbolix/hyperbolix}
}

References

Implements methods from:

  • Ganea et al. (2018): Hyperbolic Neural Networks
  • Bécigneul & Ganea (2019): Riemannian Adaptive Optimization
  • Nagano et al. (2019): Wrapped Normal Distribution on Hyperbolic Space
  • Shimizu et al. (2020): Hyperbolic Neural Networks++
  • Bdeir et al. (2023): Fully Hyperbolic CNNs
  • Bdeir et al. (2025): Robust Hyperbolic Learning

See individual module docstrings for detailed references.

Contributing

Contributions welcome! See DEVELOPER_GUIDE.md for setup and guidelines.

For bugs or questions, open an issue.

License

MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hyperbolix-0.5.3.tar.gz (75.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hyperbolix-0.5.3-py3-none-any.whl (102.8 kB view details)

Uploaded Python 3

File details

Details for the file hyperbolix-0.5.3.tar.gz.

File metadata

  • Download URL: hyperbolix-0.5.3.tar.gz
  • Upload date:
  • Size: 75.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for hyperbolix-0.5.3.tar.gz
Algorithm Hash digest
SHA256 3c89f78b0d277d48423de5a2ce0e9ca82b466aa235b9bd2194b0225043af2f5e
MD5 fd734aff310cf3d0f22f6b60ee84ba24
BLAKE2b-256 35be3c93d1ff18669226a0acf21e48b6a265bab9a4f2f86730fc3d6eda8074ee

See more details on using hashes here.

File details

Details for the file hyperbolix-0.5.3-py3-none-any.whl.

File metadata

  • Download URL: hyperbolix-0.5.3-py3-none-any.whl
  • Upload date:
  • Size: 102.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for hyperbolix-0.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2de503ece643c7e546559acf9ef75d11608b4dd55db1cb5f91c7d301b69ebb42
MD5 86c87eb4042ae22a7af1bf7ba4b73348
BLAKE2b-256 2517bd797209996f00079cbefdef59a2b7342513040a67d7f734a2a436245ff1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page