avalanche.training.PackNet
- class avalanche.training.PackNet(*, model: ~avalanche.models.packnet.PackNetModule | ~avalanche.models.packnet.PackNetModel, optimizer: ~torch.optim.optimizer.Optimizer, post_prune_epochs: int, prune_proportion: float, criterion=CrossEntropyLoss(), train_mb_size: int = 1, train_epochs: int = 1, eval_mb_size: int | None = None, device: str | ~torch.device = 'cpu', plugins: ~typing.List[~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]
Task-incremental fixed-network parameter isolation with PackNet.
The strategy packs multiple tasks into a single network by pruning parameters that are not important for the current task. This is done by pruning the network after each task. The network is then finetuned for a few epochs to recover the performance. This process is repeated for each task.
The supplied model must be wrapped in a
PackNetModel
or implementPackNetModule
. These wrappers are designed to automatically upgrade most models to support PackNet.- Mallya, A., & Lazebnik, S. (2018). PackNet: Adding Multiple Tasks to a
Single Network by Iterative Pruning. 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition, 7765-7773. https://doi.org/10.1109/CVPR.2018.00810
- __init__(*, model: ~avalanche.models.packnet.PackNetModule | ~avalanche.models.packnet.PackNetModel, optimizer: ~torch.optim.optimizer.Optimizer, post_prune_epochs: int, prune_proportion: float, criterion=CrossEntropyLoss(), train_mb_size: int = 1, train_epochs: int = 1, eval_mb_size: int | None = None, device: str | ~torch.device = 'cpu', plugins: ~typing.List[~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]
Creates an instance of the Naive strategy.
- Parameters:
model – The model. You can use many modules wrapped in a
avalanche.models.PackNetModel
or your own implementation ofavalanche.models.PackNetModule
.optimizer – The optimizer to use.
post_prune_epochs – The number of epochs to finetune the model after pruning the parameters. Must be less than the number of training epochs.
prune_proportion – The proportion of parameters to prune each durring each task. Must be between 0 and 1.
criterion – The loss criterion to use.
train_mb_size – The train minibatch size. Defaults to 1.
train_epochs – The number of training epochs. Defaults to 1.
eval_mb_size – The eval minibatch size. Defaults to 1.
device – The device to use. Defaults to None (cpu).
plugins – Plugins to be added. Defaults to None.
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
BaseTemplate
constructor arguments.
Methods
__init__
(*, model, optimizer, ...[, ...])Creates an instance of the Naive strategy.
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_eval
True if the strategy is in evaluation mode.
mb_task_id
Current mini-batch task labels.
mb_x
Current mini-batch input.
mb_y
Current mini-batch target.
mbatch
Current mini-batch.
mb_output
Model's output computed on the current mini-batch.
dataloader
Dataloader.
optimizer
PyTorch optimizer.
loss
Loss of the current mini-batch.
train_epochs
Number of training epochs.
train_mb_size
Training mini-batch size.
eval_mb_size
Eval mini-batch size.
retain_graph
Retain graph when calling loss.backward().
evaluator
EvaluationPlugin used for logging and metric computations.
clock
Incremental counters for strategy events.
adapted_dataset
Data used to train.
model
PyTorch model.
device
PyTorch device where the model will be allocated.
plugins
List of `SupervisedPlugin`s. .
experience
Current experience.
is_training
True if the strategy is in training mode.
current_eval_stream
Current evaluation stream.