code: def update_moving_average(self):
      assert (
          self.teacher_encoder is not None
      ), "target encoder has not been created yet"
      update_moving_average(
          self.teacher_ema_updater,
          self.teacher_encoder,
          self.student_encoder,
      )
  
      new_teacher_view_centers = (
          self.teacher_centering_ema_updater.update_average(
              self.teacher_view_centers, self.last_teacher_view_centers
          )
      )
      self.teacher_view_centers.copy_(new_teacher_view_centers)
  
      new_teacher_region_centers = (
          self.teacher_centering_ema_updater.update_average(
              self.teacher_region_centers,
              self.last_teacher_region_centers,
          )
      )
      self.teacher_region_centers.copy_(new_teacher_region_centers)
  
imports: import copy
  import random
  from functools import wraps, partial
  import torch
  from torch import nn, einsum
  import torch.nn.functional
  from torchvision import transforms
  from einops import rearrange, reduce, repeat
label_desc: Use image node_id 4 for calling the EsViTTrainer obj's underlying member method code with example usage: obj.update_moving_average() without return types