class_docstr: This code is refered from:
      https://github.com/MhLiao/DB/blob/master/decoders/feature_attention.py
class_docstr_tok: ["This","code","is","refered","from",":","https",":","\/\/github.com\/MhLiao\/DB\/blob\/master\/decoders\/feature_attention.py"]
docstr: Adaptive Scale Fusion (ASF) block of DBNet++
  Args:
      in_channels: the number of channels in the input data
      inter_channels: the number of middle channels
      out_features_num: the number of fused stages
docstr_tok: ["Adaptive","Scale","Fusion","(","ASF",")","block","of","DBNet++","Args",":","in_channels",":","the","number","of","channels","in","the","input","data","inter_channels",":","the","number","of","middle","channels","out_features_num",":","the","number","of","fused","stages"]
code: def __init__(self, in_channels, inter_channels, out_features_num=4):
      """
      Adaptive Scale Fusion (ASF) block of DBNet++
      Args:
          in_channels: the number of channels in the input data
          inter_channels: the number of middle channels
          out_features_num: the number of fused stages
      """
      super(ASFBlock, self).__init__()
      weight_attr = paddle.nn.initializer.KaimingUniform()
      self.in_channels = in_channels
      self.inter_channels = inter_channels
      self.out_features_num = out_features_num
      self.conv = nn.Conv2D(in_channels, inter_channels, 3, padding=1)
  
      self.spatial_scale = nn.Sequential(
          # Nx1xHxW
          nn.Conv2D(
              in_channels=1,
              out_channels=1,
              kernel_size=3,
              bias_attr=False,
              padding=1,
              weight_attr=ParamAttr(initializer=weight_attr),
          ),
          nn.ReLU(),
          nn.Conv2D(
              in_channels=1,
              out_channels=1,
              kernel_size=1,
              bias_attr=False,
              weight_attr=ParamAttr(initializer=weight_attr),
          ),
          nn.Sigmoid(),
      )
  
      self.channel_scale = nn.Sequential(
          nn.Conv2D(
              in_channels=inter_channels,
              out_channels=out_features_num,
              kernel_size=1,
              bias_attr=False,
              weight_attr=ParamAttr(initializer=weight_attr),
          ),
          nn.Sigmoid(),
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  from paddle import nn
  import paddle.nn.functional
  from paddle import ParamAttr
  import os
  import sys
  from ppocr.modeling.necks.intracl import IntraCLBlock
  from ppocr.modeling.backbones.det_mobilenet_v3 import SEModule
label_desc: Use image node_id 1 to create a new ASFBlock object from inherited base classes: nn with example: obj = ASFBlock(in_channels, inter_channels, out_features_num)