class_docstr: Focal and Global Knowledge Distillation for Detectors
  The code is reference from https://github.com/yzd-v/FGD/blob/master/mmdet/distillation/losses/fgd.py
  
  Args:
      student_channels (int): The number of channels in the student's FPN feature map. Default to 256.
      teacher_channels (int): The number of channels in the teacher's FPN feature map. Default to 256.
      normalize (bool): Whether to normalize the feature maps.
      temp (float, optional): The temperature coefficient. Defaults to 0.5.
      alpha_fgd (float, optional): The weight of fg_loss. Defaults to 0.001
      beta_fgd (float, optional): The weight of bg_loss. Defaults to 0.0005
      gamma_fgd (float, optional): The weight of mask_loss. Defaults to 0.001
      lambda_fgd (float, optional): The weight of relation_loss. Defaults to 0.000005
class_docstr_tok: ["Focal","and","Global","Knowledge","Distillation","for","Detectors","The","code","is","reference","from","https",":","\/\/github.com\/yzd-v\/FGD\/blob\/master\/mmdet\/distillation\/losses\/fgd.py","Args",":","student_channels","(","int",")",":","The","number","of","channels","in","the","student","'s","FPN","feature","map",".","Default","to","256.","teacher_channels","(","int",")",":","The","number","of","channels","in","the","teacher","'s","FPN","feature","map",".","Default","to","256.","normalize","(","bool",")",":","Whether","to","normalize","the","feature","maps",".","temp","(","float",",","optional",")",":","The","temperature","coefficient",".","Defaults","to","0.5.","alpha_fgd","(","float",",","optional",")",":","The","weight","of","fg_loss",".","Defaults","to","0.001","beta_fgd","(","float",",","optional",")",":","The","weight","of","bg_loss",".","Defaults","to","0.0005","gamma_fgd","(","float",",","optional",")",":","The","weight","of","mask_loss",".","Defaults","to","0.001","lambda_fgd","(","float",",","optional",")",":","The","weight","of","relation_loss",".","Defaults","to","0.000005"]
code: def mask_loss(
      self,
      stu_channel_att,
      tea_channel_att,
      stu_spatial_att,
      tea_spatial_att,
  ):
      def _func(a, b):
          return paddle.sum(paddle.abs(a - b)) / len(a)
  
      mask_loss = _func(stu_channel_att, tea_channel_att) + _func(
          stu_spatial_att, tea_spatial_att
      )
      return mask_loss
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
  from ppdet.core.workspace import register
  from ppdet.modeling import ops
  from ppdet.modeling.losses.iou_loss import GIoULoss
  from ppdet.utils.logger import setup_logger
label_desc: Use image node_id 4 for calling the FGDFeatureLoss obj's underlying member method code with example usage: obj.mask_loss(stu_channel_att, tea_channel_att, stu_spatial_att, tea_spatial_att) and returns: mask_loss, unknown