class_docstr: An implementation of GMAN.
  For details see this paper: `"GMAN: A Graph Multi-Attention Network for Traffic Prediction."
  <https://arxiv.org/pdf/1911.08415.pdf>`_
  
  Args:
      L (int) : Number of STAtt blocks in the encoder/decoder.
      K (int) : Number of attention heads.
      d (int) : Dimension of each attention head outputs.
      num_his (int): Number of history steps.
      bn_decay (float): Batch normalization momentum.
      steps_per_day (int): Number of steps in a day.
      use_bias (bool): Whether to use bias in Fully Connected layers.
      mask (bool): Whether to mask attention score in temporal attention.
code: def __init__(
      self,
      L: int,
      K: int,
      d: int,
      num_his: int,
      bn_decay: float,
      steps_per_day: int,
      use_bias: bool,
      mask: bool,
  ):
      super(GMAN, self).__init__()
      D = K * d
      self._num_his = num_his
      self._steps_per_day = steps_per_day
      self._st_embedding = SpatioTemporalEmbedding(
          D, bn_decay, steps_per_day, use_bias
      )
      self._st_att_block1 = nn.ModuleList(
          [
              SpatioTemporalAttention(K, d, bn_decay, mask)
              for _ in range(L)
          ]
      )
      self._st_att_block2 = nn.ModuleList(
          [
              SpatioTemporalAttention(K, d, bn_decay, mask)
              for _ in range(L)
          ]
      )
      self._transform_attention = TransformAttention(K, d, bn_decay)
      self._fully_connected_1 = FullyConnected(
          input_dims=[1, D],
          units=[D, D],
          activations=[F.relu, None],
          bn_decay=bn_decay,
      )
      self._fully_connected_2 = FullyConnected(
          input_dims=[D, D],
          units=[D, 1],
          activations=[F.relu, None],
          bn_decay=bn_decay,
      )
  
imports: import math
  from typing import Union, Callable, Optional
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new GMAN object from inherited base classes: nn with example: obj = GMAN(L, K, d, num_his, bn_decay, steps_per_day, use_bias, mask)