class_docstr: This code is based on
  https://github.com/fcjian/TOOD/blob/master/mmdet/models/dense_heads/tood_head.py
class_docstr_tok: ["This","code","is","based","on","https",":","\/\/github.com\/fcjian\/TOOD\/blob\/master\/mmdet\/models\/dense_heads\/tood_head.py"]
code: def forward(self, feat, avg_feat):
      feat_shape = get_static_shape(feat)
      b = feat_shape[0:1]
      h = feat_shape[2:3]
      w = feat_shape[3:4]
      weight = F.relu(self.la_conv1(avg_feat))
      weight = F.sigmoid(self.la_conv2(weight)).unsqueeze(-1)
      feat = (
          paddle.reshape(
              feat, [b, self.stacked_convs, self.feat_channels, h, w]
          )
          * weight
      )
      feat = self.reduction_conv(feat.flatten(1, 2))
      feat = F.relu(feat)
      return feat
  
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 paddle import ParamAttr
  from paddle.nn.initializer import Constant
  from ppdet.core.workspace import register
  from ..initializer import normal_, constant_, bias_init_with_prob
  from ppdet.modeling.bbox_utils import bbox_center, batch_distance2bbox
  from ..losses import GIoULoss
  from ppdet.modeling.layers import ConvNormLayer
  from ppdet.modeling.ops import get_static_shape
  from ppdet.modeling.assigners.utils import generate_anchors_for_grid_cell
label_desc: Use image node_id 3 for calling the TaskDecomposition obj's underlying member method code with example usage: obj.forward(feat, avg_feat) and returns: feat