ncalab.training
Submodules
Classes
Early stopping helper class. |
|
Trainer class for any model subclassing BasicNCA. |
|
Stores data about the training progress. Populated during training |
|
Helper class, storing a training / validation data split to generate |
|
Stores a k-fold cross-validation split. |
|
Sample pool that retains previous predictions. Also applies damaging patterns to |
|
Trainer class for any model subclassing BasicNCA. |
|
Stores data about the training progress. Populated during training |
Package Contents
- class ncalab.training.EarlyStopping(patience: int, min_delta: float = 1e-06)
Early stopping helper class. Helps to stop the training if no change in validation metrics is observed.
- Parameters:
patience (int) – Steps to wait until stopping the training.
min_delta (float) – Minimum deviation until counter is reset, defaults to 1e-6.
- patience
- min_delta = 1e-06
- best_accuracy = 0.0
- counter = 0
- done() bool
Checks whether the training can be stopped.
Needs to be queried in training loop, once per epoch.
- Returns:
Whether to stop the training or not.
- Return type:
bool
- step(accuracy: float)
Increases internal counter if accuracy doesn’t improve, otherwise resets the counter.
Needs to be called in training loop, once per epoch.
- Parameters:
accuracy (float) – Validation accuracy.
- class ncalab.training.BasicNCATrainer(nca: ncalab.models.basicNCA.AbstractNCAModel, model_path: pathlib.Path | pathlib.PosixPath | None, gradient_clipping: bool = False, lr: float | None = None, lr_gamma: float = 0.99, adam_betas=(0.9, 0.95), batch_repeat: int = 2, max_epochs: int = 200, optimizer_method: str = 'adam', pool: ncalab.training.pool.Pool | None = None, lr_scheduler: torch.optim.lr_scheduler.LRScheduler | None = None)
Trainer class for any model subclassing BasicNCA.
- Parameters:
nca (ncalab.AbstractNCAModel) – NCA model instance to train.
model_path (Path | PosixPath, optional) – Path to saved models. If None, models are not saved, defaults to None.
gradient_clipping (bool, optional) – Whether to clip gradients, defaults to False.
lr (float, optional) – Initial learning rate, defaults to 16e-4.
lr_gamma (float, optional) – Exponential learning rate decay, defaults to 0.9999.
adam_betas (tuple, optional) – Beta values for Adam optimizer, defaults to (0.9, 0.95).
batch_repeat – How often each batch will be duplicated, dfaults to 2.
max_epochs – Maximum number of epochs in training, defaults to 200.
optimizer_method (str, optional) – Optimization method, defaults to ‘adam’.
pool (ncalab.Pool) – Sample pool object.
- nca
- model_path
- gradient_clipping = False
- lr_gamma = 0.99
- adam_betas = (0.9, 0.95)
- batch_repeat = 2
- max_epochs = 200
- optimizer_method = 'adam'
- pool = None
- lr_scheduler = None
- info() str
Shows a markdown-formatted info string with training parameters. Useful for showing info on tensorboard to keep track of parameter changes.
- Returns [str]:
Markdown-formatted info string.
- _train_iteration(x: torch.Tensor, y: torch.Tensor, optimizer: torch.optim.Optimizer, head_optimizer: torch.optim.Optimizer | None, total_batch_iterations: int, summary_writer: torch.utils.tensorboard.SummaryWriter | None = None) Tuple[ncalab.prediction.Prediction, Dict[str, torch.Tensor]]
Run a single training iteration.
- Parameters:
x – Input training images.
y – Input training labels.
steps – Number of NCA inference time steps.
optimizer – Optimizer.
total_batch_iterations (int) – Total training batch iterations
summary_writer (SummaryWriter, optional) – Tensorboard SummaryWriter
- Returns:
Predicted image.
- Return type:
Tuple[Prediction, Dict[str, torch.Tensor]]
- train(dataloader_train: torch.utils.data.DataLoader, dataloader_val: torch.utils.data.DataLoader | None = None, dataloader_test: torch.utils.data.DataLoader | None = None, save_every: int | None = None, summary_writer: torch.utils.tensorboard.SummaryWriter | None = None, plot_function: ncalab.visualization.Visual | None = None, earlystopping: ncalab.training.earlystopping.EarlyStopping | None = None) ncalab.training.traininghistory.TrainingHistory
Execute basic NCA training loop with a single function call.
- Parameters:
[DataLoader] (dataloader_val) – Training DataLoader
[DataLoader] – Validation DataLoader
[int] (save_every) – How often to save model state (in epochs). Useful for very small datasets, like growing lizard.
:param summary_writer [SummaryWriter] Tensorboard SummaryWriter. Defaults to None. :param plot_function: Plot function override. If None, use model’s default. Defaults to None. :param earlystopping (EarlyStopping, optional): EarlyStopping object. Defaults to None.
- Returns [TrainingHistory]:
TrainingHistory object.
- class ncalab.training.TrainingHistory(path: pathlib.Path | pathlib.PosixPath | None, metrics: Dict[str, float], current_epoch: int, current_model: ncalab.models.AbstractNCAModel, best_accuracy: float = 0, best_epoch: int = 0, best_model: ncalab.models.AbstractNCAModel | None = None, verbose: bool = True)
Stores data about the training progress. Populated during training with ncalab.training.BasicNCATrainer.
- Parameters:
path (Optional[Path | PosixPath]) – Save and load path.
metrics (Dict[str, float]) – Dict of validation metrics
current_epoch (int) – Current training epoch.
current_model (AbstractNCAModel) – Currently trained model.
best_accuracy (float, optional) – Best validation accuracy, defaults to 0
best_epoch (int, optional) – Epoch of best validation accuracy, defaults to 0
best_model (Optional[AbstractNCAModel], optional) – Model with best validation accuracy, defaults to None
verbose (bool, optional) – Whether to print updates of validation accuracy, defaults to True
- path
- metrics
- current_epoch
- current_model
- best_accuracy = 0
- best_epoch = 0
- best_model = None
- verbose = True
- created_timestamp
- modified_timestamp
- loss: List[float] = []
- update(epoch: int, model: ncalab.models.AbstractNCAModel, accuracy: float, overwrite: bool = False)
Populates history with current iteration’s values.
Automatically recognizes changes in accuracy.
- Parameters:
epoch (int) – Current epoch
model (AbstractNCAModel) – Current model
accuracy (float) – Current accuracy, based on model’s validation metric
overwrite (bool, optional) – Whether to overwrite best accuracy even with no improvement, defaults to False
- save()
Saves history and model checkpoint.
- to_dict() Dict
Return dict of recorded values
- Returns:
Dict of recorded values
- Return type:
Dict
- class ncalab.training.TrainValRecord(train: List[str], val: List[str])
Helper class, storing a training / validation data split to generate respective DataLoader objects.
- Parameters:
train (List[str]) – List of training image file paths
val (List[str]) – List of validation image file paths
- train
- val
- dataloaders(DatasetType: Type, path: pathlib.Path | pathlib.PosixPath, transform=None, batch_sizes=None)
Generate a pair of training and validation DataLoader objects, based on a given DataSet subtype.
- class ncalab.training.SplitDefinition
Stores a k-fold cross-validation split.
- folds = []
- dataloader_test = None
- static read(path: pathlib.PosixPath) SplitDefinition
Reads json files with split definitions, similar to those created by nnUNet.
Format is like
[ { "train": [ "filename0", "filename1",... ] "val": [ "filename2", "filename3",... ] }, { ... } ]
- Parameters:
path – Path to JSON file containing split definition.
- Returns:
SplitDefinition object
- Return type:
- __len__() int
- __getitem__(idx) TrainValRecord
- class ncalab.training.KFoldCrossValidationTrainer(trainer: ncalab.training.trainer.BasicNCATrainer, split: SplitDefinition)
- Parameters:
- trainer
- model_prototype
- model_name
- split
- train(DatasetType: Type, datapath: pathlib.Path | pathlib.PosixPath, transform, batch_sizes: None | Dict = None, save_every: int | None = None) List[ncalab.training.traininghistory.TrainingHistory]
Run training loop with a single function call.
- Parameters:
[Type] (DatasetType) – Type of dataset class to use.
[Path] (datapath) – _description_
transform – Data transform, e.g. initialized via Albumentations.
batch_sizes – Dict of batch sizes per set, e.g. {“train”: 8, “val”: 16}. Defaults to None.
[int] (save_every) – _description_. Defaults to None.
plot_function – Plot function override. If None, use model’s default. Defaults to None.
- Returns [List[TrainingHistory]]:
List of TrainingHistory objects, one per fold.
- class ncalab.training.Pool(n_seed: int = 1, damage: bool = False, p_damage: float = 0.2)
Sample pool that retains previous predictions. Also applies damaging patterns to images to increase the robustness of the trained NCA.
- Parameters:
n_seed (int, optional) – How many seed images to retain, defaults to 1
damage (bool, optional) – Whether to apply damaging patterns, defaults to False
p_damage (float, optional) – Probability at which a damaging pattern is applied, defaults to 0.2
- n_seed = 1
- damage = False
- batch: torch.Tensor | None = None
- p_damage = 0.2
- update(batch: torch.Tensor)
- Parameters:
batch – BCWH
- sample(seed: torch.Tensor) torch.Tensor
- Parameters:
seed – BCWH
- Returns:
BCWH
- class ncalab.training.BasicNCATrainer(nca: ncalab.models.basicNCA.AbstractNCAModel, model_path: pathlib.Path | pathlib.PosixPath | None, gradient_clipping: bool = False, lr: float | None = None, lr_gamma: float = 0.99, adam_betas=(0.9, 0.95), batch_repeat: int = 2, max_epochs: int = 200, optimizer_method: str = 'adam', pool: ncalab.training.pool.Pool | None = None, lr_scheduler: torch.optim.lr_scheduler.LRScheduler | None = None)
Trainer class for any model subclassing BasicNCA.
- Parameters:
nca (ncalab.AbstractNCAModel) – NCA model instance to train.
model_path (Path | PosixPath, optional) – Path to saved models. If None, models are not saved, defaults to None.
gradient_clipping (bool, optional) – Whether to clip gradients, defaults to False.
lr (float, optional) – Initial learning rate, defaults to 16e-4.
lr_gamma (float, optional) – Exponential learning rate decay, defaults to 0.9999.
adam_betas (tuple, optional) – Beta values for Adam optimizer, defaults to (0.9, 0.95).
batch_repeat – How often each batch will be duplicated, dfaults to 2.
max_epochs – Maximum number of epochs in training, defaults to 200.
optimizer_method (str, optional) – Optimization method, defaults to ‘adam’.
pool (ncalab.Pool) – Sample pool object.
- nca
- model_path
- gradient_clipping = False
- lr_gamma = 0.99
- adam_betas = (0.9, 0.95)
- batch_repeat = 2
- max_epochs = 200
- optimizer_method = 'adam'
- pool = None
- lr_scheduler = None
- info() str
Shows a markdown-formatted info string with training parameters. Useful for showing info on tensorboard to keep track of parameter changes.
- Returns [str]:
Markdown-formatted info string.
- _train_iteration(x: torch.Tensor, y: torch.Tensor, optimizer: torch.optim.Optimizer, head_optimizer: torch.optim.Optimizer | None, total_batch_iterations: int, summary_writer: torch.utils.tensorboard.SummaryWriter | None = None) Tuple[ncalab.prediction.Prediction, Dict[str, torch.Tensor]]
Run a single training iteration.
- Parameters:
x – Input training images.
y – Input training labels.
steps – Number of NCA inference time steps.
optimizer – Optimizer.
total_batch_iterations (int) – Total training batch iterations
summary_writer (SummaryWriter, optional) – Tensorboard SummaryWriter
- Returns:
Predicted image.
- Return type:
Tuple[Prediction, Dict[str, torch.Tensor]]
- train(dataloader_train: torch.utils.data.DataLoader, dataloader_val: torch.utils.data.DataLoader | None = None, dataloader_test: torch.utils.data.DataLoader | None = None, save_every: int | None = None, summary_writer: torch.utils.tensorboard.SummaryWriter | None = None, plot_function: ncalab.visualization.Visual | None = None, earlystopping: ncalab.training.earlystopping.EarlyStopping | None = None) ncalab.training.traininghistory.TrainingHistory
Execute basic NCA training loop with a single function call.
- Parameters:
[DataLoader] (dataloader_val) – Training DataLoader
[DataLoader] – Validation DataLoader
[int] (save_every) – How often to save model state (in epochs). Useful for very small datasets, like growing lizard.
:param summary_writer [SummaryWriter] Tensorboard SummaryWriter. Defaults to None. :param plot_function: Plot function override. If None, use model’s default. Defaults to None. :param earlystopping (EarlyStopping, optional): EarlyStopping object. Defaults to None.
- Returns [TrainingHistory]:
TrainingHistory object.
- class ncalab.training.TrainingHistory(path: pathlib.Path | pathlib.PosixPath | None, metrics: Dict[str, float], current_epoch: int, current_model: ncalab.models.AbstractNCAModel, best_accuracy: float = 0, best_epoch: int = 0, best_model: ncalab.models.AbstractNCAModel | None = None, verbose: bool = True)
Stores data about the training progress. Populated during training with ncalab.training.BasicNCATrainer.
- Parameters:
path (Optional[Path | PosixPath]) – Save and load path.
metrics (Dict[str, float]) – Dict of validation metrics
current_epoch (int) – Current training epoch.
current_model (AbstractNCAModel) – Currently trained model.
best_accuracy (float, optional) – Best validation accuracy, defaults to 0
best_epoch (int, optional) – Epoch of best validation accuracy, defaults to 0
best_model (Optional[AbstractNCAModel], optional) – Model with best validation accuracy, defaults to None
verbose (bool, optional) – Whether to print updates of validation accuracy, defaults to True
- path
- metrics
- current_epoch
- current_model
- best_accuracy = 0
- best_epoch = 0
- best_model = None
- verbose = True
- created_timestamp
- modified_timestamp
- loss: List[float] = []
- update(epoch: int, model: ncalab.models.AbstractNCAModel, accuracy: float, overwrite: bool = False)
Populates history with current iteration’s values.
Automatically recognizes changes in accuracy.
- Parameters:
epoch (int) – Current epoch
model (AbstractNCAModel) – Current model
accuracy (float) – Current accuracy, based on model’s validation metric
overwrite (bool, optional) – Whether to overwrite best accuracy even with no improvement, defaults to False
- save()
Saves history and model checkpoint.
- to_dict() Dict
Return dict of recorded values
- Returns:
Dict of recorded values
- Return type:
Dict