qml.numpy.tensor_wrapper¶
- class tensor_wrapper(obj)[source]¶
Bases:
Decorator that wraps callable objects and classes so that they both accept a
requires_gradkeyword argument, as well as returning a PennyLanetensor.Only if the decorated object returns an
ndarrayis the output converted to atensor; this avoids superfluous conversion of scalars and other native-Python types.Note
This wrapper does not enable autodifferentiation of the wrapped function, it merely adds support for
tensoroutput.- Parameters:
obj – a callable object or class
Example
By default, the
onesfunction provided by Autograd constructs standardndarrayobjects, and does not permit arequires_gradargument:>>> from autograd.numpy import ones >>> ones([2, 2]) array([[1., 1.], [1., 1.]]) >>> ones([2, 2], requires_grad=True) Traceback (most recent call last): ... TypeError: ones() got an unexpected keyword argument 'requires_grad'
tensor_wrapperboth enables construction oftensorobjects, while also converting the output.>>> from pennylane import numpy as np >>> ones = np.tensor_wrapper(ones) >>> ones([2, 2], requires_grad=True) tensor([[1., 1.], [1., 1.]], requires_grad=True)