class_docstr: Copy paste from the original DINO paper. We use this to verify our
  implementation.
  
  The only change from the original code is that distributed training is no
  longer assumed.
  
  Source: https://github.com/facebookresearch/dino/blob/cb711401860da580817918b9167ed73e3eef3dcf/main_dino.py#L363
class_docstr_tok: ["Copy","paste","from","the","original","DINO","paper",".","We","use","this","to","verify","our","implementation",".","The","only","change","from","the","original","code","is","that","distributed","training","is","no","longer","assumed",".","Source",":","https",":","\/\/github.com\/facebookresearch\/dino\/blob\/cb711401860da580817918b9167ed73e3eef3dcf\/main_dino.py","#","L363"]
docstr: Update center used for teacher output.
docstr_tok: ["Update","center","used","for","teacher","output","."]
code: def update_center(self, teacher_output):
      """
      Update center used for teacher output.
      """
      batch_center = torch.sum(teacher_output, dim=0, keepdim=True)
      batch_center = batch_center / len(teacher_output)
      # ema update
      self.center = (
          self.center * self.center_momentum
          + batch_center * (1 - self.center_momentum)
      )
  
file_path: lightly/tests/loss/test_DINOLoss.py
imports: import copy
  import itertools
  import unittest
  import numpy
  import torch
  import torch.nn.functional
  from torch import nn
  from lightly.loss import DINOLoss
  from lightly.models.utils import deactivate_requires_grad
label_desc: Use image node_id 3 for calling the OriginalDINOLoss obj's underlying member method code with example usage: obj.update_center(teacher_output) without return types