class_docstr: An implementation of the fully-connected layer.
  For details see this paper: `"GMAN: A Graph Multi-Attention Network for Traffic Prediction."
  <https://arxiv.org/pdf/1911.08415.pdf>`_
  
  Args:
      input_dims (int or list): Dimension(s) of input.
      units (int or list): Dimension(s) of outputs in each 2D convolution block.
      activations (Callable or list): Activation function(s).
      bn_decay (float, optional): Batch normalization momentum, default is None.
      use_bias (bool, optional): Whether to use bias, default is True.
code: def __init__(
      self,
      input_dims: Union[int, list],
      units: Union[int, list],
      activations: Union[
          Callable[[torch.FloatTensor], torch.FloatTensor], list
      ],
      bn_decay: float,
      use_bias: bool = True,
  ):
      super(FullyConnected, self).__init__()
      if isinstance(units, int):
          units = [units]
          input_dims = [input_dims]
          activations = [activations]
      assert type(units) == list
      self._conv2ds = nn.ModuleList(
          [
              Conv2D(
                  input_dims=input_dim,
                  output_dims=num_unit,
                  kernel_size=[1, 1],
                  stride=[1, 1],
                  use_bias=use_bias,
                  activation=activation,
                  bn_decay=bn_decay,
              )
              for input_dim, num_unit, activation in zip(
                  input_dims, units, activations
              )
          ]
      )
  
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 FullyConnected object from inherited base classes: nn with example: obj = FullyConnected(input_dims, units, activations, bn_decay, use_bias)