avalanche.training.SynapticIntelligence
- class avalanche.training.SynapticIntelligence(*, model: ~torch.nn.modules.module.Module, optimizer: ~torch.optim.optimizer.Optimizer, criterion: ~torch.nn.modules.module.Module | ~typing.Callable[[~torch.Tensor, ~torch.Tensor], ~torch.Tensor], si_lambda: float | ~typing.Sequence[float], eps: float = 1e-07, train_mb_size: int = 1, train_epochs: int = 1, eval_mb_size: int = 1, device: str | ~torch.device = 'cpu', plugins: ~typing.Sequence[~avalanche.core.SupervisedPlugin] | None = None, evaluator: ~avalanche.training.plugins.evaluation.EvaluationPlugin | ~typing.Callable[[], ~avalanche.training.plugins.evaluation.EvaluationPlugin] = <function default_evaluator>, eval_every=-1, **base_kwargs)[source]
Synaptic Intelligence strategy.
This is the Synaptic Intelligence PyTorch implementation of the algorithm described in the paper “Continuous Learning in Single-Incremental-Task Scenarios” (https://arxiv.org/abs/1806.08568)
The original implementation has been proposed in the paper “Continual Learning Through Synaptic Intelligence” (https://arxiv.org/abs/1703.04200).
The Synaptic Intelligence regularization can also be used in a different strategy by applying the
SynapticIntelligencePluginplugin.- __init__(*, model: ~torch.nn.modules.module.Module, optimizer: ~torch.optim.optimizer.Optimizer, criterion: ~torch.nn.modules.module.Module | ~typing.Callable[[~torch.Tensor, ~torch.Tensor], ~torch.Tensor], si_lambda: float | ~typing.Sequence[float], eps: float = 1e-07, train_mb_size: int = 1, train_epochs: int = 1, eval_mb_size: int = 1, device: str | ~torch.device = 'cpu', plugins: ~typing.Sequence[~avalanche.core.SupervisedPlugin] | None = None, evaluator: ~avalanche.training.plugins.evaluation.EvaluationPlugin | ~typing.Callable[[], ~avalanche.training.plugins.evaluation.EvaluationPlugin] = <function default_evaluator>, eval_every=-1, **base_kwargs)[source]
Init.
Creates an instance of the Synaptic Intelligence strategy.
- Parameters:
model – PyTorch model.
optimizer – PyTorch optimizer.
criterion – loss function.
si_lambda – Synaptic Intelligence lambda term. If list, one lambda for each experience. If the list has less elements than the number of experiences, last lambda will be used for the remaining experiences.
eps – Synaptic Intelligence damping parameter.
train_mb_size – mini-batch size for training.
train_epochs – number of training epochs.
eval_mb_size – mini-batch size for eval.
device – PyTorch device to run the model.
plugins – (optional) list of StrategyPlugins.
evaluator – (optional) instance of EvaluationPlugin for logging and metric computations.
eval_every – the frequency of the calls to eval inside the training loop. -1 disables the evaluation. 0 means eval is called only at the end of the learning experience. Values >0 mean that eval is called every eval_every epochs and at the end of the learning experience.
base_kwargs – any additional
BaseTemplateconstructor arguments.
Methods
__init__(*, model, optimizer, criterion, ...)Init.
backward()Run the backward pass.
check_model_and_optimizer([...])criterion()Loss function for supervised problems.
eval(exp_list, **kwargs)Evaluate the current model on a series of experiences and returns the last recorded value for each metric.
eval_dataset_adaptation(**kwargs)Initialize self.adapted_dataset.
eval_epoch(**kwargs)Evaluation loop over the current self.dataloader.
forward()Compute the model's output given the current mini-batch.
make_eval_dataloader([num_workers, shuffle, ...])Initializes the eval data loader. :param num_workers: How many subprocesses to use for data loading. 0 means that the data will be loaded in the main process. (default: 0). :param pin_memory: If True, the data loader will copy Tensors into CUDA pinned memory before returning them. Defaults to True. :param kwargs: :return:.
make_optimizer([reset_optimizer_state, ...])Optimizer initialization.
make_train_dataloader([num_workers, ...])Data loader initialization.
model_adaptation([model])Adapts the model to the current data.
optimizer_step()Execute the optimizer step (weights update).
stop_training()Signals to stop training at the next iteration.
train(experiences[, eval_streams])Training loop.
train_dataset_adaptation(**kwargs)Initialize self.adapted_dataset.
training_epoch(**kwargs)Training epoch.
Attributes
is_evalTrue if the strategy is in evaluation mode.
mb_task_idCurrent mini-batch task labels.
mb_xCurrent mini-batch input.
mb_yCurrent mini-batch target.
mbatchCurrent mini-batch.
mb_outputModel's output computed on the current mini-batch.
dataloaderDataloader.
optimizerPyTorch optimizer.
lossLoss of the current mini-batch.
train_epochsNumber of training epochs.
train_mb_sizeTraining mini-batch size.
eval_mb_sizeEval mini-batch size.
retain_graphRetain graph when calling loss.backward().
evaluatorEvaluationPlugin used for logging and metric computations.
clockIncremental counters for strategy events.
adapted_datasetData used to train.
modelPyTorch model.
devicePyTorch device where the model will be allocated.
pluginsList of `SupervisedPlugin`s. .
experienceCurrent experience.
is_trainingTrue if the strategy is in training mode.
current_eval_streamCurrent evaluation stream.