class_docstr: An implementation of the Chebyshev Graph Convolutional Gated Recurrent Unit
  Cell. For details see this paper: `"Structured Sequence Modeling with Graph
  Convolutional Recurrent Networks." <https://arxiv.org/abs/1612.07659>`_
  
  Args:
      in_channels (int): Number of input features.
      out_channels (int): Number of output features.
      K (int): Chebyshev filter size :math:`K`.
      normalization (str, optional): The normalization scheme for the graph
          Laplacian (default: :obj:`"sym"`):
  
          1. :obj:`None`: No normalization
          :math:`\mathbf{L} = \mathbf{D} - \mathbf{A}`
  
          2. :obj:`"sym"`: Symmetric normalization
          :math:`\mathbf{L} = \mathbf{I} - \mathbf{D}^{-1/2} \mathbf{A}
          \mathbf{D}^{-1/2}`
  
          3. :obj:`"rw"`: Random-walk normalization
          :math:`\mathbf{L} = \mathbf{I} - \mathbf{D}^{-1} \mathbf{A}`
  
          You need to pass :obj:`lambda_max` to the :meth:`forward` method of
          this operator in case the normalization is non-symmetric.
          :obj:`\lambda_max` should be a :class:`torch.Tensor` of size
          :obj:`[num_graphs]` in a mini-batch scenario and a
          scalar/zero-dimensional tensor when operating on single graphs.
          You can pre-compute :obj:`lambda_max` via the
          :class:`torch_geometric.transforms.LaplacianLambdaMax` transform.
      bias (bool, optional): If set to :obj:`False`, the layer will not learn
          an additive bias. (default: :obj:`True`)
class_docstr_tok: ["An","implementation","of","the","Chebyshev","Graph","Convolutional","Gated","Recurrent","Unit","Cell",".","For","details","see","this","paper",":","`","``","Structured","Sequence","Modeling","with","Graph","Convolutional","Recurrent","Networks",".","''","<","https",":","\/\/arxiv.org\/abs\/1612.07659",">","`","_","Args",":","in_channels","(","int",")",":","Number","of","input","features",".","out_channels","(","int",")",":","Number","of","output","features",".","K","(","int",")",":","Chebyshev","filter","size",":","math",":","`","K","`",".","normalization","(","str",",","optional",")",":","The","normalization","scheme","for","the","graph","Laplacian","(","default",":",":","obj",":","`","``","sym","''","`",")",":","1.",":","obj",":","`","None","`",":","No","normalization",":","math",":","`","\\mathbf","{","L","}","=","\\mathbf","{","D","}","-","\\mathbf","{","A","}","`","2.",":","obj",":","`","``","sym","''","`",":","Symmetric","normalization",":","math",":","`","\\mathbf","{","L","}","=","\\mathbf","{","I","}","-","\\mathbf","{","D","}","^","{","-1\/2","}","\\mathbf","{","A","}","\\mathbf","{","D","}","^","{","-1\/2","}","`","3.",":","obj",":","`","``","rw","''","`",":","Random-walk","normalization",":","math",":","`","\\mathbf","{","L","}","=","\\mathbf","{","I","}","-","\\mathbf","{","D","}","^","{","-1","}","\\mathbf","{","A","}","`","You","need","to","pass",":","obj",":","`","lambda_max","`","to","the",":","meth",":","`","forward","`","method","of","this","operator","in","case","the","normalization","is","non-symmetric",".",":","obj",":","`","\\lambda_max","`","should","be","a",":","class",":","`","torch.Tensor","`","of","size",":","obj",":","`","[","num_graphs","]","`","in","a","mini-batch","scenario","and","a","scalar\/zero-dimensional","tensor","when","operating","on","single","graphs",".","You","can","pre-compute",":","obj",":","`","lambda_max","`","via","the",":","class",":","`","torch_geometric.transforms.LaplacianLambdaMax","`","transform",".","bias","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","False","`",",","the","layer","will","not","learn","an","additive","bias",".","(","default",":",":","obj",":","`","True","`",")"]
docstr: Making a forward pass. If edge weights are not present the forward pass
  defaults to an unweighted graph. If the hidden state matrix is not present
  when the forward pass is called it is initialized with zeros.
  
  Arg types:
      * **X** *(PyTorch Float Tensor)* - Node features.
      * **edge_index** *(PyTorch Long Tensor)* - Graph edge indices.
      * **edge_weight** *(PyTorch Long Tensor, optional)* - Edge weight vector.
      * **H** *(PyTorch Float Tensor, optional)* - Hidden state matrix for all nodes.
      * **lambda_max** *(PyTorch Tensor, optional but mandatory if normalization is not sym)* - Largest eigenvalue of Laplacian.
  
  
  Return types:
      * **H** *(PyTorch Float Tensor)* - Hidden state matrix for all nodes.
docstr_tok: ["Making","a","forward","pass",".","If","edge","weights","are","not","present","the","forward","pass","defaults","to","an","unweighted","graph",".","If","the","hidden","state","matrix","is","not","present","when","the","forward","pass","is","called","it","is","initialized","with","zeros",".","Arg","types",":","*","*","*","X","*","*","*","(","PyTorch","Float","Tensor",")","*","-","Node","features",".","*","*","*","edge_index","*","*","*","(","PyTorch","Long","Tensor",")","*","-","Graph","edge","indices",".","*","*","*","edge_weight","*","*","*","(","PyTorch","Long","Tensor",",","optional",")","*","-","Edge","weight","vector",".","*","*","*","H","*","*","*","(","PyTorch","Float","Tensor",",","optional",")","*","-","Hidden","state","matrix","for","all","nodes",".","*","*","*","lambda_max","*","*","*","(","PyTorch","Tensor",",","optional","but","mandatory","if","normalization","is","not","sym",")","*","-","Largest","eigenvalue","of","Laplacian",".","Return","types",":","*","*","*","H","*","*","*","(","PyTorch","Float","Tensor",")","*","-","Hidden","state","matrix","for","all","nodes","."]
code: def forward(
      self,
      X: torch.FloatTensor,
      edge_index: torch.LongTensor,
      edge_weight: torch.FloatTensor = None,
      H: torch.FloatTensor = None,
      lambda_max: torch.Tensor = None,
  ) -> torch.FloatTensor:
      """
      Making a forward pass. If edge weights are not present the forward pass
      defaults to an unweighted graph. If the hidden state matrix is not present
      when the forward pass is called it is initialized with zeros.
  
      Arg types:
          * **X** *(PyTorch Float Tensor)* - Node features.
          * **edge_index** *(PyTorch Long Tensor)* - Graph edge indices.
          * **edge_weight** *(PyTorch Long Tensor, optional)* - Edge weight vector.
          * **H** *(PyTorch Float Tensor, optional)* - Hidden state matrix for all nodes.
          * **lambda_max** *(PyTorch Tensor, optional but mandatory if normalization is not sym)* - Largest eigenvalue of Laplacian.
  
  
      Return types:
          * **H** *(PyTorch Float Tensor)* - Hidden state matrix for all nodes.
      """
      H = self._set_hidden_state(X, H)
      Z = self._calculate_update_gate(
          X, edge_index, edge_weight, H, lambda_max
      )
      R = self._calculate_reset_gate(
          X, edge_index, edge_weight, H, lambda_max
      )
      H_tilde = self._calculate_candidate_state(
          X, edge_index, edge_weight, H, R, lambda_max
      )
      H = self._calculate_hidden_state(Z, H, H_tilde)
      return H
  
file_path: pytorch_geometric_temporal/torch_geometric_temporal/nn/recurrent/gconv_gru.py
imports: import torch
  from torch_geometric.nn import ChebConv
label_desc: Use image node_id 11 for calling the GConvGRU obj's underlying member method code with example usage: obj.forward(X, edge_index, edge_weight, H, lambda_max) and returns: H