class_docstr: A data provider interface.
  
  The Provider abstract class that defines three function for Estimator related
  training that return the following:
    * An input function for training and test input functions that return
      features and label batch tensors. It is responsible for parsing the
      dataset and buffering data.
    * The feature_columns for this dataset.
    * The number of classes.
  
  For keras related training, we assume multiclass classification, and the user
  only needs to implement the following function:
    * def get_keras_input(self, batch_size):
        Args:
          batch_size - an integer holding the batch size.
  
        Returns:
          x, y, and validation_data used for keras fit
    * The feature_columns for this dataset (Please note that you need to supply
      Keras compatible feature columns.
    * The number of classes.
  
  Example of both interfaces implemented can be found in csv_data.py
class_docstr_tok: ["A","data","provider","interface",".","The","Provider","abstract","class","that","defines","three","function","for","Estimator","related","training","that","return","the","following",":","*","An","input","function","for","training","and","test","input","functions","that","return","features","and","label","batch","tensors",".","It","is","responsible","for","parsing","the","dataset","and","buffering","data",".","*","The","feature_columns","for","this","dataset",".","*","The","number","of","classes",".","For","keras","related","training",",","we","assume","multiclass","classification",",","and","the","user","only","needs","to","implement","the","following","function",":","*","def","get_keras_input","(","self",",","batch_size",")",":","Args",":","batch_size","-","an","integer","holding","the","batch","size",".","Returns",":","x",",","y",",","and","validation_data","used","for","keras","fit","*","The","feature_columns","for","this","dataset","(","Please","note","that","you","need","to","supply","Keras","compatible","feature","columns",".","*","The","number","of","classes",".","Example","of","both","interfaces","implemented","can","be","found","in","csv_data.py"]
docstr: Provides the function for converting feature Tensors to an input layer.
  
  Most users do not need to modify this function. In the typical use case,
  the user would only need to implement `get_feature_columns`, and the default
  implementation of this method would take care of converting the feature
  Tensors into the input layer accordingly. However, users who want to
  customize how they convert their feature Tensors to the input layer may
  override this method, and do not need to implement `get_feature_columns`.
  The function returned by this method will be called inside the model_fn,
  so it's okay for the returned input_layer_fn to create a Tensorflow subgraph
  with Variable ops (such as embedding weights) when it's called.
  
  For more details, see go/phx-custom-input-fn.
  
  Args:
    problem_type: A PhoenixSpec.ProblemType enum.
  
  Returns:
    A function like this:
  
    def input_layer_fn(features,
                       is_training,
                       scope_name="Phoenix/Input",
                       lengths_feature_name=None):
      with tf.variable_scope(scope_name):
        # create associated variables
        input_layer = ...
        length = ...  # if problem_type is an RNN type, Tensor, else None.
  
      return input_layer, lengths
  
  Or
    A function like the above with additional argument params. That is:
  
    def input_layer_fn(features,
                       is_training,
                       params,
                       scope_name="Phoenix/Input",
                       lengths_feature_name=None):
      with tf.variable_scope(scope_name):
        # create associated variables
        input_layer = ...
        length = ...  # if problem_type is an RNN type, Tensor, else None.
  
      return input_layer, lengths
docstr_tok: ["Provides","the","function","for","converting","feature","Tensors","to","an","input","layer",".","Most","users","do","not","need","to","modify","this","function",".","In","the","typical","use","case",",","the","user","would","only","need","to","implement","`","get_feature_columns","`",",","and","the","default","implementation","of","this","method","would","take","care","of","converting","the","feature","Tensors","into","the","input","layer","accordingly",".","However",",","users","who","want","to","customize","how","they","convert","their","feature","Tensors","to","the","input","layer","may","override","this","method",",","and","do","not","need","to","implement","`","get_feature_columns","`",".","The","function","returned","by","this","method","will","be","called","inside","the","model_fn",",","so","it","'s","okay","for","the","returned","input_layer_fn","to","create","a","Tensorflow","subgraph","with","Variable","ops","(","such","as","embedding","weights",")","when","it","'s","called",".","For","more","details",",","see","go\/phx-custom-input-fn",".","Args",":","problem_type",":","A","PhoenixSpec.ProblemType","enum",".","Returns",":","A","function","like","this",":","def","input_layer_fn","(","features",",","is_training",",","scope_name=","''","Phoenix\/Input","''",",","lengths_feature_name=None",")",":","with","tf.variable_scope","(","scope_name",")",":","#","create","associated","variables","input_layer","=","...","length","=","...","#","if","problem_type","is","an","RNN","type",",","Tensor",",","else","None",".","return","input_layer",",","lengths","Or","A","function","like","the","above","with","additional","argument","params",".","That","is",":","def","input_layer_fn","(","features",",","is_training",",","params",",","scope_name=","''","Phoenix\/Input","''",",","lengths_feature_name=None",")",":","with","tf.variable_scope","(","scope_name",")",":","#","create","associated","variables","input_layer","=","...","length","=","...","#","if","problem_type","is","an","RNN","type",",","Tensor",",","else","None",".","return","input_layer",",","lengths"]
code: def get_input_layer_fn(self, problem_type):
      """Provides the function for converting feature Tensors to an input layer.
  
      Most users do not need to modify this function. In the typical use case,
      the user would only need to implement `get_feature_columns`, and the default
      implementation of this method would take care of converting the feature
      Tensors into the input layer accordingly. However, users who want to
      customize how they convert their feature Tensors to the input layer may
      override this method, and do not need to implement `get_feature_columns`.
      The function returned by this method will be called inside the model_fn,
      so it's okay for the returned input_layer_fn to create a Tensorflow subgraph
      with Variable ops (such as embedding weights) when it's called.
  
      For more details, see go/phx-custom-input-fn.
  
      Args:
        problem_type: A PhoenixSpec.ProblemType enum.
  
      Returns:
        A function like this:
  
        def input_layer_fn(features,
                           is_training,
                           scope_name="Phoenix/Input",
                           lengths_feature_name=None):
          with tf.variable_scope(scope_name):
            # create associated variables
            input_layer = ...
            length = ...  # if problem_type is an RNN type, Tensor, else None.
  
          return input_layer, lengths
  
      Or
        A function like the above with additional argument params. That is:
  
        def input_layer_fn(features,
                           is_training,
                           params,
                           scope_name="Phoenix/Input",
                           lengths_feature_name=None):
          with tf.variable_scope(scope_name):
            # create associated variables
            input_layer = ...
            length = ...  # if problem_type is an RNN type, Tensor, else None.
  
          return input_layer, lengths
      """
      feature_columns = self.get_feature_columns()
  
      return utils.default_get_input_layer_fn(
          problem_type, feature_columns
      )
  
file_path: model_search/model_search/data/data.py
imports: import abc
  import functools
  from typing import List, Union
  from model_search import registry
  from model_search.data import utils
  from tensorflow.python.feature_column import feature_column
  from tensorflow.python.feature_column import feature_column_v2
label_desc: Use image node_id 5 for calling the Provider obj's underlying member method code with example usage: obj.get_input_layer_fn(problem_type) and returns: utils