title: Converting Tensor to np.array using K.eval() in Keras returns InvalidArgumentError
body: <p>This is to define a custom loss function in Keras. The code is as follows:</p>
  
  <pre><code>from keras import backend as K
  from keras.models import Sequential
  from keras.layers import Dense
  from keras.callbacks import EarlyStopping
  from keras.optimizers import Adam
  
  def custom_loss_function(y_true, y_pred):
      a_numpy_y_true_array = K.eval(y_true)
      a_numpy_y_pred_array = K.eval(y_pred)
  
      # some million dollar worth custom loss that needs numpy arrays to be added here...
  
      return K.mean(K.binary_crossentropy(y_true, y_pred), axis=-1)
  
  
  def build_model():
      model= Sequential()
      model.add(Dense(16, input_shape=(701, ), activation='relu'))
      model.add(Dense(16, activation='relu'))
      model.add(Dense(1, activation='sigmoid'))
      model.compile(loss=custom_loss_function, optimizer=Adam(lr=0.005), metrics=['accuracy'])  
      return model
  
  model = build_model()
  early_stop = EarlyStopping(monitor="val_loss", patience=1) 
  model.fit(kpca_X, y, epochs=50, validation_split=0.2, callbacks=[early_stop], verbose=False)
  </code></pre>
  
  <p>The above code returns following error: </p>
  
  <pre><code>---------------------------------------------------------------------------
  InvalidArgumentError                      Traceback (most recent call last)
  D:\milind.dalvi\personal\_python\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args)
     1326     try:
  -&gt; 1327       return fn(*args)
     1328     except errors.OpError as e:
  
  D:\milind.dalvi\personal\_python\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata)
     1305                                    feed_dict, fetch_list, target_list,
  -&gt; 1306                                    status, run_metadata)
     1307 
  
  D:\milind.dalvi\personal\_python\Anaconda3\lib\contextlib.py in __exit__(self, type, value, traceback)
       88             try:
  ---&gt; 89                 next(self.gen)
       90             except StopIteration:
  
  D:\milind.dalvi\personal\_python\Anaconda3\lib\site-packages\tensorflow\python\framework\errors_impl.py in raise_exception_on_not_ok_status()
      465           compat.as_text(pywrap_tensorflow.TF_Message(status)),
  --&gt; 466           pywrap_tensorflow.TF_GetCode(status))
      467   finally:
  
  InvalidArgumentError: You must feed a value for placeholder tensor 'dense_84_target' with dtype float and shape [?,?]
       [[Node: dense_84_target = Placeholder[dtype=DT_FLOAT, shape=[?,?], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
  </code></pre>
  
  <p>So anybody knows how we could convert <code>y_true</code> and <code>y_pred</code> which is <code>Tensor("dense_84_target:0", shape=(?, ?), dtype=float32)</code> into numpy array</p>
  
  <p><strong>EDIT:</strong>
  <strong>--------------------------------------------------------</strong></p>
  
  <p>Basically what I expect to write in loss function is something as follows:</p>
  
  <pre><code>def custom_loss_function(y_true, y_pred):
  
      classifieds = []
      for actual, predicted in zip(y_true, y_pred):
          if predicted == 1:
              classifieds.append(actual)
      classification_score = abs(classifieds.count(0) - classifieds.count(1))
  
      return SOME_MAGIC_FUNCTION_TO_CONVERT_INT_TO_TENSOR(classification_score)
  </code></pre>