class_docstr: Smooth L1 Loss.
  Args:
      beta (float): controls smooth region, it becomes L1 Loss when beta=0.0
      loss_weight (float): the final loss will be multiplied by this 
class_docstr_tok: ["Smooth","L1","Loss",".","Args",":","beta","(","float",")",":","controls","smooth","region",",","it","becomes","L1","Loss","when","beta=0.0","loss_weight","(","float",")",":","the","final","loss","will","be","multiplied","by","this"]
docstr: forward function, based on fvcore.
  Args:
      pred (Tensor): prediction tensor
      target (Tensor): target tensor, pred.shape must be the same as target.shape
      reduction (str): the way to reduce loss, one of (none, sum, mean)
docstr_tok: ["forward","function",",","based","on","fvcore",".","Args",":","pred","(","Tensor",")",":","prediction","tensor","target","(","Tensor",")",":","target","tensor",",","pred.shape","must","be","the","same","as","target.shape","reduction","(","str",")",":","the","way","to","reduce","loss",",","one","of","(","none",",","sum",",","mean",")"]
code: def forward(self, pred, target, reduction="none"):
      """forward function, based on fvcore.
      Args:
          pred (Tensor): prediction tensor
          target (Tensor): target tensor, pred.shape must be the same as target.shape
          reduction (str): the way to reduce loss, one of (none, sum, mean)
      """
      assert reduction in ("none", "sum", "mean")
      target = target.detach()
      if self.beta < 1e-5:
          loss = paddle.abs(pred - target)
      else:
          n = paddle.abs(pred - target)
          cond = n < self.beta
          loss = paddle.where(
              cond, 0.5 * n**2 / self.beta, n - 0.5 * self.beta
          )
      if reduction == "mean":
          loss = loss.mean() if loss.size > 0 else 0.0 * loss.sum()
      elif reduction == "sum":
          loss = loss.sum()
      return loss * self.loss_weight
  
file_path: PaddleDetection/ppdet/modeling/losses/smooth_l1_loss.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from ppdet.core.workspace import register
label_desc: Use image node_id 2 for calling the SmoothL1Loss obj's underlying member method code with example usage: obj.forward(pred, target, reduction) and returns: unknown