title: Estimator with numpy array input_fn
body: <p>I am creating an estimator with numpy array to feed to model with using <code>tf.estimator.inputs.numpy_input_fn</code>. Like the following:</p>
  
  <pre><code>def input_fun(data):
      x, y = data
  
      x, y = np.reshape(x, (batch_size, -1, 1)), \
             np.reshape(y, (batch_size, -1, 1))
  
      return tf.estimator.inputs.numpy_input_fn({'x': x}, y)
  
  def forward(x, params, mode):
  
      layers = [tf.nn.rnn_cell.LSTMCell(n_neurons) for _ in range(n_layers)]
      cells = tf.nn.rnn_cell.MultiRNNCell(layers)
      outputs, state = tf.nn.dynamic_rnn(cells, x)
  
      predictions = ...
  
      return predictions
  
  def model_fn(features, labels, mode, params):
      predict = forward(features, params, mode)
  
      return tf.estimator.EstimatorSpec(predict , ...)
  
  def experiment_fn(config, params):
      return learn.Experiment(
          estimator = estimator(model_fn,...),
          train_input_fn = lambda: input_fun(train_set),
          eval_input_fn = lambda: input_fun(eval_set))
  </code></pre>
  
  <p>It throws the following:</p>
  
  <blockquote>
    <p>Traceback (most recent call last):</p>
    
    <p>File "", line 1, in 
        runfile('/Experiment.py',
    wdir='/TensorFlow')</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py",
    line 710, in runfile
        execfile(filename, namespace)</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py",
    line 101, in execfile
        exec(compile(f.read(), filename, 'exec'), namespace)</p>
    
    <p>File "/Experiment.py", line 490, in 
        hparams = params</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\learn_runner.py",
    line 218, in run
        return _execute_schedule(experiment, schedule)</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\learn_runner.py",
    line 46, in _execute_schedule
        return task()</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\experiment.py",
    line 367, in train
        hooks=self._train_monitors + extra_hooks)</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\experiment.py",
    line 807, in _call_train
        hooks=hooks)</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py",
    line 302, in train
        loss = self._train_model(input_fn, hooks, saving_listeners)</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py",
    line 711, in _train_model
        features, labels, model_fn_lib.ModeKeys.TRAIN, self.config)</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py",
    line 694, in _call_model_fn
        model_fn_results = self._model_fn(features=features, **kwargs)</p>
    
    <p>File "/Experiment.py", line 350, in model_fn
        predict = forward(features, params, mode)</p>
    
    <p>File "/Experiment.py", line 335, in forward
        dtype = tf.float32</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\ops\rnn.py",
    line 562, in dynamic_rnn
        flat_input = [ops.convert_to_tensor(input_) for input_ in flat_input]</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\ops\rnn.py",
    line 562, in 
        flat_input = [ops.convert_to_tensor(input_) for input_ in flat_input]</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py",
    line 836, in convert_to_tensor
        as_ref=False)</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py",
    line 926, in internal_convert_to_tensor
        ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py",
    line 229, in _constant_tensor_conversion_function
        return constant(v, dtype=dtype, name=name)</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py",
    line 208, in constant
        value, dtype=dtype, shape=shape, verify_shape=verify_shape))</p>
    
    <p>File
    "C:\Users\hp\Anaconda3\lib\site-packages\tensorflow\python\framework\tensor_util.py",
    line 472, in make_tensor_proto
        "supported type." % (type(values), values))</p>
    
    <p>TypeError: Failed to convert object of type &lt;class 'function'> to
    Tensor. Contents: &lt;function numpy_input_fn.&lt;locals>.input_fn at
    0x000001AB2B1DBEA0>. Consider casting elements to a supported type.</p>
  </blockquote>
  
  <p>Does anyone know why ?</p>