'Correct grad = (y-p)/(p-p^2)
But if y is just 1 or 0, then this simplifies to
grad = 1/(p-1+y)
which is more numerically stable'

def approx_backward(self, req, out_grad, in_data, out_data, in_grad, aux):

    p = in_data[0].asnumpy()
    y = in_data[1].asnumpy()
    grad = ((-1.0) / ((p - self.eps_1) + y))
    self.assign(in_grad[0], req[0], mx.nd.array(grad))
