code: def default_get_keras_input_layer_fn(problem_type, feature_columns):
      """Default implementation of get_input_layer_fn."""
  
      def _input_layer_fn(is_training, scope_name="Phoenix/Input"):
          with tf.compat.v1.variable_scope(scope_name):
              if problem_type != phoenix_spec_pb2.PhoenixSpec.DNN:
                  raise ValueError(
                      "Only DNN problem type is supported for keras at the "
                      "moment."
                  )
  
              # To allow running a custom evaluation where multiple batches are
              # aggregated in a single metric_fn call, we need to define the
              # batch_size based on the input_fn, but DenseFeatures does not allow
              # this.
              if any(
                  [
                      not feature_column_lib.is_feature_column_v2([fc])
                      for fc in feature_columns
                  ]
              ):
                  raise ValueError(
                      "TF1 feature columns are not supported for keras"
                  )
  
              return (
                  tf.keras.layers.DenseFeatures(
                      feature_columns,
                      name="input_layer",
                      trainable=is_training,
                  ),
                  None,
              )
  
      return _input_layer_fn
  
imports: from model_search.proto import phoenix_spec_pb2
  import tensorflow.compat.v2
  from tensorflow.python.feature_column import feature_column_lib
label_desc: Use image node_id 2 for calling a global function with example usage: default_get_keras_input_layer_fn(problem_type, feature_columns) and returns: _input_layer_fn, tf,  None