class_docstr: The MultiLayerFC module implements multi-layer perceptrons with ReLU as non-linear activation     functions. Each layer is often referred as a *fully-connected layer*.
  
  Parameters
  ----------
  in_tensor: Tensorflow tensor
      An input tensor with shape **[*, feature dimensionality]**
  dims: list
      Specify the *feature size* of each layer's outputs. For example, setting **dims=[512, 258, 128]** to create         three fully-connected layers with output shape **[*, 512]**, **[*, 256]**, and **[*, 128]**, respectively.
  relu_in: bool, optional
      Whether or not to add ReLU to the input tensor.
  relu_mid: bool, optional
      Whether or not to add ReLU to the outputs of intermediate layers.
  relu_out: bool, optional
      Whether or not to add ReLU to the final output tensor.
  dropout_in: float, optional
      Dropout rate for the input tensor. If *None*, no dropout is used for the input tensor.
  dropout_mid: float, optional
      Dropout rate for the outputs of intermediate layers. If *None*, no dropout is used for the intermediate outputs.
  dropout_out: float, optional
      Dropout rate for the outputs of the final layer. If *None*, no dropout is used for the final outputs.
  bias_in: bool, optional
      Whether or not to add bias to the input tensor.
  bias_mid: bool, optional
      Whether or not to add bias to the outputs of intermediate layers.
  bias_out: bool, optional
      Whether or not to add bias to the final output tensor.
  batch_norm: bool, optional
      Whether or not to add batch normalization [1]_ to each layer's outputs.
  train: bool, optionl
      An indicator for training or servining phase.
  l2_reg: float, optional
      Weight for L2 regularization, i.e., weight decay.
  scope: str, optional
      Scope for module variables.
  reuse: bool, optional
      Whether or not to reuse module variables.
  
  References
  ----------
  .. [1] Ioffe, S. and Szegedy, C., 2015, June. Batch normalization: Accelerating deep network training by reducing internal         covariate shift. In International Conference on Machine Learning (pp. 448-456).
code: def __init__(
      self,
      in_tensor,
      dims,
      relu_in=False,
      relu_mid=True,
      relu_out=False,
      dropout_in=None,
      dropout_mid=None,
      dropout_out=None,
      bias_in=True,
      bias_mid=True,
      bias_out=True,
      batch_norm=False,
      train=True,
      l2_reg=None,
      scope=None,
      reuse=False,
  ):
      assert dims is not None, "dims cannot be None"
      assert in_tensor is not None, "in_tensor cannot be None"
      self._in_tensor = in_tensor
      self._dims = dims
      self._relu_in = relu_in
      self._relu_mid = relu_mid
      self._relu_out = relu_out
  
      if train:
          self._dropout_in = dropout_in
          self._dropout_mid = dropout_mid
          self._dropout_out = dropout_out
      else:
          self._dropout_in = None
          self._dropout_mid = None
          self._dropout_out = None
  
      self._batch_norm = batch_norm
      self._bias_in = bias_in
      self._bias_mid = bias_mid
      self._bias_out = bias_out
  
      super(MultiLayerFC, self).__init__(
          train=train, l2_reg=l2_reg, scope=scope, reuse=reuse
      )
  
file_path: openrec/openrec/tf1/legacy/modules/extractions/multi_layer_fc.py
imports: from __future__ import print_function
  import tensorflow
  from termcolor import colored
  from openrec.tf1.legacy.modules.extractions import Extraction
label_desc: Use image node_id 1 to create a new MultiLayerFC object from inherited base classes: Extraction with example: obj = MultiLayerFC(in_tensor, dims, relu_in, relu_mid, relu_out, dropout_in, dropout_mid, dropout_out, bias_in, bias_mid, bias_out, batch_norm, train, l2_reg, scope, reuse)