code: def update(self, input_vector):
      if type(input_vector) == np.ndarray:
          input_vector = torch.from_numpy(input_vector)
      input_vector = input_vector.to(**self.tpdv)
  
      old_mean, old_var = self.debiased_mean_var()
      old_stddev = torch.sqrt(old_var)
  
      batch_mean = input_vector.mean(dim=tuple(range(self.norm_axes)))
      batch_sq_mean = (input_vector**2).mean(
          dim=tuple(range(self.norm_axes))
      )
  
      self.mean.mul_(self.beta).add_(batch_mean * (1.0 - self.beta))
      self.mean_sq.mul_(self.beta).add_(
          batch_sq_mean * (1.0 - self.beta)
      )
      self.debiasing_term.mul_(self.beta).add_(1.0 * (1.0 - self.beta))
  
      new_mean, new_var = self.debiased_mean_var()
      new_stddev = torch.sqrt(new_var)
  
      self.weight.data = self.weight * old_stddev / new_stddev
      self.bias.data = (
          old_stddev * self.bias + old_mean - new_mean
      ) / new_stddev
  
imports: import torch
  import torch.nn
  from torch.distributions import Categorical
  import numpy
  import parl
label_desc: Use image node_id 3 for calling the PopArt obj's underlying member method code with example usage: obj.update(input_vector) without return types