class_docstr: Graph isomorphism network for semi-supevised node classification.
docstr: Initializes a GIN model.
  
  Args:
    num_layers: (int) Number of gnn layers
    mlp_layers: (int) Number of mlp layers in GIN
    hidden_dim: (list) List of hidden layers dimension
    num_classes: (int) Total number of classes
    dropout_rate: (float) Dropout probability
    learn_eps: (bool) Whether to learn the epsilon weighting
    sparse: (bool) Whether features are sparse
    **kwargs: Keyword arguments for tf.keras.Model.
docstr_tok: ["Initializes","a","GIN","model",".","Args",":","num_layers",":","(","int",")","Number","of","gnn","layers","mlp_layers",":","(","int",")","Number","of","mlp","layers","in","GIN","hidden_dim",":","(","list",")","List","of","hidden","layers","dimension","num_classes",":","(","int",")","Total","number","of","classes","dropout_rate",":","(","float",")","Dropout","probability","learn_eps",":","(","bool",")","Whether","to","learn","the","epsilon","weighting","sparse",":","(","bool",")","Whether","features","are","sparse","*","*","kwargs",":","Keyword","arguments","for","tf.keras.Model","."]
code: def __init__(
      self,
      num_layers,
      mlp_layers,
      hidden_dim,
      num_classes,
      dropout_rate,
      learn_eps,
      sparse,
      **kwargs,
  ):
      """Initializes a GIN model.
  
      Args:
        num_layers: (int) Number of gnn layers
        mlp_layers: (int) Number of mlp layers in GIN
        hidden_dim: (list) List of hidden layers dimension
        num_classes: (int) Total number of classes
        dropout_rate: (float) Dropout probability
        learn_eps: (bool) Whether to learn the epsilon weighting
        sparse: (bool) Whether features are sparse
        **kwargs: Keyword arguments for tf.keras.Model.
      """
      super(GIN, self).__init__(**kwargs)
      self.num_layers = num_layers
      self.mlp_layers = mlp_layers
      self.hidden_dim = hidden_dim
      self.num_classes = num_classes
      self.dropout_rate = dropout_rate
      self.learn_eps = learn_eps
      self.sparse = sparse
      # input layer and hidden layers
      self.gin = []
      for i in range(self.num_layers - 1):
          self.gin.append(
              GINBlock(
                  self.mlp_layers,
                  self.hidden_dim[i],
                  dropout_rate=dropout_rate,
                  learn_eps=learn_eps,
                  sparse=sparse,
              )
          )
  
      # output layer
      self.classifier = GraphIsomorphismLayer(
          1,
          self.num_classes,
          self.dropout_rate,
          learn_eps=self.learn_eps,
          sparse=self.sparse,
      )
  
imports: from layers import GraphAttnLayer
  from layers import GraphConvLayer
  from layers import GraphIsomorphismLayer
  from layers import SparseGraphAttnLayer
  import tensorflow
label_desc: Use image node_id 1 to create a new GIN object from inherited base classes: tf.keras with example: obj = GIN(num_layers, mlp_layers, hidden_dim, num_classes, dropout_rate, learn_eps, sparse)