code: def __init__(self, backbone):
      super().__init__()
  
      self.backbone = backbone
      self.projection_head = SMoGProjectionHead(512, 2048, 128)
      self.prediction_head = SMoGPredictionHead(128, 2048, 128)
  
      self.backbone_momentum = copy.deepcopy(self.backbone)
      self.projection_head_momentum = copy.deepcopy(
          self.projection_head
      )
  
      utils.deactivate_requires_grad(self.backbone_momentum)
      utils.deactivate_requires_grad(self.projection_head_momentum)
  
      self.n_groups = 300
      self.smog = SMoGPrototypes(
          group_features=torch.rand(self.n_groups, 128), beta=0.99
      )
  
file_path: lightly/examples/pytorch/smog.py
imports: import copy
  import torch
  import torchvision
  from sklearn.cluster import KMeans
  from torch import nn
  from lightly.models import utils
  from lightly.models.modules.heads import SMoGPredictionHead, SMoGProjectionHead, SMoGPrototypes
  from lightly.models.modules.memory_bank import MemoryBankModule
  from lightly.transforms.smog_transform import SMoGTransform
label_desc: Use image node_id 1 to create a new SMoGModel object from inherited base classes: nn with example: obj = SMoGModel(backbone)