class_docstr: Graph Convolution (GCN) Keras layer.
  The implementation is based on https://github.com/tkipf/keras-gcn.
  
  Original paper: Semi-Supervised Classification with Graph Convolutional Networks. Thomas N. Kipf, Max Welling,
  International Conference on Learning Representations (ICLR), 2017 https://github.com/tkipf/gcn
  
  Notes:
    - The batch axis represents independent graphs to be convolved with this GCN kernel (for
      instance, for full-batch node prediction on a single graph, its dimension should be 1).
  
    - If the adjacency matrix is dense, both it and the features should have a batch axis, with
      equal batch dimension.
  
    - If the adjacency matrix is sparse, it should not have a batch axis, and the batch
      dimension of the features must be 1.
  
    - There are two inputs required, the node features,
      and the normalized graph Laplacian matrix
  
    - This class assumes that the normalized Laplacian matrix is passed as
      input to the Keras methods.
  
  .. seealso:: :class:`.GCN` combines several of these layers.
  
  Args:
      units (int): dimensionality of output feature vectors
      activation (str or func): nonlinear activation applied to layer's output to obtain output features
      use_bias (bool): toggles an optional bias
      final_layer (bool): Deprecated, use ``tf.gather`` or :class:`.GatherIndices`
      kernel_initializer (str or func, optional): The initialiser to use for the weights.
      kernel_regularizer (str or func, optional): The regulariser to use for the weights.
      kernel_constraint (str or func, optional): The constraint to use for the weights.
      bias_initializer (str or func, optional): The initialiser to use for the bias.
      bias_regularizer (str or func, optional): The regulariser to use for the bias.
      bias_constraint (str or func, optional): The constraint to use for the bias.
class_docstr_tok: ["Graph","Convolution","(","GCN",")","Keras","layer",".","The","implementation","is","based","on","https",":","\/\/github.com\/tkipf\/keras-gcn",".","Original","paper",":","Semi-Supervised","Classification","with","Graph","Convolutional","Networks",".","Thomas","N.","Kipf",",","Max","Welling",",","International","Conference","on","Learning","Representations","(","ICLR",")",",","2017","https",":","\/\/github.com\/tkipf\/gcn","Notes",":","-","The","batch","axis","represents","independent","graphs","to","be","convolved","with","this","GCN","kernel","(","for","instance",",","for","full-batch","node","prediction","on","a","single","graph",",","its","dimension","should","be","1",")",".","-","If","the","adjacency","matrix","is","dense",",","both","it","and","the","features","should","have","a","batch","axis",",","with","equal","batch","dimension",".","-","If","the","adjacency","matrix","is","sparse",",","it","should","not","have","a","batch","axis",",","and","the","batch","dimension","of","the","features","must","be","1",".","-","There","are","two","inputs","required",",","the","node","features",",","and","the","normalized","graph","Laplacian","matrix","-","This","class","assumes","that","the","normalized","Laplacian","matrix","is","passed","as","input","to","the","Keras","methods",".","..","seealso",":",":",":","class",":","`",".GCN","`","combines","several","of","these","layers",".","Args",":","units","(","int",")",":","dimensionality","of","output","feature","vectors","activation","(","str","or","func",")",":","nonlinear","activation","applied","to","layer","'s","output","to","obtain","output","features","use_bias","(","bool",")",":","toggles","an","optional","bias","final_layer","(","bool",")",":","Deprecated",",","use","``","tf.gather","``","or",":","class",":","`",".GatherIndices","`","kernel_initializer","(","str","or","func",",","optional",")",":","The","initialiser","to","use","for","the","weights",".","kernel_regularizer","(","str","or","func",",","optional",")",":","The","regulariser","to","use","for","the","weights",".","kernel_constraint","(","str","or","func",",","optional",")",":","The","constraint","to","use","for","the","weights",".","bias_initializer","(","str","or","func",",","optional",")",":","The","initialiser","to","use","for","the","bias",".","bias_regularizer","(","str","or","func",",","optional",")",":","The","regulariser","to","use","for","the","bias",".","bias_constraint","(","str","or","func",",","optional",")",":","The","constraint","to","use","for","the","bias","."]
docstr: Computes the output shape of the layer.
  Assumes the following inputs:
  
  Args:
      input_shapes (tuple of int)
          Shape tuples can include None for free dimensions, instead of an integer.
  
  Returns:
      An input shape tuple.
docstr_tok: ["Computes","the","output","shape","of","the","layer",".","Assumes","the","following","inputs",":","Args",":","input_shapes","(","tuple","of","int",")","Shape","tuples","can","include","None","for","free","dimensions",",","instead","of","an","integer",".","Returns",":","An","input","shape","tuple","."]
code: def compute_output_shape(self, input_shapes):
      """
      Computes the output shape of the layer.
      Assumes the following inputs:
  
      Args:
          input_shapes (tuple of int)
              Shape tuples can include None for free dimensions, instead of an integer.
  
      Returns:
          An input shape tuple.
      """
      feature_shape, *As_shapes = input_shapes
  
      batch_dim = feature_shape[0]
      out_dim = feature_shape[1]
  
      return batch_dim, out_dim, self.units
  
imports: import warnings
  import tensorflow
  from tensorflow.keras import backend
  from tensorflow.keras import activations, initializers, constraints, regularizers
  from tensorflow.keras.layers import Input, Layer, Lambda, Dropout, Reshape
  from ..mapper import FullBatchGenerator, ClusterNodeGenerator
  from .misc import SqueezedSparseConversion, deprecated_model_function, GatherIndices
  from .preprocessing_layer import GraphPreProcessingLayer
label_desc: Use image node_id 3 for calling the GraphConvolution obj's underlying member method code with example usage: obj.compute_output_shape(input_shapes) and returns: batch_dim,  out_dim,  self