class_docstr: Semantic to Visual adaptation module
code: def forward(self, semantic):
      semantic_source = semantic  # batch, channel, height, width
  
      # feature transformation
      semantic = semantic.squeeze(2).transpose(
          [0, 2, 1]
      )  # batch, width, channel
      channel_att = self.channel_inter(
          semantic
      )  # batch, width, channel
      channel_att = channel_att.transpose(
          [0, 2, 1]
      )  # batch, channel, width
      channel_bn = self.channel_bn(channel_att)  # batch, channel, width
      channel_att = self.channel_act(
          channel_bn
      )  # batch, channel, width
  
      # Feature enhancement
      channel_output = semantic_source * channel_att.unsqueeze(
          -2
      )  # batch, channel, 1, width
  
      return channel_output
  
file_path: PaddleOCR/ppocr/modeling/necks/rf_adaptor.py
imports: import paddle
  import paddle.nn
  from paddle.nn.initializer import TruncatedNormal, Constant, Normal, KaimingNormal
label_desc: Use image node_id 3 for calling the S2VAdaptor obj's underlying member method code with example usage: obj.forward(semantic) and returns: channel_output