def get_tf_model(self, name, features,
                   params):
    """Select model.

    Args:
      name: model name
      features: features
        candidate_subj_ids -- batch_size, num_candidate
      params: hyper-parameters

    Returns:
      logits
    """
    if name == 'membership':
      return self.model_membership(features, params)
    elif name == 'intersection' or name == 'union':
      return self.model_intersection(features, params)
    elif name == 'follow' or name == 'set_follow':
      return self.model_follow(features, params)
    elif name == 'mixture':
      return self.model_mixture(features, params)
    elif name == 'metaqa2' or name == 'metaqa3':
      num_hops = int(name[-1])
      return self.model_metaqa(
          features, params, hop=num_hops, top_k=params['intermediate_top_k'])
    elif name == 'webqsp':
      return self.model_webqsp(
          features, params, top_k=params['intermediate_top_k'])
    elif name.startswith('query2box'):
      return self.model_query2box(name, features, params)
    else:
      raise ValueError('name not recognized')
Select model.

    Args:
      name: model name
      features: features
        candidate_subj_ids -- batch_size, num_candidate
      params: hyper-parameters

    Returns:
      logits
    
language/emql/model.py