function.torch_objective

function.torch_objective

Classes

Name Description
TorchObjective A callable objective function for SpotOptim that trains and evaluates a PyTorch model.

TorchObjective

function.torch_objective.TorchObjective(experiment, seed=None, use_scaler=False)

A callable objective function for SpotOptim that trains and evaluates a PyTorch model.

Attributes

Name Description
bounds Returns the bounds of the hyperparameters.
objective_names Returns the names of the objectives.
var_name Returns the names of the hyperparameters.
var_trans Returns the transformations of the hyperparameters.
var_type Returns the types of the hyperparameters.

Methods

Name Description
train_model Trains the model and returns a dictionary of metrics.
train_model
function.torch_objective.TorchObjective.train_model(
    model,
    train_loader,
    val_loader,
    params,
)

Trains the model and returns a dictionary of metrics.

Executes the training loop for the specified number of epochs. Handles optimizer creation, loss calculation, backward pass, and validation evaluation.

Parameters
Name Type Description Default
model nn.Module The PyTorch model to train. required
train_loader DataLoader DataLoader for training data. required
val_loader Optional[DataLoader] DataLoader for validation data (can be None). required
params Dict[str, Any] Hyperparameters dictionary containing ‘epochs’, ‘lr’, ‘optimizer’ name, etc. required
Returns
Name Type Description
Dict[str, float] Dict[str, float]: Dictionary containing computed metrics, e.g., {‘val_loss’: …, ‘train_loss’: …, ‘mse’: …, ‘epochs’: …}.
Examples
>>> import torch
>>> import torch.nn as nn
>>> from torch.utils.data import DataLoader, TensorDataset
>>> from spotoptim.function.torch_objective import TorchObjective
>>> from unittest.mock import MagicMock
>>>
>>> # 1. Create dataset and loader
>>> X = torch.randn(10, 2)
>>> y = torch.randn(10, 1)
>>> loader = DataLoader(TensorDataset(X, y), batch_size=2)
>>>
>>> # 2. Create model
>>> model = nn.Linear(2, 1)
>>>
>>> # 3. Mock Objective context
>>> exp = MagicMock()
>>> exp.loss_function = nn.MSELoss()
>>> exp.epochs = 1
>>> exp.torch_device = "cpu"
>>> objective = TorchObjective(exp)
>>>
>>> # 4. Train
>>> params = {'lr': 1e-2, 'optimizer': 'Adam'}
>>> metrics = objective.train_model(model, loader, None, params)
>>> print(f"Train Loss: {metrics['train_loss']:.4f}")
>>> print(f"Epochs: {metrics['epochs']}")