Missed TensorFlow Dev Summit? Check out the video playlist. Watch recordings


View source on GitHub

Computes f(*xs) and its gradients wrt to *xs.

    f, xs, output_gradients=None, use_gradient_tape=False, name=None


  • f: Python callable to be differentiated. If f returns a scalar, this scalar will be differentiated. If f returns a tensor or list of tensors, by default a scalar will be computed by adding all their values to produce a single scalar. If desired, the tensors can be elementwise multiplied by the tensors passed as the dy keyword argument to the returned gradient function.
  • xs: Python list of parameters of f for which to differentiate. (Can also be single Tensor.)
  • output_gradients: A Tensor or list of Tensors the same size as the result ys = f(*xs) and holding the gradients computed for each y in ys. This argument is forwarded to the underlying gradient implementation (i.e., either the grad_ys argument of tf.gradients or the output_gradients argument of tf.GradientTape.gradient).
  • use_gradient_tape: Python bool indicating that tf.GradientTape should be used regardless of tf.executing_eagerly() status. Default value: False.
  • name: Python str name prefixed to ops created by this function. Default value: None (i.e., 'value_and_gradient').


  • y: y = f(*xs).
  • dydx: Gradient of y wrt each of xs.