class_docstr:   A Chebyshev convolutional layer from the paper
  
    > [Convolutional Neural Networks on Graphs with Fast Localized Spectral
  Filtering](https://arxiv.org/abs/1606.09375)<br>
    > Michaël Defferrard et al.
  
    **Mode**: single, disjoint, mixed, batch.
  
    This layer computes:
    $$
        \X' = \sum \limits_{k=0}^{K - 1} \T^{(k)} \W^{(k)}  + \b^{(k)},
    $$
    where \( \T^{(0)}, ..., \T^{(K - 1)} \) are Chebyshev polynomials of \(\tilde \L\)
    defined as
    $$
        \T^{(0)} = \X \\
        \T^{(1)} = \tilde \L \X \\
        \T^{(k \ge 2)} = 2 \cdot \tilde \L \T^{(k - 1)} - \T^{(k - 2)},
    $$
    where
    $$
        \tilde \L =  \frac{2}{\lambda_{max}} \cdot (\I - \D^{-1/2} \A \D^{-1/2}) - \I.
    $$
  
    **Input**
  
    - Node features of shape `([batch], n_nodes, n_node_features)`;
    - A list of K Chebyshev polynomials of shape
    `[([batch], n_nodes, n_nodes), ..., ([batch], n_nodes, n_nodes)]`; can be computed with
    `spektral.utils.convolution.chebyshev_filter`.
  
    **Output**
  
    - Node features with the same shape of the input, but with the last
    dimension changed to `channels`.
  
    **Arguments**
  
    - `channels`: number of output channels;
    - `K`: order of the Chebyshev polynomials;
    - `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.
  
    
class_docstr_tok: ["A","Chebyshev","convolutional","layer","from","the","paper",">","[","Convolutional","Neural","Networks","on","Graphs","with","Fast","Localized","Spectral","Filtering","]","(","https",":","\/\/arxiv.org\/abs\/1606.09375",")","<","br",">",">","Micha\u00ebl","Defferrard","et","al",".","*","*","Mode","*","*",":","single",",","disjoint",",","mixed",",","batch",".","This","layer","computes",":","$","$","\\X","'","=","\\sum","\\limits_","{","k=0","}","^","{","K","-","1","}","\\T^","{","(","k",")","}","\\W^","{","(","k",")","}","+","\\b^","{","(","k",")","}",",","$","$","where","\\","(","\\T^","{","(","0",")","}",",","...",",","\\T^","{","(","K","-","1",")","}","\\",")","are","Chebyshev","polynomials","of","\\","(","\\tilde","\\L\\",")","defined","as","$","$","\\T^","{","(","0",")","}","=","\\X","\\\\","\\T^","{","(","1",")","}","=","\\tilde","\\L","\\X","\\\\","\\T^","{","(","k","\\ge","2",")","}","=","2","\\cdot","\\tilde","\\L","\\T^","{","(","k","-","1",")","}","-","\\T^","{","(","k","-","2",")","}",",","$","$","where","$","$","\\tilde","\\L","=","\\frac","{","2","}","{","\\lambda_","{","max","}","}","\\cdot","(","\\I","-","\\D^","{","-1\/2","}","\\A","\\D^","{","-1\/2","}",")","-","\\I",".","$","$","*","*","Input","*","*","-","Node","features","of","shape","`","(","[","batch","]",",","n_nodes",",","n_node_features",")","`",";","-","A","list","of","K","Chebyshev","polynomials","of","shape","`","[","(","[","batch","]",",","n_nodes",",","n_nodes",")",",","...",",","(","[","batch","]",",","n_nodes",",","n_nodes",")","]","`",";","can","be","computed","with","`","spektral.utils.convolution.chebyshev_filter","`",".","*","*","Output","*","*","-","Node","features","with","the","same","shape","of","the","input",",","but","with","the","last","dimension","changed","to","`","channels","`",".","*","*","Arguments","*","*","-","`","channels","`",":","number","of","output","channels",";","-","`","K","`",":","order","of","the","Chebyshev","polynomials",";","-","`","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 call(self, inputs, mask=None):
      x, a = inputs
  
      T_0 = x
      output = KB.dot(T_0, self.kernel[0])
  
      if self.K > 1:
          T_1 = ops.modal_dot(a, x)
          output += KB.dot(T_1, self.kernel[1])
  
      for k in range(2, self.K):
          T_2 = 2 * ops.modal_dot(a, T_1) - T_0
          output += KB.dot(T_2, self.kernel[k])
          T_0, T_1 = T_1, T_2
  
      if self.use_bias:
          output = KB.bias_add(output, self.bias)
      if mask is not None:
          output *= mask[0]
      output = self.activation(output)
  
      return output
  
file_path: spektral/spektral/layers/convolutional/cheb_conv.py
imports: from tensorflow.keras import backend
  from spektral.layers import ops
  from spektral.layers.convolutional.conv import Conv
  from spektral.utils import normalized_laplacian, rescale_laplacian
label_desc: Use image node_id 3 for calling the ChebConv obj's underlying member method code with example usage: obj.call(inputs, mask) and returns: output