class_docstr: The same data information shared by the Tower model and its feature generation part.
  
  Each instance could contain the following fields:
  indicator_cols: Data of indicator_cols will be fed into model as one-hot vectors.
                  List of String. Default is an empty list.
  indicator_dims: Dimensions of indicator_cols. The dimensions of the data in
                  indicator_cols should be within the range of indicator_dims.
                  List of int. Default is an empty list.
  embed_cols: Data of embed_cols will be fed into the  model as embeddings.
              List of String. Default is an empty list.
  embed_in_dims: Input dimension of the data in embed_cols. The dimensions of the data in
                 embed_cols should be within the range of embed_in_dims.
                 List of int. Default is an empty list.
  embed_out_dims: The out dimensions of embeddings. List of int. Default is an empty list.
  numerical_cols: Data of numerical_cols will be treated as continuous values
                  List of String. Default is an empty list.
  numerical_dims: dimention of numerical_cols.
  name: string
code: def get_name_list(self):
      name_list = (
          self.indicator_cols + self.embed_cols + self.numerical_cols
      )
      return name_list
  
file_path: analytics-zoo/pyzoo/zoo/examples/friesian/two_tower/model.py
imports: from zoo.pipeline.api.keras.layers import *
  from tensorflow.keras.layers import Input, Embedding, Dense, Flatten, concatenate, Lambda
  import tensorflow
label_desc: Use image node_id 3 for calling the ColumnInfoTower obj's underlying member method code with example usage: obj.get_name_list() and returns: name_list