class_docstr: Simulates multi-gpu behaviour of BatchNorm in one gpu by splitting.
  
  Implementation was adapted from:
  https://github.com/davidcpage/cifar10-fast/blob/master/torch_backend.py
  
  Attributes:
      num_features:
          Number of input features.
      num_splits:
          Number of splits.
code: def __init__(
      self, num_features: int, num_splits: int, **kw: Any
  ) -> None:
      super().__init__(num_features, **kw)
      self.num_splits = num_splits
      # Register buffers
      self.register_buffer(
          "running_mean", torch.zeros(num_features * self.num_splits)
      )
      self.register_buffer(
          "running_var", torch.ones(num_features * self.num_splits)
      )
  
file_path: lightly/lightly/models/batchnorm.py
imports: from __future__ import annotations
  from typing import Any
  import torch
  import torch.nn
  from torch import Tensor
label_desc: Use image node_id 1 to create a new SplitBatchNorm object from inherited base classes: nn with example: obj = SplitBatchNorm(num_features, num_splits)