class_docstr: AttentionRefinement module of BiseNetV1 model
  
  Args:
      in_channels (int): The number of input channels in spatial path module.
      out_channels (int): The number of output channels in spatial path module.
      reduction (int): A factor shrinks convolutional channels. Default: 1.
class_docstr_tok: ["AttentionRefinement","module","of","BiseNetV1","model","Args",":","in_channels","(","int",")",":","The","number","of","input","channels","in","spatial","path","module",".","out_channels","(","int",")",":","The","number","of","output","channels","in","spatial","path","module",".","reduction","(","int",")",":","A","factor","shrinks","convolutional","channels",".","Default",":","1","."]
code: def __init__(self, in_channels, out_channels, reduction=1):
      super().__init__()
      self.conv_1x1 = layers.ConvBNReLU(
          in_channels, out_channels, 1, bias_attr=False
      )
      self.channel_attention = nn.Sequential(
          nn.AdaptiveAvgPool2D(1),
          layers.ConvBNReLU(
              out_channels,
              out_channels // reduction,
              1,
              bias_attr=False,
          ),
          layers.ConvBNReLU(
              out_channels // reduction,
              out_channels,
              1,
              bias_attr=False,
          ),
          nn.Sigmoid(),
      )
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
  from paddleseg.utils import utils
label_desc: Use image node_id 1 to create a new FeatureFusion object from inherited base classes: nn with example: obj = FeatureFusion(in_channels, out_channels, reduction)