class_docstr: An implementation THAT SUPPORTS BATCHES of the Attention Temporal Graph Convolutional Cell.
  For details see this paper: `"A3T-GCN: Attention Temporal Graph Convolutional
  Network for Traffic Forecasting." <https://arxiv.org/abs/2006.11583>`_
  
  Args:
      in_channels (int): Number of input features.
      out_channels (int): Number of output features.
      periods (int): Number of time periods.
      improved (bool): Stronger self loops (default :obj:`False`).
      cached (bool): Caching the message weights (default :obj:`False`).
      add_self_loops (bool): Adding self-loops for smoothing (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 for T time periods.
      * **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.
  
  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","for","T","time","periods",".","*","*","*","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",".","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,
  ) -> 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 for T time periods.
          * **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.
  
      Return types:
          * **H** (PyTorch Float Tensor): Hidden state matrix for all nodes.
      """
      H_accum = 0
      probs = torch.nn.functional.softmax(self._attention, dim=0)
      for period in range(self.periods):
          H_accum = H_accum + probs[period] * self._base_tgcn(
              X[:, :, :, period], edge_index, edge_weight, H
          )  # ([32, 207, 32]
  
      return H_accum
  
file_path: pytorch_geometric_temporal/torch_geometric_temporal/nn/recurrent/attentiontemporalgcn.py
imports: import torch
  from .temporalgcn import TGCN
  from .temporalgcn import TGCN2
  from torch_geometric.nn import GCNConv
label_desc: Use image node_id 3 for calling the A3TGCN2 obj's underlying member method code with example usage: obj.forward(X, edge_index, edge_weight, H) and returns: H_accum