class_docstr: Fully Convolution Networks for Semantic Segmentation. This head is the implementation of
  [FCNNet](https://arxiv.org/abs/1411.4038>).
  
  Args:
      config:
          Configuration.
      in_channels (int):
          Number of input channels.
      kernel_size (int):
          The kernel size for convs in the head. Default: 3.
      dilation (int):
          The dilation rate for convs in the head. Default: 1.
code: def __init__(
      self,
      config,
      in_index: int = 2,
      kernel_size: int = 3,
      dilation: Union[int, Tuple[int, int]] = 1,
  ) -> None:
      super().__init__()
  
      self.config = config
      self.in_channels = config.auxiliary_in_channels
      self.channels = config.auxiliary_channels
      self.num_convs = config.auxiliary_num_convs
      self.concat_input = config.auxiliary_concat_input
      self.in_index = in_index
  
      conv_padding = (kernel_size // 2) * dilation
      convs = []
      convs.append(
          UperNetConvModule(
              self.in_channels,
              self.channels,
              kernel_size=kernel_size,
              padding=conv_padding,
              dilation=dilation,
          )
      )
      for i in range(self.num_convs - 1):
          convs.append(
              UperNetConvModule(
                  self.channels,
                  self.channels,
                  kernel_size=kernel_size,
                  padding=conv_padding,
                  dilation=dilation,
              )
          )
      if self.num_convs == 0:
          self.convs = nn.Identity()
      else:
          self.convs = nn.Sequential(*convs)
      if self.concat_input:
          self.conv_cat = UperNetConvModule(
              self.in_channels + self.channels,
              self.channels,
              kernel_size=kernel_size,
              padding=kernel_size // 2,
          )
  
      self.classifier = nn.Conv2d(
          self.channels, config.num_labels, kernel_size=1
      )
  
imports: from typing import List, Optional, Tuple, Union
  import torch
  from torch import nn
  from torch.nn import CrossEntropyLoss
  from ...None import AutoBackbone
  from ...modeling_outputs import SemanticSegmenterOutput
  from ...modeling_utils import PreTrainedModel
  from ...utils import add_start_docstrings, add_start_docstrings_to_model_forward, replace_return_docstrings
  from .configuration_upernet import UperNetConfig
label_desc: Use image node_id 1 to create a new UperNetFCNHead object from inherited base classes: nn with example: obj = UperNetFCNHead(config, in_index, kernel_size, dilation)