class_docstr: A gated graph convolutional layer from the paper
  
  > [Gated Graph Sequence Neural Networks](https://arxiv.org/abs/1511.05493)<br>
  > Yujia Li et al.
  
  **Mode**: single, disjoint, mixed.
  
  **This layer expects a sparse adjacency matrix.**
  
  This layer computes \(\x_i' = \h^{(L)}_i\) where:
  $$
  \begin{align}
      & \h^{(0)}_i = \x_i \| \mathbf{0} \\
      & \m^{(l)}_i = \sum\limits_{j \in \mathcal{N}(i)} \h^{(l - 1)}_j \W \\
      & \h^{(l)}_i = \textrm{GRU} \left(\m^{(l)}_i, \h^{(l - 1)}_i \right) \\
  \end{align}
  $$
  where \(\textrm{GRU}\) is a gated recurrent unit cell.
  
  **Input**
  
  - Node features of shape `(n_nodes, n_node_features)`; note that
  `n_node_features` must be smaller or equal than `channels`.
  - Binary adjacency matrix of shape `(n_nodes, n_nodes)`.
  
  **Output**
  
  - Node features with the same shape of the input, but the last dimension
  changed to `channels`.
  
  **Arguments**
  
  - `channels`: integer, number of output channels;
  - `n_layers`: integer, number of iterations with the GRU cell;
  - `activation`: activation function;
  - `use_bias`: bool, add a bias vector to the output;
  - `kernel_initializer`: initializer for the weights;
  - `bias_initializer`: initializer for the bias vector;
  - `kernel_regularizer`: regularization applied to the weights;
  - `bias_regularizer`: regularization applied to the bias vector;
  - `activity_regularizer`: regularization applied to the output;
  - `kernel_constraint`: constraint applied to the weights;
  - `bias_constraint`: constraint applied to the bias vector.
code: def config(self):
      return {
          "channels": self.channels,
          "n_layers": self.n_layers,
      }
  
file_path: spektral/spektral/layers/convolutional/gated_graph_conv.py
imports: import tensorflow
  from tensorflow.keras.layers import GRUCell
  from spektral.layers.convolutional.message_passing import MessagePassing
label_desc: Use image node_id 4 for calling the GatedGraphConv obj's underlying member method code with example usage: obj.config() and returns: dict