class_docstr: An implementation of the spatial-temporal embedding block.
  For details see this paper: `"GMAN: A Graph Multi-Attention Network for Traffic Prediction."
  <https://arxiv.org/pdf/1911.08415.pdf>`_
  
  Args:
      D (int) : Dimension of output.
      bn_decay (float): Batch normalization momentum.
      steps_per_day (int): Steps to take for a day.
      use_bias (bool, optional): Whether to use bias in Fully Connected layers, default is True.
docstr: Making a forward pass of the spatial-temporal embedding.
  
  Arg types:
      * **SE** (PyTorch Float Tensor) - Spatial embedding, with shape (num_nodes, D).
      * **TE** (Pytorch Float Tensor) - Temporal embedding, with shape (batch_size, num_his + num_pred, 2).(dayofweek, timeofday)
      * **T** (int) - Number of time steps in one day.
  
  Return types:
      * **output** (PyTorch Float Tensor) - Spatial-temporal embedding, with shape (batch_size, num_his + num_pred, num_nodes, D).
docstr_tok: ["Making","a","forward","pass","of","the","spatial-temporal","embedding",".","Arg","types",":","*","*","*","SE","*","*","(","PyTorch","Float","Tensor",")","-","Spatial","embedding",",","with","shape","(","num_nodes",",","D",")",".","*","*","*","TE","*","*","(","Pytorch","Float","Tensor",")","-","Temporal","embedding",",","with","shape","(","batch_size",",","num_his","+","num_pred",",","2",")",".","(","dayofweek",",","timeofday",")","*","*","*","T","*","*","(","int",")","-","Number","of","time","steps","in","one","day",".","Return","types",":","*","*","*","output","*","*","(","PyTorch","Float","Tensor",")","-","Spatial-temporal","embedding",",","with","shape","(","batch_size",",","num_his","+","num_pred",",","num_nodes",",","D",")","."]
code: def forward(
      self, SE: torch.FloatTensor, TE: torch.FloatTensor, T: int
  ) -> torch.FloatTensor:
      """
      Making a forward pass of the spatial-temporal embedding.
  
      Arg types:
          * **SE** (PyTorch Float Tensor) - Spatial embedding, with shape (num_nodes, D).
          * **TE** (Pytorch Float Tensor) - Temporal embedding, with shape (batch_size, num_his + num_pred, 2).(dayofweek, timeofday)
          * **T** (int) - Number of time steps in one day.
  
      Return types:
          * **output** (PyTorch Float Tensor) - Spatial-temporal embedding, with shape (batch_size, num_his + num_pred, num_nodes, D).
      """
      SE = SE.unsqueeze(0).unsqueeze(0)
      SE = self._fully_connected_se(SE)
      dayofweek = torch.empty(TE.shape[0], TE.shape[1], 7).to(SE.device)
      timeofday = torch.empty(TE.shape[0], TE.shape[1], T).to(SE.device)
      for i in range(TE.shape[0]):
          dayofweek[i] = F.one_hot(TE[..., 0][i].to(torch.int64) % 7, 7)
      for j in range(TE.shape[0]):
          timeofday[j] = F.one_hot(TE[..., 1][j].to(torch.int64) % T, T)
      TE = torch.cat((dayofweek, timeofday), dim=-1)
      TE = TE.unsqueeze(dim=2)
      TE = self._fully_connected_te(TE)
      del dayofweek, timeofday
      return SE + TE
  
imports: import math
  from typing import Union, Callable, Optional
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 2 for calling the SpatioTemporalEmbedding obj's underlying member method code with example usage: obj.forward(SE, TE, T) and returns: unknown