code: def forward(
      self,
      student_logits: torch.Tensor,
      teacher_logits: torch.Tensor,
      target: torch.Tensor,
  ):
      teacher_loss = self._get_teacher_loss(
          student_logits, teacher_logits
      )
      if self.hard_target_alpha > 0.0:
          target_loss = self.smooth_cross_entropy(
              student_logits, target
          )
          return (
              self.hard_target_alpha * target_loss
              + self.soft_target_alpha * teacher_loss
          )
      else:
          return teacher_loss
  
imports: from enum import Enum
  import torch
  import torch.nn
  import torch.nn.functional
  from classy_vision.losses import ClassyLoss, register_loss
  from vissl.config.attr_dict import AttrDict
  from vissl.losses.cross_entropy_multiple_output_single_target import SmoothCrossEntropy
label_desc: Use image node_id 2 for calling the DistillationCriterion obj's underlying member method code with example usage: obj.forward(student_logits, teacher_logits, target) and returns: unknown, teacher_loss