qml.grad¶
- class grad(func, argnum=None, method=None, h=None)[source]¶
Bases:
object
Returns the gradient as a callable function of hybrid quantum-classical functions.
qjit()
and Autograd compatible.By default, gradients are computed for arguments which contain the property
requires_grad=True
. Alternatively, theargnum
keyword argument can be specified to compute gradients for function arguments without this property, such as scalars, lists, tuples, dicts, or vanilla NumPy arrays. Settingargnum
to the index of an argument withrequires_grad=False
will raise aNonDifferentiableError
.When the output gradient function is executed, both the forward pass and the backward pass will be performed in order to compute the gradient. The value of the forward pass is available via the
forward
property.Warning
grad
is intended to be used with the Autograd interface only.Note
When used with
qjit()
, this function currently only supports the Catalyst compiler. Seecatalyst.grad()
for more details.Please see the Catalyst quickstart guide, as well as the sharp bits and debugging tips page for an overview of the differences between Catalyst and PennyLane.
- Parameters
func (function) – a plain QNode, or a Python function that contains a combination of quantum and classical nodes
argnum (int, list(int), None) – Which argument(s) to take the gradient with respect to. By default, the arguments themselves are used to determine differentiability, by examining the
requires_grad
property.method (str) –
Specifies the gradient method when used with the
qjit()
decorator. Outside ofqjit()
, this keyword argument has no effect and should not be set. In just-in-time (JIT) mode, this can be any of["auto", "fd"]
, where:"auto"
represents deferring the quantum differentiation to the method specified by the QNode, while the classical computation is differentiated using traditional auto-diff. Catalyst supports"parameter-shift"
and"adjoint"
on internal QNodes. QNodes withdiff_method="finite-diff"
are not supported with"auto"
."fd"
represents first-order finite-differences for the entire hybrid function.
h (float) – The step-size value for the finite-difference (
"fd"
) method withinqjit()
decorated functions. This value has no effect in non-compiled functions.
- Returns
The function that returns the gradient of the input function with respect to the differentiable arguments, or, if specified, the arguments in
argnum
.- Return type
function
Attributes