parameters: (op, *dy)
docstring: Computes the gradient of an EagerPyFunc.
docstring_summary: Computes the gradient of an EagerPyFunc.
docstring_tokens: Computes the gradient of an EagerPyFunc .
function: def _EagerPyFuncGrad(op, *dy):
    """Computes the gradient of an EagerPyFunc."""
  
    token = op.get_attr("token")
  
    def eagerly_executed_grad(*dy):
      tape, eager_inputs, eager_outputs = tape_cache.pop(compat.as_bytes(token))
      return tape.gradient(eager_outputs, eager_inputs, output_gradients=dy)
  
    with ops.control_dependencies(op.outputs):
      return _internal_py_func(
          func=eagerly_executed_grad,
          inp=dy,
          Tout=[tensor.dtype for tensor in op.inputs],
          eager=True,
          is_grad_func=True)
function_tokens: def _EagerPyFuncGrad ( op , * dy ) : token = op . get_attr ( "token" ) def eagerly_executed_grad ( * dy ) : tape , eager_inputs , eager_outputs = tape_cache . pop ( compat . as_bytes ( token ) ) return tape . gradient ( eager_outputs , eager_inputs , output_gradients = dy ) with ops . control_dependencies ( op . outputs ) : return _internal_py_func ( func = eagerly_executed_grad , inp = dy , Tout = [ tensor . dtype for tensor in op . inputs ] , eager = True , is_grad_func = True )