HyperparameterSpace API
Overview
Define the search space for hyperparameters and assign them to different agents for specialized optimization.
️ Initialization
python
# Method 1: Dynamic addition
space = HyperparameterSpace()
space.add_continuous('class_weight_0', 0.5, 3.0, agent=0) # Problem-specific
# Method 2: Full initialization
space = HyperparameterSpace(
agent0_params=['class_weight_0', 'weight_decay'], # Problem-specific
agent1_params=['hidden_size'], # Architecture
agent2_params=['learning_rate', 'batch_size'], # Training
bounds={'class_weight_0': (0.5, 3.0), ...},
param_types={'class_weight_0': float, ...}
)
Methods
add_continuous(name, min_val, max_val, agent)
add_continuous(name: str, min_val: float, max_val: float, agent: int) -> self
Add a continuous hyperparameter with min/max bounds.
python
# Float parameters
space.add_continuous('class_weight_0', 0.5, 3.0, agent=0) # Problem-specific
space.add_continuous('hidden_size', 64, 512, agent=1) # Architecture (will be cast to int)
# Training parameters
space.add_continuous('learning_rate', 1e-5, 1e-2, agent=2) # Training
space.add_discrete('batch_size', [16, 32, 64, 128], agent=2) # Training
add_discrete(name, choices, agent)
add_discrete(name: str, choices: List, agent: int) -> self
Add a discrete hyperparameter with fixed choices (use sparingly - continuous ranges are preferred).
python
space.add_discrete('optimizer', ['adam', 'sgd', 'adamw'], agent=2) # Training
space.add_discrete('activation', ['relu', 'tanh', 'gelu'], agent=1) # Architecture
Agent Assignment
🤖 Agent 0
Problem-Specific
Class weights, regularization, loss functions, domain-specific parameters
🏗️ Agent 1
Architecture
Hidden layers, network size, activation functions, model structure
⚙️ Agent 2
Training
Batch size, learning rate, optimizers, training schedule
Complete Example
python
from MAT_HPO_LIB import HyperparameterSpace
# Create space for neural network optimization
space = HyperparameterSpace()
# Agent 0: Problem-specific parameters
space.add_continuous('class_weight_0', 0.5, 3.0, agent=0)
space.add_continuous('weight_decay', 1e-6, 1e-3, agent=0)
# Agent 1: Architecture parameters
space.add_continuous('hidden_size', 64, 512, agent=1)
space.add_continuous('num_layers', 2, 8, agent=1)
# Agent 2: Training parameters
space.add_continuous('learning_rate', 1e-5, 1e-2, agent=2)
space.add_discrete('batch_size', [16, 32, 64, 128], agent=2)
# Each agent will have 2 parameters to optimize
print(f"Agent dimensions: {space.agent_dims}") # (2, 2, 2)