code: def __init__(
      self,
      input_dimension: _typing.Optional[int] = ...,
      final_dimension: _typing.Optional[int] = ...,
      device: _typing.Union[torch.device, str, int, None] = ...,
      *args,
      **kwargs,
  ):
      super(GCNEncoderMaintainer, self).__init__(
          input_dimension, final_dimension, device, *args, **kwargs
      )
      self.hyper_parameter_space = [
          {
              "parameterName": "num_layers",
              "type": "DISCRETE",
              "feasiblePoints": "2,3,4",
          },
          {
              "parameterName": "hidden",
              "type": "NUMERICAL_LIST",
              "numericalType": "INTEGER",
              "length": 3,
              "minValue": [8, 8, 8],
              "maxValue": [128, 128, 128],
              "scalingType": "LOG",
              "cutPara": ("num_layers",),
              "cutFunc": lambda x: x[0] - 1,
          },
          {
              "parameterName": "dropout",
              "type": "DOUBLE",
              "maxValue": 0.8,
              "minValue": 0.2,
              "scalingType": "LINEAR",
          },
          {
              "parameterName": "act",
              "type": "CATEGORICAL",
              "feasiblePoints": ["leaky_relu", "relu", "elu", "tanh"],
          },
      ]
      self.hyper_parameters = {
          "num_layers": 2,
          "hidden": [16],
          "dropout": 0.2,
          "act": "leaky_relu",
      }
  
file_path: AutoGL/autogl/module/model/encoders/_pyg/_gcn.py
imports: import torch.nn.functional
  import typing
  import torch_geometric
  from torch_geometric.nn.conv import GCNConv
  from ..None import base_encoder, encoder_registry
  from ...None import _utils
label_desc: Use image node_id 2 to create a new GCNEncoderMaintainer object from inherited base classes: base_encoder with example: obj = GCNEncoderMaintainer(input_dimension, final_dimension, device)