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)