class_docstr: An implementation of the Adaptive Graph Convolutional Recurrent Unit.
  For details see: `"Adaptive Graph Convolutional Recurrent Network
  for Traffic Forecasting" <https://arxiv.org/abs/2007.02842>`_
  Args:
      number_of_nodes (int): Number of vertices.
      in_channels (int): Number of input features.
      out_channels (int): Number of output features.
      K (int): Filter size :math:`K`.
      embedding_dimensions (int): Number of node embedding dimensions.
docstr: Making a forward pass.
  Arg types:
      * **X** (PyTorch Float Tensor) - Node feature matrix.
      * **E** (PyTorch Float Tensor) - Node embedding matrix.
      * **H** (PyTorch Float Tensor) - Node hidden state matrix. Default is None.
  Return types:
      * **H** (PyTorch Float Tensor) - Hidden state matrix for all nodes.
docstr_tok: ["Making","a","forward","pass",".","Arg","types",":","*","*","*","X","*","*","(","PyTorch","Float","Tensor",")","-","Node","feature","matrix",".","*","*","*","E","*","*","(","PyTorch","Float","Tensor",")","-","Node","embedding","matrix",".","*","*","*","H","*","*","(","PyTorch","Float","Tensor",")","-","Node","hidden","state","matrix",".","Default","is","None",".","Return","types",":","*","*","*","H","*","*","(","PyTorch","Float","Tensor",")","-","Hidden","state","matrix","for","all","nodes","."]
code: def forward(
      self,
      X: torch.FloatTensor,
      E: torch.FloatTensor,
      H: torch.FloatTensor = None,
  ) -> torch.FloatTensor:
      r"""Making a forward pass.
      Arg types:
          * **X** (PyTorch Float Tensor) - Node feature matrix.
          * **E** (PyTorch Float Tensor) - Node embedding matrix.
          * **H** (PyTorch Float Tensor) - Node hidden state matrix. Default is None.
      Return types:
          * **H** (PyTorch Float Tensor) - Hidden state matrix for all nodes.
      """
      H = self._set_hidden_state(X, H)
      X_H = torch.cat((X, H), dim=-1)
      Z_R = torch.sigmoid(self._gate(X_H, E))
      Z, R = torch.split(Z_R, self.out_channels, dim=-1)
      C = torch.cat((X, Z * H), dim=-1)
      HC = torch.tanh(self._update(C, E))
      H = R * H + (1 - R) * HC
      return H
  
file_path: pytorch_geometric_temporal/torch_geometric_temporal/nn/recurrent/agcrn.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  from torch_geometric.nn.inits import glorot, zeros
label_desc: Use image node_id 4 for calling the AGCRN obj's underlying member method code with example usage: obj.forward(X, E, H) and returns: H