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 forward(
      self, encoder_hidden_states: torch.Tensor
  ) -> torch.Tensor:
      # just take the relevant feature maps
      hidden_states = encoder_hidden_states[self.in_index]
      output = self.convs(hidden_states)
      if self.concat_input:
          output = self.conv_cat(
              torch.cat([hidden_states, output], dim=1)
          )
      output = self.classifier(output)
      return output
  
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 4 for calling the UperNetFCNHead obj's underlying member method code with example usage: obj.forward(encoder_hidden_states) and returns: output