class_docstr: The Wide and Deep model used for recommendation.
  
  # Arguments
  class_num: The number of classes. Positive int.
  column_info: An instance of ColumnFeatureInfo.
  model_type: String. 'wide', 'deep' and 'wide_n_deep' are supported. Default is 'wide_n_deep'.
  hidden_layers: Units of hidden layers for the deep model.
                 Tuple of positive int. Default is (40, 20, 10).
class_docstr_tok: ["The","Wide","and","Deep","model","used","for","recommendation",".","#","Arguments","class_num",":","The","number","of","classes",".","Positive","int",".","column_info",":","An","instance","of","ColumnFeatureInfo",".","model_type",":","String",".","'wide","'",",","'deep","'","and","'wide_n_deep","'","are","supported",".","Default","is","'wide_n_deep","'",".","hidden_layers",":","Units","of","hidden","layers","for","the","deep","model",".","Tuple","of","positive","int",".","Default","is","(","40",",","20",",","10",")","."]
code: def _deep_merge(self, input_ind, input_emb, input_cont):
      embed_width = 0
      embed = []
      for i in range(0, len(self.embed_in_dims)):
          flat_select = Flatten()(Select(1, embed_width)(input_emb))
          iembed = Embedding(
              self.embed_in_dims[i] + 1,
              self.embed_out_dims[i],
              init="normal",
          )(flat_select)
          flat_embed = Flatten()(iembed)
          embed.append(flat_embed)
          embed_width = embed_width + 1
  
      has_ind = len(self.indicator_dims) > 0
      has_emd = len(self.embed_in_dims) > 0
      has_cont = len(self.continuous_cols) > 0
      if has_ind and has_emd and has_cont:
          input = [input_ind, input_emb, input_cont]
          merged_list = [input_ind] + embed + [input_cont]
      elif not has_ind and has_emd and has_cont:
          input = [input_emb, input_cont]
          merged_list = embed + [input_cont]
      elif has_ind and (not has_emd) and has_cont:
          input = [input_ind, input_cont]
          merged_list = [input_ind, input_cont]
      elif has_ind and has_emd and (not has_cont):
          input = [input_ind, input_emb]
          merged_list = [input_ind] + embed
      elif (not has_ind) and (not has_emd) and has_cont:
          input = [input_cont]
          merged_list = [input_cont]
      elif (not has_ind) and has_emd and (not has_cont):
          input = [input_emb]
          merged_list = embed
      elif has_ind and (not has_emd) and not (has_cont):
          input = [input_ind]
          merged_list = [input_ind]
      else:
          raise TypeError("Empty deep model for: %s" % self.model_type)
  
      return (input, merged_list)
  
file_path: analytics-zoo/pyzoo/zoo/models/recommendation/wide_and_deep.py
imports: import sys
  from zoo.models.common import *
  from zoo.models.recommendation import Recommender
  from zoo.common.utils import callZooFunc
  from zoo.pipeline.api.keras.layers import *
label_desc: Use image node_id 4 for calling the WideAndDeep obj's underlying member method code with example usage: obj._deep_merge(input_ind, input_emb, input_cont) and returns: input,  merged_list