class_docstr: An implementation of the integrated Gated Graph Convolution Long Short
  Term Memory Layer. For details see this paper: `"Predictive Temporal Embedding
  of Dynamic Graphs." <https://ieeexplore.ieee.org/document/9073186>`_
  
  Args:
      conv_out_channels (int): Number of output channels for the GGCN.
      conv_num_layers (int): Number of Gated Graph Convolutions.
      conv_aggr (str): Aggregation scheme to use
          (:obj:`"add"`, :obj:`"mean"`, :obj:`"max"`).
      lstm_out_channels (int): Number of LSTM channels.
      lstm_num_layers (int): Number of neurons in LSTM.
docstr: Making a forward pass. If the hidden state and cell state matrices are
  not present when the forward pass is called these are initialized with zeros.
  
  Arg types:
      * **X** *(PyTorch Float Tensor)* - Node features.
      * **edge_index** *(PyTorch Long Tensor)* - Graph edge indices.
      * **edge_weight** *(PyTorch Float Tensor, optional)* - Edge weight vector.
      * **H** *(PyTorch Float Tensor, optional)* - Hidden state matrix for all nodes.
      * **C** *(PyTorch Float Tensor, optional)* - Cell state matrix for all nodes.
  
  Return types:
      * **H_tilde** *(PyTorch Float Tensor)* - Output matrix for all nodes.
      * **H** *(PyTorch Float Tensor)* - Hidden state matrix for all nodes.
      * **C** *(PyTorch Float Tensor)* - Cell state matrix for all nodes.
docstr_tok: ["Making","a","forward","pass",".","If","the","hidden","state","and","cell","state","matrices","are","not","present","when","the","forward","pass","is","called","these","are","initialized","with","zeros",".","Arg","types",":","*","*","*","X","*","*","*","(","PyTorch","Float","Tensor",")","*","-","Node","features",".","*","*","*","edge_index","*","*","*","(","PyTorch","Long","Tensor",")","*","-","Graph","edge","indices",".","*","*","*","edge_weight","*","*","*","(","PyTorch","Float","Tensor",",","optional",")","*","-","Edge","weight","vector",".","*","*","*","H","*","*","*","(","PyTorch","Float","Tensor",",","optional",")","*","-","Hidden","state","matrix","for","all","nodes",".","*","*","*","C","*","*","*","(","PyTorch","Float","Tensor",",","optional",")","*","-","Cell","state","matrix","for","all","nodes",".","Return","types",":","*","*","*","H_tilde","*","*","*","(","PyTorch","Float","Tensor",")","*","-","Output","matrix","for","all","nodes",".","*","*","*","H","*","*","*","(","PyTorch","Float","Tensor",")","*","-","Hidden","state","matrix","for","all","nodes",".","*","*","*","C","*","*","*","(","PyTorch","Float","Tensor",")","*","-","Cell","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,
      C: torch.FloatTensor = None,
  ) -> torch.FloatTensor:
      """
      Making a forward pass. If the hidden state and cell state matrices are
      not present when the forward pass is called these are initialized with zeros.
  
      Arg types:
          * **X** *(PyTorch Float Tensor)* - Node features.
          * **edge_index** *(PyTorch Long Tensor)* - Graph edge indices.
          * **edge_weight** *(PyTorch Float Tensor, optional)* - Edge weight vector.
          * **H** *(PyTorch Float Tensor, optional)* - Hidden state matrix for all nodes.
          * **C** *(PyTorch Float Tensor, optional)* - Cell state matrix for all nodes.
  
      Return types:
          * **H_tilde** *(PyTorch Float Tensor)* - Output matrix for all nodes.
          * **H** *(PyTorch Float Tensor)* - Hidden state matrix for all nodes.
          * **C** *(PyTorch Float Tensor)* - Cell state matrix for all nodes.
      """
      H_tilde = self.conv_layer(X, edge_index, edge_weight)
      H_tilde = H_tilde[None, :, :]
      if H is None and C is None:
          H_tilde, (H, C) = self.recurrent_layer(H_tilde)
      elif H is not None and C is not None:
          H = H[None, :, :]
          C = C[None, :, :]
          H_tilde, (H, C) = self.recurrent_layer(H_tilde, (H, C))
      else:
          raise ValueError("Invalid hidden state and cell matrices.")
      H_tilde = H_tilde.squeeze()
      H = H.squeeze()
      C = C.squeeze()
      return H_tilde, H, C
  
imports: import torch
  from torch.nn import LSTM
  from torch_geometric.nn import GatedGraphConv
label_desc: Use image node_id 3 for calling the DyGrEncoder obj's underlying member method code with example usage: obj.forward(X, edge_index, edge_weight, H, C) and returns: H_tilde,  H,  C