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 forward(self, x1, x2):
      fm = paddle.concat([x1, x2], axis=1)
      fm = self.conv_1x1(fm)
      fm_se = self.channel_attention(fm)
      output = fm + fm * fm_se
      return output
  
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 2 for calling the FeatureFusion obj's underlying member method code with example usage: obj.forward(x1, x2) and returns: output