class_docstr: This model, with its default hyperparameters, implements the architecture
  from the paper:
  
  > [Semi-Supervised Classification with Graph Convolutional Networks](https://arxiv.org/abs/1609.02907)<br>
  > Thomas N. Kipf and Max Welling
  
  **Mode**: single, disjoint, mixed, batch.
  
  **Input**
  
  - Node features of shape `([batch], n_nodes, n_node_features)`
  - Weighted adjacency matrix of shape `([batch], n_nodes, n_nodes)`
  
  **Output**
  
  - Softmax predictions with shape `([batch], n_nodes, n_labels)`.
  
  **Arguments**
  
  - `n_labels`: number of channels in output;
  - `channels`: number of channels in first GCNConv layer;
  - `activation`: activation of the first GCNConv layer;
  - `output_activation`: activation of the second GCNConv layer;
  - `use_bias`: whether to add a learnable bias to the two GCNConv layers;
  - `dropout_rate`: `rate` used in `Dropout` layers;
  - `l2_reg`: l2 regularization strength;
  - `**kwargs`: passed to `Model.__init__`.
code: def get_config(self):
      return dict(
          n_labels=self.n_labels,
          channels=self.channels,
          activation=self.activation,
          output_activation=self.output_activation,
          use_bias=self.use_bias,
          dropout_rate=self.dropout_rate,
          l2_reg=self.l2_reg,
      )
  
imports: import tensorflow
  from spektral.layers.convolutional import gcn_conv
label_desc: Use image node_id 2 for calling the GCN obj's underlying member method code with example usage: obj.get_config() and returns: dict