code: def test_hard_criteria_alone(self, temperature: float):
      criterion = DistillationCriterion(
          soft_target_alpha=0.0, temperature=temperature
      )
      logits = torch.tensor([[1.0, 0.0, 0.0], [1.0, 2.0, 0.0]])
      teacher_logits = torch.randn(size=(2, 3))
      target = torch.tensor([0, 1], dtype=torch.int64)
      loss = criterion(logits, teacher_logits, target)
      ref_loss = nn.CrossEntropyLoss()(logits, target)
      self.assertAlmostEqual(loss.item(), ref_loss.item(), delta=1e-4)
  
imports: import logging
  import unittest
  from collections import namedtuple
  import torch
  import torch.nn
  import torch.optim
  from classy_vision.generic.distributed_util import set_cpu_device
  from parameterized import param, parameterized
  from vissl.config.attr_dict import AttrDict
  from vissl.losses.barlow_twins_loss import BarlowTwinsCriterion
  from vissl.losses.cross_entropy_multiple_output_single_target import CrossEntropyMultipleOutputSingleTargetCriterion, CrossEntropyMultipleOutputSingleTargetLoss
  from vissl.losses.distillation_loss import DistillationCriterion, DistillationLoss
  from vissl.losses.multicrop_simclr_info_nce_loss import MultiCropSimclrInfoNCECriterion
  from vissl.losses.simclr_info_nce_loss import SimclrInfoNCECriterion
  from vissl.losses.swav_loss import SwAVCriterion
label_desc: Use image node_id 1 for calling the TestDistillationCriterion obj's underlying member method code with example usage: obj.test_hard_criteria_alone(temperature) without return types