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

[!WARNING] Project Status: This is a 100% Vibe-coded project. While we have extensive test coverage, bugs and errors should be expected. Use with caution in production environments.

  • 🌐 3 Manifolds: Euclidean, Poincaré Ball, Hyperboloid
  • 🧠 13+ Neural Network Layers: Linear, convolutional (2D/3D), 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.1.1.tar.gz (51.5 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.1.1-py3-none-any.whl (75.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hyperbolix-0.1.1.tar.gz
  • Upload date:
  • Size: 51.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","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.1.1.tar.gz
Algorithm Hash digest
SHA256 6d64df388f615b1cd49bd14f6547786e96bd79e216451ef64b7910d89aff1130
MD5 153b1d450dabc0e9695fc2e86b3db13f
BLAKE2b-256 d118bd112b9dc5ca3c401c60f4f7e4daad928dc03ee2a412a9e5c03b2715cfd6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hyperbolix-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 75.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","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.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e17d658c914de0706a847e4406766cf79bee2ddc6324ae1f4ddcbc498d5d2533
MD5 e0568a9563522ccea1a91267563e4bb2
BLAKE2b-256 0f9bee7c8b841335e7be1319be6e59051a8f6f892455abd8dd198bc04acbc979

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