code: def forward(self, x):
      s0 = s1 = self.stem(x)
      outputs = []
  
      for i, cell in enumerate(self.cells):
          s0, s1 = s1, cell(s0, s1)
          if str(i) in self.aux_head:
              outputs.append(self.aux_head[str(i)](s1))
  
      out = self.gap(s1)
      out = out.view(out.size(0), -1)  # flatten
      logits = self.linear(out)
      outputs.append(logits)
  
      if self.ensemble_param is None:
          assert len(outputs) == 2
          return outputs[1], outputs[0]
      else:
          em_output = torch.cat(
              [
                  (e * o)
                  for e, o in zip(
                      F.softmax(self.ensemble_param, dim=0), outputs
                  )
              ],
              0,
          )
          return logits, em_output
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  import ops
  import numpy
  from nni.nas.pytorch import mutables
  from utils import parse_results
  from aux_head import DistillHeadCIFAR, DistillHeadImagenet, AuxiliaryHeadCIFAR, AuxiliaryHeadImageNet
label_desc: Use image node_id 2 for calling the Model obj's underlying member method code with example usage: obj.forward(x) and returns: outputs,  outputs, logits,  em_output