def _RsqrtGradGrad(op, grad): """Returns backprop gradient for f(a,b) = -0.5 * b * conj(a)^3.""" a = op.inputs[0] # a = x^{-1/2} b = op.inputs[1] # backprop gradient for a with ops.control_dependencies([grad.op]): ca = math_ops.conj(a) cg = math_ops.conj(grad) grad_a = -1.5 * cg * b * math_ops.square(ca) # pylint: disable=protected-access grad_b = gen_math_ops._rsqrt_grad(ca, grad) return grad_a, grad_b
def _RsqrtGradGrad(op, grad): """Returns backprop gradient for f(a,b) = -0.5 * b * conj(a)^3.""" a = op.inputs[0] # a = x^{-1/2} b = op.inputs[1] # backprop gradient for a with ops.control_dependencies([grad]): ca = math_ops.conj(a) cg = math_ops.conj(grad) grad_a = -1.5 * cg * b * math_ops.square(ca) # pylint: disable=protected-access grad_b = gen_math_ops._rsqrt_grad(ca, grad) return grad_a, grad_b
def _RsqrtGrad(op, grad): """Returns -0.5 * grad * conj(y)^3.""" y = op.outputs[0] # y = x^(-1/2) return gen_math_ops._rsqrt_grad(y, grad)
def _RsqrtGrad(op, grad): """Returns -0.5 * grad * conj(y)^3.""" y = op.outputs[0] # y = x^(-1/2) # pylint: disable=protected-access return gen_math_ops._rsqrt_grad(y, grad)
def _RsqrtGrad(op, grad): y = op.outputs[0] # y = x^(-1/2) return gen_math_ops._rsqrt_grad(y, grad)