class_docstr: iCaRL Plugin.
  iCaRL uses nearest class exemplar classification to prevent
  forgetting to occur at the classification layer. The feature extractor
  is continually learned using replay and distillation. The exemplars
  used for replay and classification are selected through herding.
  This plugin does not use task identities.
class_docstr_tok: ["iCaRL","Plugin",".","iCaRL","uses","nearest","class","exemplar","classification","to","prevent","forgetting","to","occur","at","the","classification","layer",".","The","feature","extractor","is","continually","learned","using","replay","and","distillation",".","The","exemplars","used","for","replay","and","classification","are","selected","through","herding",".","This","plugin","does","not","use","task","identities","."]
code: def after_training_exp(
      self, strategy: "SupervisedTemplate", **kwargs
  ):
      strategy.model.eval()
  
      self.construct_exemplar_set(strategy)
      self.reduce_exemplar_set(strategy)
      self.compute_class_means(strategy)
      strategy.model.train()
  
imports: import itertools
  from typing import Callable, Optional, List, Union
  import torch
  from torch.optim import Optimizer
  from avalanche.benchmarks.utils import _make_taskaware_tensor_classification_dataset, _taskaware_classification_subset
  from math import ceil
  from avalanche.benchmarks.utils.utils import concat_datasets
  from avalanche.models import TrainEvalModel, NCMClassifier
  from avalanche.training.plugins import EvaluationPlugin
  from avalanche.training.plugins.evaluation import default_evaluator
  from avalanche.training.losses import ICaRLLossPlugin
  from avalanche.training.plugins.strategy_plugin import SupervisedPlugin
  from torch.nn import Module
  from torch.utils.data import DataLoader
  from avalanche.training.templates import SupervisedTemplate
label_desc: Use image node_id 5 for calling the _ICaRLPlugin obj's underlying member method code with example usage: obj.after_training_exp(strategy) without return types