VSA Models
The jax_hdc.vsa module provides Vector Symbolic Architecture model implementations.
Base Class
Binary Spatter Codes
- class jax_hdc.vsa.BSC(name: str, dimensions: int)[source]
Binary Spatter Codes (BSC).
Binary hypervectors with XOR binding, majority bundling, Hamming similarity.
- static create(dimensions: int = 10000) BSC[source]
Create a BSC model.
- Parameters:
dimensions – Dimensionality of hypervectors (default: 10000)
- Returns:
Initialized BSC model
Multiply-Add-Permute
- class jax_hdc.vsa.MAP(name: str, dimensions: int)[source]
Multiply-Add-Permute (MAP).
Real-valued vectors with element-wise multiply binding, normalized sum bundling, cosine similarity.
- static create(dimensions: int = 10000) MAP[source]
Create a MAP model.
- Parameters:
dimensions – Dimensionality of hypervectors (default: 10000)
- Returns:
Initialized MAP model
Holographic Reduced Representations
- class jax_hdc.vsa.HRR(name: str, dimensions: int)[source]
Holographic Reduced Representations (HRR).
Real-valued vectors with circular convolution binding, normalized sum bundling, cosine similarity.
- static create(dimensions: int = 10000) HRR[source]
Create an HRR model.
- Parameters:
dimensions – Dimensionality of hypervectors (default: 10000)
- Returns:
Initialized HRR model
Fourier HRR
- class jax_hdc.vsa.FHRR(name: str, dimensions: int)[source]
Fourier Holographic Reduced Representations (FHRR).
Complex-valued vectors with element-wise multiply binding, normalized sum bundling.
- static create(dimensions: int = 10000) FHRR[source]
Create an FHRR model.
- Parameters:
dimensions – Dimensionality of hypervectors (default: 10000)
- Returns:
Initialized FHRR model
Factory Function
- jax_hdc.vsa.create_vsa_model(model_type: str = 'map', dimensions: int = 10000) VSAModel[source]
Factory function to create VSA models.
- Parameters:
model_type – Type of VSA model (‘bsc’, ‘map’, ‘hrr’, ‘fhrr’, ‘bsbc’, ‘cgr’, ‘mcr’, ‘vtb’)
dimensions – Dimensionality of hypervectors (default: 10000)
- Returns:
Initialized VSA model
Example Usage
Creating models:
from jax_hdc import BSC, MAP, HRR, FHRR
import jax
key = jax.random.PRNGKey(42)
# Binary Spatter Codes
bsc = BSC.create(dimensions=10000)
x = bsc.random(key, (10000,))
y = bsc.random(key, (10000,))
bound = bsc.bind(x, y)
# MAP
map_model = MAP.create(dimensions=10000)
x = map_model.random(key, (10000,))
y = map_model.random(key, (10000,))
bound = map_model.bind(x, y)
Using factory function:
from jax_hdc.vsa import create_vsa_model
model = create_vsa_model('map', dimensions=10000)