import pennylane as qml
import numpy as np
class MyRX(qml.operation.Operation):
num_params = 1
num_wires = 1
par_domain = "R"
is_composable_rotation = True
basis = "X"
grad_method = "F"
@classmethod
def _matrix(cls, *params):
return qml.RX._matrix(*params)
dev = qml.device('lightning.qubit', wires=3)
dev.operations.add("MyRX")
@qml.qnode(dev, diff_method='best')
def circuit(x):
MyRX(x, wires=1)
return qml.expval(qml.PauliZ(1))
par = qml.numpy.array(0.3)
qml.grad(circuit)(par)
Traceback (most recent call last):
.
.
qml.grad(circuit)(par)
File "\pennylane\_grad.py", line 101, in __call__
grad_value, ans = self._get_grad_fn(args)(*args, **kwargs)
File "\autograd\wrap_util.py", line 20, in nary_f
return unary_operator(unary_f, x, *nary_op_args, **nary_op_kwargs)
File "\pennylane\_grad.py", line 118, in _grad_with_forward
vjp, ans = _make_vjp(fun, x)
File "\autograd\core.py", line 10, in make_vjp
end_value, end_node = trace(start_node, fun, x)
File "\autograd\tracer.py", line 10, in trace
end_box = fun(start_box)
File "\autograd\wrap_util.py", line 15, in unary_f
return fun(*subargs, **kwargs)
File "\pennylane\qnode.py", line 602, in __call__
res = self.qtape.execute(device=self.device)
File "\pennylane\tape\tape.py", line 1277, in execute
return self._execute(params, device=device)
File "\autograd\tracer.py", line 44, in f_wrapped
ans = f_wrapped(*argvals, **kwargs)
File "\autograd\tracer.py", line 48, in f_wrapped
return f_raw(*args, **kwargs)
File "\pennylane\interfaces\autograd.py", line 165, in _execute
res = self.execute_device(params, device=device)
File "\pennylane\tape\tape.py", line 1308, in execute_device
res = device.execute(self)
File "\pennylane\_qubit_device.py", line 194, in execute
self.apply(circuit.operations, rotations=circuit.diagonalizing_gates, **kwargs)
File "\pennylane_lightning\lightning_qubit.py", line 112, in apply
self._pre_rotated_state = self.apply_lightning(self._state, operations)
File "\pennylane_lightning\lightning_qubit.py", line 140, in apply_lightning
apply(state_vector, op_names, op_wires, op_inverse, op_param)
IndexError: invalid unordered_map<K, T> key