secmlt.models.pytorch package

Submodules

secmlt.models.pytorch.base_pytorch_nn module

Wrappers for PyTorch models.

class secmlt.models.pytorch.base_pytorch_nn.BasePytorchClassifier(model: torch.nn.Module, preprocessing: DataProcessing | None = None, postprocessing: DataProcessing | None = None, trainer: BasePyTorchTrainer | None = None)[source]

Bases: BaseModel

Wrapper for PyTorch classifier.

__init__(model: torch.nn.Module, preprocessing: DataProcessing | None = None, postprocessing: DataProcessing | None = None, trainer: BasePyTorchTrainer | None = None) None[source]

Create wrapped PyTorch classifier.

Parameters:
  • model (torch.nn.Module) – PyTorch model.

  • preprocessing (DataProcessing, optional) – Preprocessing to apply before the forward., by default None.

  • postprocessing (DataProcessing, optional) – Postprocessing to apply after the forward, by default None.

  • trainer (BasePyTorchTrainer, optional) – Trainer object to train the model, by default None.

_decision_function(x: torch.Tensor) torch.Tensor[source]

Compute decision function of the model.

Parameters:

x (torch.Tensor) – Input samples.

Returns:

Output scores from the model.

Return type:

torch.Tensor

gradient(x: torch.Tensor, y: int) torch.Tensor[source]

Compute batch gradients of class y w.r.t. x.

Parameters:
  • x (torch.Tensor) – Input samples.

  • y (int) – Class label.

Returns:

Gradient of class y w.r.t. input x.

Return type:

torch.Tensor

property model: torch.nn.Module

Get the wrapped instance of PyTorch model.

Returns:

Wrapped PyTorch model.

Return type:

torch.nn.Module

predict(x: torch.Tensor) torch.Tensor[source]

Return the predicted class for the given samples.

Parameters:

x (torch.Tensor) – Input samples.

Returns:

Predicted class for the samples.

Return type:

torch.Tensor

train(dataloader: torch.utils.data.DataLoader) torch.nn.Module[source]

Train the model with given dataloader, if trainer is set.

Parameters:

dataloader (DataLoader) – Training PyTorch dataloader to use for training.

Returns:

Trained PyTorch model.

Return type:

torch.nn.Module

Raises:

ValueError – Raises ValueError if the trainer is not set.

secmlt.models.pytorch.base_pytorch_trainer module

PyTorch model trainers.

class secmlt.models.pytorch.base_pytorch_trainer.BasePyTorchTrainer(optimizer: torch.optim.Optimizer, epochs: int = 5, loss: torch.nn.Module | None = None, scheduler: torch.optim.lr_scheduler._LRScheduler | None = None)[source]

Bases: BaseTrainer

Trainer for PyTorch models.

__init__(optimizer: torch.optim.Optimizer, epochs: int = 5, loss: torch.nn.Module | None = None, scheduler: torch.optim.lr_scheduler._LRScheduler | None = None) None[source]

Create PyTorch trainer.

Parameters:
  • optimizer (torch.optim.Optimizer) – Optimizer to use for training the model.

  • epochs (int, optional) – Number of epochs, by default 5.

  • loss (torch.nn.Module, optional) – Loss to minimize, by default None.

  • scheduler (_LRScheduler, optional) – Scheduler for the optimizer, by default None.

train(model: torch.nn.Module, dataloader: torch.utils.data.DataLoader) torch.nn.Module[source]

Train model with given loader.

Parameters:
  • model (torch.nn.Module) – Pytorch model to be trained.

  • dataloader (DataLoader) – Train data loader.

Returns:

Trained model.

Return type:

torch.nn.Module

secmlt.models.pytorch.early_stopping_pytorch_trainer module

PyTorch model trainers with early stopping.

class secmlt.models.pytorch.early_stopping_pytorch_trainer.EarlyStoppingPyTorchTrainer(optimizer: torch.optim.Optimizer, epochs: int = 5, loss: torch.nn.Module | None = None, scheduler: torch.optim.lr_scheduler._LRScheduler | None = None)[source]

Bases: BasePyTorchTrainer

Trainer for PyTorch models with early stopping.

__init__(optimizer: torch.optim.Optimizer, epochs: int = 5, loss: torch.nn.Module | None = None, scheduler: torch.optim.lr_scheduler._LRScheduler | None = None) None[source]

Create PyTorch trainer.

Parameters:
  • optimizer (torch.optim.Optimizer) – Optimizer to use for training the model.

  • epochs (int, optional) – Number of epochs, by default 5.

  • loss (torch.nn.Module, optional) – Loss to minimize, by default None.

  • scheduler (_LRScheduler, optional) – Scheduler for the optimizer, by default None.

fit(model: torch.nn.Module, train_loader: torch.utils.data.DataLoader, val_loader: torch.utils.data.DataLoader, patience: int) torch.nn.Module[source]

Train model with given loaders and early stopping.

Parameters:
  • model (torch.nn.Module) – Pytorch model to be trained.

  • train_loader (DataLoader) – Train data loader.

  • val_loader (DataLoader) – Validation data loader.

  • patience (int) – Number of epochs to wait before early stopping.

Returns:

Trained model.

Return type:

torch.nn.Module

train(model: torch.nn.Module, dataloader: torch.utils.data.DataLoader) torch.nn.Module[source]

Train model for one epoch with given loader.

Parameters:
  • model (torch.nn.Module) – Pytorch model to be trained.

  • dataloader (DataLoader) – Train data loader.

Returns:

Trained model.

Return type:

torch.nn.Module

validate(model: torch.nn.Module, dataloader: torch.utils.data.DataLoader) float[source]

Validate model with given loader.

Parameters:
  • model (torch.nn.Module) – Pytorch model to be balidated.

  • dataloader (DataLoader) – Validation data loader.

Returns:

Validation loss of the model.

Return type:

float

Module contents

PyTorch model wrappers.