title: Gradient of tf.floor is None
body: <p><code>tf.floor</code> return None gradient<br>
  it means the weights before <code>floor</code> operation won't be update, right?<br>
  but I still need the gradient to update weights<br>
  Isn't it weird? sometimes we use <code>floor</code>, <code>ceil</code>... but they can't deliver gradient or this is right action<br>
  as well as <code>tf.cast</code>, the gradient return none </p>
  
  <p>Here is an issue <a href="https://github.com/tensorflow/tensorflow/issues/897" rel="nofollow noreferrer">#897</a> to discuss the gradient, but I don't understand why return None is good</p>
  
  <pre><code>numa = tf.constant(5.3)  
  res1 = numa * 2   
  res2 = tf.floor(numa *2)   
  print tf.gradients(res1, numa)
  # &lt;type 'list'&gt;: [&lt;tf.Tensor 'gradients/mul_grad/Reshape:0' shape=() dtype=float32&gt;]
  
  print tf.gradients(res2, numa)
  # None
  </code></pre>
  
  <p>Can I modify <code>math_grad.py</code> directly? need other action?<br>
  something like delete <code>math_grad.pyc</code>?</p>
  
  <pre><code>@ops.RegisterGradient("Floor")
  def _FloorGrad(_, unused_grad):
    # return [None]  # before
    return [unused_grad] # I want to modify
  </code></pre>