code: def __init__(
      self,
      input_dim: int,
      output_dim: int,
      num_history: int = 1,
      hidden_units: Optional[List[int]] = None,
      *,
      mapping_type: str = "basic",
      bias: bool = True,
      activation: str = "ReLU",
      batch_norm: bool = False,
      dropout: float = 0.0,
      rank: Optional[int] = None,
      rank_ratio: Optional[float] = None,
      encoder_settings: Optional[Dict[str, MLEncoderSettings]] = None,
      global_encoder_settings: Optional[MLGlobalEncoderSettings] = None,
  ):
      super().__init__(
          encoder_settings=encoder_settings,
          global_encoder_settings=global_encoder_settings,
      )
      if self.encoder is not None:
          input_dim += self.encoder.dim_increment
      input_dim *= num_history
      if hidden_units is None:
          dim = max(32, min(1024, 2 * input_dim))
          hidden_units = 2 * [dim]
      mapping_base = mapping_dict[mapping_type]
      blocks: List[nn.Module] = []
      for hidden_unit in hidden_units:
          mapping = safe_execute(
              mapping_base,
              dict(
                  in_dim=input_dim,
                  out_dim=hidden_unit,
                  bias=bias,
                  activation=activation,
                  batch_norm=batch_norm,
                  dropout=dropout,
                  rank=rank,
                  rank_ratio=rank_ratio,
              ),
          )
          blocks.append(mapping)
          input_dim = hidden_unit
      blocks.append(nn.Linear(input_dim, output_dim, bias))
      self.hidden_units = hidden_units
      self.net = nn.Sequential(*blocks)
  
file_path: carefree-learn/cflearn/models/ml/fcnn.py
imports: import torch.nn
  from torch import Tensor
  from typing import Dict
  from typing import List
  from typing import Optional
  from cftool.misc import safe_execute
  from .base import MLModel
  from ...schema import MLEncoderSettings
  from ...schema import MLGlobalEncoderSettings
  from ...modules.blocks import mapping_dict
label_desc: Use image node_id 1 to create a new FCNN object from inherited base classes: MLModel with example: obj = FCNN(input_dim, output_dim, num_history, hidden_units)