code: def forward(self, inputs):
      feats = self.convs(inputs[0])
      if self.concat_input:
          feats = self.conv_cat(
              paddle.concat([inputs[0], feats], axis=1)
          )
      if self.dropout is not None:
          feats = self.dropout(feats)
      output = self.conv_seg(feats)
      if self.training:
          seg_kernels = self.conv_seg.weight.clone()
      else:
          # Since tensor.clone() raises error when exporting static model, we use tensor.detach() instead,
          # although this may cause little performance drop in mIoU.
          seg_kernels = self.conv_seg.weight
      seg_kernels = seg_kernels[None].expand(
          [paddle.shape(feats)[0], *paddle.shape(seg_kernels)]
      )
      return output, feats, seg_kernels
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg import utils
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
  from .upernet import UPerNetHead
label_desc: Use image node_id 2 for calling the FCNKernelHead obj's underlying member method code with example usage: obj.forward(inputs) and returns: output,  feats,  seg_kernels