avalanche.training.supervised.lamaml.LaMAML
- class avalanche.training.supervised.lamaml.LaMAML(*, 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] = CrossEntropyLoss(), n_inner_updates: int = 5, second_order: bool = True, grad_clip_norm: float = 1.0, learn_lr: bool = True, lr_alpha: float = 0.25, sync_update: bool = False, alpha_init: float = 0.1, 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, peval_mode='epoch')[source]
- __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] = CrossEntropyLoss(), n_inner_updates: int = 5, second_order: bool = True, grad_clip_norm: float = 1.0, learn_lr: bool = True, lr_alpha: float = 0.25, sync_update: bool = False, alpha_init: float = 0.1, 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, peval_mode='epoch')[source]
- Implementation of Look-ahead MAML (LaMAML) algorithm in Avalanche
using Higher library for applying fast updates.
- Parameters:
model – PyTorch model.
optimizer – PyTorch optimizer.
criterion – loss function.
n_inner_updates – number of inner updates.
second_order – If True, it computes the second-order derivative of the inner update trajectory for the meta-loss. Otherwise, it computes the meta-loss with a first-order approximation.
grad_clip_norm – gradient clipping norm.
learn_lr – if True, it learns the LR for each batch of data.
lr_alpha – LR for learning the main update’s learning rate.
sync_update – if True, it updates the meta-model with a fixed learning rate. Mutually exclusive with learn_lr and lr_alpha.
alpha_init – initialization value for learnable LRs.
Methods
__init__(*, model, optimizer[, criterion, ...])Implementation of Look-ahead MAML (LaMAML) algorithm in Avalanche
apply_grad(module, grads)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.
inner_update_step(fast_model, x, y, t)Update fast weights using current samples and return the updated fast model.
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.