class_docstr: Updates FeCAM cov and prototypes
  using all the data seen so far
  WARNING: This is an oracle,
  and thus breaks assumptions usually made
  in continual learning algorithms i
  (storage of full dataset)
  This is meant to be used as an upper bound
  for FeCAM based methods
  (i.e when trying to estimate prototype and covariance drift)
class_docstr_tok: ["Updates","FeCAM","cov","and","prototypes","using","all","the","data","seen","so","far","WARNING",":","This","is","an","oracle",",","and","thus","breaks","assumptions","usually","made","in","continual","learning","algorithms","i","(","storage","of","full","dataset",")","This","is","meant","to","be","used","as","an","upper","bound","for","FeCAM","based","methods","(","i.e","when","trying","to","estimate","prototype","and","covariance","drift",")"]
code: def __init__(self):
      super().__init__()
      self.all_datasets = []
  
imports: import copy
  from typing import Dict
  import numpy
  import torch
  import torch.nn.functional
  from torch import Tensor, nn
  from avalanche.benchmarks.utils import concat_datasets
  from avalanche.models import FeCAMClassifier
  from avalanche.models.fecam import compute_covariance, compute_means
  from avalanche.training.plugins import SupervisedPlugin
  from avalanche.training.storage_policy import ClassBalancedBuffer
  from avalanche.training.templates import SupervisedTemplate
label_desc: Use image node_id 1 to create a new FeCAMOracle object from inherited base classes: SupervisedPlugin with example: obj = FeCAMOracle()