def tensor_to_arraybox(x, *args): """Convert a :class:`~.tensor` to an Autograd ``ArrayBox``. Args: x (array_like): Any data structure in any form that can be converted to an array. This includes lists, lists of tuples, tuples, tuples of tuples, tuples of lists and ndarrays. Returns: autograd.numpy.numpy_boxes.ArrayBox: Autograd ArrayBox instance of the array Raises: NonDifferentiableError: if the provided tensor is non-differentiable """ if isinstance(x, tensor): if x.requires_grad: return ArrayBox(x, *args) raise NonDifferentiableError( f"{x} is non-differentiable. Set the requires_grad attribute to True." ) return ArrayBox(x, *args) Box.type_mappings[tensor] = tensor_to_arraybox VSpace.mappings[tensor] = lambda x: ComplexArrayVSpace(x) if onp.iscomplexobj( x) else ArrayVSpace(x)
:class:`~.tensor` using Autograd.""" def tensor_to_arraybox(x, *args): """Convert a :class:`~.tensor` to an Autograd ``ArrayBox``. Args: x (array_like): Any data structure in any form that can be converted to an array. This includes lists, lists of tuples, tuples, tuples of tuples, tuples of lists and ndarrays. Returns: autograd.numpy.numpy_boxes.ArrayBox: Autograd ArrayBox instance of the array Raises: NonDifferentiableError: if the provided tensor is non-differentiable """ if isinstance(x, tensor): if x.requires_grad: return ArrayBox(x, *args) raise NonDifferentiableError( "{} is non-differentiable. Set the requires_grad attribute to True.".format(x) ) return ArrayBox(x, *args) Box.type_mappings[tensor] = tensor_to_arraybox VSpace.mappings[tensor] = lambda x: ComplexArrayVSpace(x) if onp.iscomplexobj(x) else ArrayVSpace(x)