code: def __init__(
      self,
      input_dimensions: _typing.Sequence[int],
      output_dimension: int,
      dropout: float,
      graph_pooling_type: str,
  ):
      super(_JKSumPoolDecoder, self).__init__()
      self._linear_transforms: torch.nn.ModuleList = (
          torch.nn.ModuleList()
      )
      for input_dimension in input_dimensions:
          self._linear_transforms.append(
              torch.nn.Linear(input_dimension, output_dimension)
          )
      self._dropout: torch.nn.Dropout = torch.nn.Dropout(dropout)
      if not isinstance(graph_pooling_type, str):
          raise TypeError
      elif graph_pooling_type.lower() == "sum":
          self.__pool = SumPooling()
      elif graph_pooling_type.lower() == "mean":
          self.__pool = AvgPooling()
      elif graph_pooling_type.lower() == "max":
          self.__pool = MaxPooling()
      else:
          raise NotImplementedError
  
imports: import torch.nn.functional
  import typing
  import dgl
  from dgl.nn.pytorch.glob import SumPooling, AvgPooling, MaxPooling, SortPooling
  from ..None import base_decoder, decoder_registry
  from ...encoders import base_encoder
  from ...None import _utils
label_desc: Use image node_id 1 to create a new _JKSumPoolDecoder object from inherited base classes: torch.nn with example: obj = _JKSumPoolDecoder(input_dimensions, output_dimension, dropout, graph_pooling_type)