class_docstr: L2 loss.
  
  Args:
      reduction (str, optional): The method to reduce the loss.
          Options are "none", "mean" and "sum".
      loss_weight (float, optional): The weight of loss.
docstr: Update the weight according to targets.
docstr_tok: ["Update","the","weight","according","to","targets","."]
code: def update_weight(
      self,
      pred: Tensor,
      target: Tensor,
      weight: Tensor,
      avg_factor: float,
  ) -> Tuple[Tensor, Tensor, float]:
      """Update the weight according to targets."""
      if weight is None:
          weight = target.new_ones(target.size())
  
      invalid_inds = weight <= 0
      target[invalid_inds] = -1
      pos_inds = target == 1
      neg_inds = target == 0
  
      if self.pos_margin > 0:
          pred[pos_inds] -= self.pos_margin
      if self.neg_margin > 0:
          pred[neg_inds] -= self.neg_margin
      pred = torch.clamp(pred, min=0, max=1)
  
      num_pos = int((target == 1).sum())
      num_neg = int((target == 0).sum())
      if (
          self.neg_pos_ub > 0
          and num_neg / (num_pos + 1e-6) > self.neg_pos_ub
      ):
          num_neg = num_pos * self.neg_pos_ub
          neg_idx = torch.nonzero(target == 0, as_tuple=False)
  
          if self.hard_mining:
              costs = l2_loss(pred, target, reduction="none")[
                  neg_idx[:, 0], neg_idx[:, 1]
              ].detach()
              neg_idx = neg_idx[costs.topk(num_neg)[1], :]
          else:
              neg_idx = self.random_choice(neg_idx, num_neg)
  
          new_neg_inds = neg_inds.new_zeros(neg_inds.size()).bool()
          new_neg_inds[neg_idx[:, 0], neg_idx[:, 1]] = True
  
          invalid_neg_inds = torch.logical_xor(neg_inds, new_neg_inds)
          weight[invalid_neg_inds] = 0
  
      avg_factor = (weight > 0).sum()
      return pred, weight, avg_factor
  
file_path: mmdetection/mmdet/models/losses/l2_loss.py
imports: from typing import Optional, Tuple, Union
  import numpy
  import torch
  from mmengine.model import BaseModule
  from torch import Tensor
  from mmdet.registry import MODELS
  from .utils import weighted_loss
label_desc: Use image node_id 3 for calling the L2Loss obj's underlying member method code with example usage: obj.update_weight(pred, target, weight, avg_factor) and returns: pred,  weight,  avg_factor