class_docstr: The expert classifier which sits behind the autoencoder.
  Each expert classifieris usually a pre-trained AlexNet fine-tuned
  on a specific task. The final classification layer is replaced and
  sized based on the number of classes for a task.
class_docstr_tok: ["The","expert","classifier","which","sits","behind","the","autoencoder",".","Each","expert","classifieris","usually","a","pre-trained","AlexNet","fine-tuned","on","a","specific","task",".","The","final","classification","layer","is","replaced","and","sized","based","on","the","number","of","classes","for","a","task","."]
code: def forward(self, x):
      x = self.feature_module(x)
      x = self.avg_pool(x)
      x = self.flatten(x)
      x = self.classifier_module(x)
      return x
  
imports: from collections import OrderedDict
  from copy import deepcopy
  import torch
  import torch.nn
  import torch.nn.functional
  from torch import sigmoid
  from torch.nn.functional import mse_loss, softmax
  from torchvision import transforms
  import torchvision.models
  from .utils import FeatureExtractorBackbone
  from avalanche.models import MultiTaskModule
  from avalanche.models.utils import Flatten
  from avalanche.benchmarks.scenarios.generic_scenario import CLExperience
label_desc: Use image node_id 2 for calling the ExpertModel obj's underlying member method code with example usage: obj.forward(x) and returns: x