code: def __init__(self):
      super().__init__()
  
      # ViT small configuration (ViT-S/16)
      self.mask_ratio = 0.15
      self.backbone = MAEBackbone(
          image_size=224,
          patch_size=16,
          num_layers=12,
          num_heads=6,
          hidden_dim=384,
          mlp_dim=384 * 4,
      )
      # or use a torchvision ViT backbone:
      # vit = torchvision.models.vit_b_32(pretrained=False)
      # self.backbone = MAEBackbone.from_vit(vit)
      self.projection_head = MSNProjectionHead(384)
  
      self.anchor_backbone = copy.deepcopy(self.backbone)
      self.anchor_projection_head = copy.deepcopy(self.projection_head)
  
      utils.deactivate_requires_grad(self.backbone)
      utils.deactivate_requires_grad(self.projection_head)
  
      self.prototypes = nn.Linear(256, 1024, bias=False).weight
      self.criterion = MSNLoss()
  
file_path: lightly/examples/pytorch_lightning/msn.py
imports: import copy
  import pytorch_lightning
  import torch
  import torchvision
  from torch import nn
  from lightly.loss import MSNLoss
  from lightly.models import utils
  from lightly.models.modules.heads import MSNProjectionHead
  from lightly.models.modules.masked_autoencoder import MAEBackbone
  from lightly.transforms.msn_transform import MSNTransform
label_desc: Use image node_id 1 to create a new MSN object from inherited base classes: pl with example: obj = MSN()