Configuration API¶
The configs module provides structured configuration management using Pydantic models.
SOM Configuration¶
Configuration for SOM parameters using pydantic for validation.
- class torchsom.configs.som_config.SOMConfig(*, x, y, topology='rectangular', epochs=10, batch_size=5, learning_rate=0.5, sigma=1.0, neighborhood_function='gaussian', distance_function='euclidean', lr_decay_function='asymptotic_decay', sigma_decay_function='asymptotic_decay', initialization_mode='random', pbc=False, search_backend='auto', neighborhood_order=1, device=<factory>, random_seed=42)[source]¶
Bases:
BaseModelConfiguration for SOM parameters using pydantic for validation.
- Parameters:
x (int)
y (int)
topology (Literal['rectangular', 'hexagonal'])
epochs (int)
batch_size (int)
learning_rate (float)
sigma (float)
neighborhood_function (Literal['gaussian', 'mexican_hat', 'bubble', 'triangle'])
distance_function (Literal['euclidean', 'cosine', 'manhattan', 'chebyshev'])
lr_decay_function (Literal['lr_inverse_decay_to_zero', 'lr_linear_decay_to_zero', 'asymptotic_decay'])
sigma_decay_function (Literal['sig_inverse_decay_to_one', 'sig_linear_decay_to_one', 'asymptotic_decay'])
initialization_mode (Literal['random', 'pca'])
pbc (bool)
search_backend (Literal['auto', 'torch', 'faiss'])
neighborhood_order (int)
device (str)
random_seed (int)
- lr_decay_function: Literal['lr_inverse_decay_to_zero', 'lr_linear_decay_to_zero', 'asymptotic_decay']¶
- model_config = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
Loading and Saving¶
SOMConfig is a Pydantic model, so it round-trips through dictionaries, JSON, and
YAML for reproducible experiments.
import yaml
from torchsom.configs import SOMConfig
# Load from a YAML file
with open("som_config.yaml") as f:
config = SOMConfig(**yaml.safe_load(f))
# Export to a dict or a JSON string
config_dict = config.model_dump()
config_json = config.model_dump_json(indent=2)
# Save back to YAML
with open("exported_config.yaml", "w") as f:
yaml.dump(config_dict, f, default_flow_style=False)