class_docstr: Auto Multi-class Graph Classifier.
  
  Used to automatically solve the graph classification problems.
  
  Parameters
  ----------
  feature_module: autogl.module.feature.BaseFeatureEngineer or str or None
      The (name of) auto feature engineer used to process the given dataset.
      Disable feature engineer by setting it to ``None``. Default ``deepgl``.
  
  graph_models: list of autogl.module.model.BaseModel or list of str
      The (name of) models to be optimized as backbone. Default ``['gat', 'gcn']``.
  
  hpo_module: autogl.module.hpo.BaseHPOptimizer or str or None
      The (name of) hpo module used to search for best hyper parameters.
      Disable hpo by setting it to ``None``. Default ``anneal``.
  
  ensemble_module: autogl.module.ensemble.BaseEnsembler or str or None
      The (name of) ensemble module used to ensemble the multi-models found.
      Disable ensemble by setting it to ``None``. Default ``voting``.
  
  max_evals: int (Optional)
      If given, will set the number eval times the hpo module will use.
      Only be effective when hpo_module is ``str``. Default ``None``.
  
  default_trainer: str (Optional)
      The (name of) the trainer used in this solver. Default to ``NodeClassificationFull``.
  
  trainer_hp_space: Iterable[dict] (Optional)
      trainer hp space or list of trainer hp spaces configuration.
      If a single trainer hp is given, will specify the hp space of trainer for
      every model. If a list of trainer hp is given, will specify every model
      with corrsponding trainer hp space. Default ``None``.
  
  model_hp_spaces: list of list of dict (Optional)
      model hp space configuration.
      If given, will specify every hp space of every passed model. Default ``None``.
      If the encoder(-decoder) is passed, the space should be a dict containing keys "encoder"
      and "decoder", specifying the detailed encoder decoder hp spaces.
  
  size: int (Optional)
      The max models ensemble module will use. Default ``None``.
  
  device: torch.device or str
      The device where model will be running on. If set to ``auto``, will use gpu
      when available. You can also specify the device by directly giving ``gpu`` or
      ``cuda:0``, etc. Default ``auto``.
class_docstr_tok: ["Auto","Multi-class","Graph","Classifier",".","Used","to","automatically","solve","the","graph","classification","problems",".","Parameters","--","--","--","--","--","feature_module",":","autogl.module.feature.BaseFeatureEngineer","or","str","or","None","The","(","name","of",")","auto","feature","engineer","used","to","process","the","given","dataset",".","Disable","feature","engineer","by","setting","it","to","``","None","``",".","Default","``","deepgl","``",".","graph_models",":","list","of","autogl.module.model.BaseModel","or","list","of","str","The","(","name","of",")","models","to","be","optimized","as","backbone",".","Default","``","[","'gat","'",",","'gcn","'","]","``",".","hpo_module",":","autogl.module.hpo.BaseHPOptimizer","or","str","or","None","The","(","name","of",")","hpo","module","used","to","search","for","best","hyper","parameters",".","Disable","hpo","by","setting","it","to","``","None","``",".","Default","``","anneal","``",".","ensemble_module",":","autogl.module.ensemble.BaseEnsembler","or","str","or","None","The","(","name","of",")","ensemble","module","used","to","ensemble","the","multi-models","found",".","Disable","ensemble","by","setting","it","to","``","None","``",".","Default","``","voting","``",".","max_evals",":","int","(","Optional",")","If","given",",","will","set","the","number","eval","times","the","hpo","module","will","use",".","Only","be","effective","when","hpo_module","is","``","str","``",".","Default","``","None","``",".","default_trainer",":","str","(","Optional",")","The","(","name","of",")","the","trainer","used","in","this","solver",".","Default","to","``","NodeClassificationFull","``",".","trainer_hp_space",":","Iterable","[","dict","]","(","Optional",")","trainer","hp","space","or","list","of","trainer","hp","spaces","configuration",".","If","a","single","trainer","hp","is","given",",","will","specify","the","hp","space","of","trainer","for","every","model",".","If","a","list","of","trainer","hp","is","given",",","will","specify","every","model","with","corrsponding","trainer","hp","space",".","Default","``","None","``",".","model_hp_spaces",":","list","of","list","of","dict","(","Optional",")","model","hp","space","configuration",".","If","given",",","will","specify","every","hp","space","of","every","passed","model",".","Default","``","None","``",".","If","the","encoder","(","-decoder",")","is","passed",",","the","space","should","be","a","dict","containing","keys","``","encoder","''","and","``","decoder","''",",","specifying","the","detailed","encoder","decoder","hp","spaces",".","size",":","int","(","Optional",")","The","max","models","ensemble","module","will","use",".","Default","``","None","``",".","device",":","torch.device","or","str","The","device","where","model","will","be","running","on",".","If","set","to","``","auto","``",",","will","use","gpu","when","available",".","You","can","also","specify","the","device","by","directly","giving","``","gpu","``","or","``","cuda:0","``",",","etc",".","Default","``","auto","``","."]
code: def _init_graph_module(
      self,
      graph_models,
      num_classes,
      num_features,
      feval,
      device,
      loss,
      num_graph_features,
  ) -> "SSLGraphClassifier":
      # load graph network module
      self.graph_model_list = []
  
      for i, model in enumerate(graph_models):
          # init the trainer
          if not isinstance(model, BaseContrastiveTrainer):
              trainer = (
                  self._default_trainer
                  if not isinstance(
                      self._default_trainer, (tuple, list)
                  )
                  else self._default_trainer[i]
              )
              if isinstance(trainer, str):
                  if trainer not in TRAINER_DICT:
                      raise KeyError(
                          f"Does not support trainer {trainer}"
                      )
                  trainer = TRAINER_DICT[trainer]()
              if isinstance(model, (tuple, list)):
                  trainer.encoder = model[0]
                  trainer.decoder = model[1]
              else:
                  trainer.encoder = model
          else:
              trainer = model
  
          # set model hp space
          if self._model_hp_spaces is not None:
              if self._model_hp_spaces[i] is not None:
                  if isinstance(self._model_hp_spaces[i], dict):
                      encoder_hp_space = self._model_hp_spaces[i].get(
                          "encoder", None
                      )
                      decoder_hp_space = self._model_hp_spaces[i].get(
                          "decoder", None
                      )
                      prediction_head_hp_space = self._model_hp_spaces[
                          i
                      ].get("prediction_head", None)
                  else:
                      encoder_hp_space = self._model_hp_spaces[i]
                      decoder_hp_space = None
                  if encoder_hp_space is not None:
                      trainer.encoder.hyper_parameter_space = (
                          encoder_hp_space
                      )
                  if decoder_hp_space is not None:
                      trainer.decoder.hyper_parameter_space = (
                          decoder_hp_space
                      )
                  if prediction_head_hp_space is not None:
                      trainer.prediction_head.hyper_parameter_space = (
                          prediction_head_hp_space
                      )
  
          # set trainer hp space
          if self._trainer_hp_space is not None:
              if isinstance(self._trainer_hp_space[0], list):
                  current_hp_for_trainer = self._trainer_hp_space[i]
              else:
                  current_hp_for_trainer = self._trainer_hp_space
              trainer.hyper_parameter_space = current_hp_for_trainer
  
          trainer.num_features = num_features
          trainer.num_classes = num_classes
          trainer.num_graph_features = num_graph_features
          trainer.loss = loss
          trainer.feval = feval
          trainer.to(device)
          self.graph_model_list.append(trainer)
  
      return self
  
imports: import time
  import json
  from copy import deepcopy
  from typing import Sequence
  import torch
  import numpy
  import yaml
  from .utils import _parse_hp_space, _parse_model_hp, _initialize_single_model
  from ..base import BaseClassifier
  from ....module.model import EncoderUniversalRegistry, DecoderUniversalRegistry, ModelUniversalRegistry
  from ....module.feature import FEATURE_DICT
  from ....module.train import TRAINER_DICT, get_feval, BaseGraphClassificationTrainer
  from ....module.train.ssl import BaseContrastiveTrainer
  from ...utils import LeaderBoard, get_dataset_labels, set_seed, get_graph_from_dataset, get_graph_node_features, convert_dataset
  from ....datasets import utils
  from ...utils import get_logger
  from ....backend import DependentBackend
label_desc: Use image node_id 2 for calling the SSLGraphClassifier obj's underlying member method code with example usage: obj._init_graph_module(graph_models, num_classes, num_features, feval, device, loss, num_graph_features) and returns: self