class_docstr: FeCAMClassifier
  
  Similar to NCM but uses malahanobis distance instead of l2 distance
  
  This approach has been proposed for continual learning in
  "FeCAM: Exploiting the Heterogeneity of Class Distributions
  in Exemplar-Free Continual Learning" Goswami et. al.
  (Neurips 2023)
  
  This requires the storage of full per-class covariance matrices
code: def _vectorize_cov_dict(self):
      if self.class_cov_dict == {}:
          return
  
      max_class = max(self.class_cov_dict.keys())
      self.max_class = max(max_class, self.max_class)
      first_mean = list(self.class_cov_dict.values())[0]
      feature_size = first_mean.size(0)
      device = first_mean.device
      self.class_covs = torch.zeros(
          self.max_class + 1, feature_size, feature_size
      ).to(device)
  
      for k, v in self.class_cov_dict.items():
          self.class_covs[k] = self.class_cov_dict[k].clone()
  
imports: import copy
  from typing import Dict
  import numpy
  import torch
  import torch.nn.functional
  import tqdm
  from torch import Tensor, nn
  from avalanche.models import DynamicModule
label_desc: Use image node_id 8 for calling the FeCAMClassifier obj's underlying member method code with example usage: obj._vectorize_cov_dict() without return types