Configuration API

The configs module provides structured configuration management using Pydantic models.

SOM Configuration

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', neighborhood_order=1, device=<factory>, random_seed=42)[source]

Bases: BaseModel

Configuration 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'])

  • neighborhood_order (int)

  • device (str)

  • random_seed (int)

batch_size: int
device: str
distance_function: Literal['euclidean', 'cosine', 'manhattan', 'chebyshev']
epochs: int
initialization_mode: Literal['random', 'pca']
learning_rate: float
lr_decay_function: Literal['lr_inverse_decay_to_zero', 'lr_linear_decay_to_zero', 'asymptotic_decay']
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

neighborhood_function: Literal['gaussian', 'mexican_hat', 'bubble', 'triangle']
neighborhood_order: int
random_seed: int
sigma: float
sigma_decay_function: Literal['sig_inverse_decay_to_one', 'sig_linear_decay_to_one', 'asymptotic_decay']
topology: Literal['rectangular', 'hexagonal']
x: int
y: int

Saving Configuration

Loading Configuration

import yaml
from torchsom.configs import SOMConfig

# Load from YAML file
with open("som_config.yaml", "r") as f:
    config_dict = yaml.safe_load(f)
config = SOMConfig(**config_dict)

Exporting Configuration

import yaml

# Export to dictionary and JSON
config_dict = config.dict()
config_json = config.json(indent=2)

# Save to YAML file
with open("exported_config.yaml", "w") as f:
    yaml.dump(config.dict(), f, default_flow_style=False)