class_docstr: Graph convolution network for semi-supevised node classification.
docstr: Initializes a GCN model.
  
  Args:
    num_layers: (int) Number of gnn layers
    hidden_dim: (list) List of hidden layers dimension
    num_classes: (int) Total number of classes
    dropout_rate: (float) Dropout probability
    sparse: (bool) Whether features are sparse
    bias: (bool) Whether bias needs to be added to gcn layers
    **kwargs: Keyword arguments for tf.keras.Model.
docstr_tok: ["Initializes","a","GCN","model",".","Args",":","num_layers",":","(","int",")","Number","of","gnn","layers","hidden_dim",":","(","list",")","List","of","hidden","layers","dimension","num_classes",":","(","int",")","Total","number","of","classes","dropout_rate",":","(","float",")","Dropout","probability","sparse",":","(","bool",")","Whether","features","are","sparse","bias",":","(","bool",")","Whether","bias","needs","to","be","added","to","gcn","layers","*","*","kwargs",":","Keyword","arguments","for","tf.keras.Model","."]
code: def __init__(
      self,
      num_layers,
      hidden_dim,
      num_classes,
      dropout_rate,
      sparse,
      bias,
      **kwargs,
  ):
      """Initializes a GCN model.
  
      Args:
        num_layers: (int) Number of gnn layers
        hidden_dim: (list) List of hidden layers dimension
        num_classes: (int) Total number of classes
        dropout_rate: (float) Dropout probability
        sparse: (bool) Whether features are sparse
        bias: (bool) Whether bias needs to be added to gcn layers
        **kwargs: Keyword arguments for tf.keras.Model.
      """
      super(GCN, self).__init__(**kwargs)
      self.num_layers = num_layers
      self.hidden_dim = hidden_dim
      self.num_classes = num_classes
      self.dropout_rate = dropout_rate
      self.sparse = sparse
      self.bias = bias
      # input layer
      self.gc = [
          GCNBlock(
              self.hidden_dim[0],
              dropout_rate=dropout_rate,
              sparse=sparse,
              bias=bias,
          ),
      ]
  
      # hidden layers
      for i in range(1, self.num_layers - 1):
          self.gc.append(
              GCNBlock(
                  self.hidden_dim[i],
                  dropout_rate=dropout_rate,
                  sparse=sparse,
                  bias=bias,
              )
          )
  
      # output layer
      self.classifier = GraphConvLayer(
          self.num_classes, sparse=self.sparse, bias=self.bias
      )
  
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 GCN object from inherited base classes: tf.keras with example: obj = GCN(num_layers, hidden_dim, num_classes, dropout_rate, sparse, bias)