title: Cost function always returning zero for a binary classification in tensorflow
body: <p>I have written the following binary classification program in tensorflow that is buggy. The cost is returning to be zero all the time no matter what the input is. I am trying to debug a larger program which is not learning anything from the data. I have narrowed down at least one bug to the cost function always returning zero. The given program is using some random inputs and is having the same problem. <code>self.X_train</code> and <code>self.y_train</code> is originally supposed to read from files and the function <code>self.predict()</code> has more layers forming a feedforward neural network.</p>
  
  <pre><code>import numpy as np
  import tensorflow as tf
  
  class annClassifier():
  
      def __init__(self):
  
          with tf.variable_scope("Input"):
               self.X = tf.placeholder(tf.float32, shape=(100, 11))
  
          with tf.variable_scope("Output"):
              self.y = tf.placeholder(tf.float32, shape=(100, 1))
  
          self.X_train = np.random.rand(100, 11)
          self.y_train = np.random.randint(0,2, size=(100, 1))
  
      def predict(self):
  
          with tf.variable_scope('OutputLayer'):
              weights = tf.get_variable(name='weights',
                                        shape=[11, 1],
                                        initializer=tf.contrib.layers.xavier_initializer())
              bases = tf.get_variable(name='bases',
                                      shape=[1],
                                      initializer=tf.zeros_initializer())
              final_output = tf.matmul(self.X, weights) + bases
  
          return final_output
  
      def train(self):
  
          prediction = self.predict()
          cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=self.y))
  
          with tf.Session() as sess:
              sess.run(tf.global_variables_initializer())         
              print(sess.run(cost, feed_dict={self.X:self.X_train, self.y:self.y_train}))
  
  
  with tf.Graph().as_default():
      classifier = annClassifier()
      classifier.train()
  </code></pre>
  
  <p>If someone could please figure out what I am doing wrong in this, I can try making the same change in my original program. Thanks a lot!</p>