given an ansatz:
def ansatz(case, para):
if case == 1:
qml.RX(para[0], wires=[0])
qml.RY(para[1], wires=[1])
qml.CNOT(wires=[0,1])
elif case == 2:
qml.RY(para[0], wires=[0])
qml.RX(para[1], wires=[1])
qml.CNOT(wires=[0,1])
elif case == 3:
qml.RY(para[0], wires=[0])
qml.RY(para[1], wires=[1])
qml.CNOT(wires=[0,1])
elif case == 4:
qml.RX(para[0], wires=[0])
qml.RX(para[1], wires=[1])
qml.CNOT(wires=[0,1])
wire = 4
dev = qml.device("default.qubit", wires=wire)
@qml.qnode(dev)
def my_model():
ops = [ansatz(1, [1,2]), ansatz(2, [1,2]), ansatz(3, [1,2]), ansatz(4, [1,2])]
qml.Select(ops, control=[2,3])
return qml.expval(qml.PauliZ(1))
print(qml.draw(my_model, expansion_strategy='device')())
the result is:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/tmp/ipykernel_24286/534970757.py in <module>
25 qml.Select(ops, control=[2,3])
26 return qml.expval(qml.PauliZ(1))
---> 27 print(qml.draw(my_model, expansion_strategy='device')())
/opt/conda/lib/python3.9/site-packages/pennylane/drawer/draw.py in wrapper(*args, **kwargs)
245 try:
246 qnode.expansion_strategy = expansion_strategy or original_expansion_strategy
--> 247 tapes = qnode.construct(args, kwargs)
248 finally:
249 qnode.expansion_strategy = original_expansion_strategy
/opt/conda/lib/python3.9/site-packages/pennylane/qnode.py in construct(self, args, kwargs)
870 self.interface = qml.math.get_interface(*args, *list(kwargs.values()))
871
--> 872 self._tape = make_qscript(self.func, shots)(*args, **kwargs)
873 self._qfunc_output = self.tape._qfunc_output
874
/opt/conda/lib/python3.9/site-packages/pennylane/tape/qscript.py in wrapper(*args, **kwargs)
1529 def wrapper(*args, **kwargs):
1530 with AnnotatedQueue() as q:
-> 1531 result = fn(*args, **kwargs)
1532
1533 qscript = QuantumScript.from_queue(q, shots)
/tmp/ipykernel_24286/534970757.py in my_model()
23 def my_model():
24 ops = [ansatz(1, [1,2]), ansatz(2, [1,2]), ansatz(3, [1,2]), ansatz(4, [1,2])]
---> 25 qml.Select(ops, control=[2,3])
26 return qml.expval(qml.PauliZ(1))
27 print(qml.draw(my_model, expansion_strategy='device')())
/opt/conda/lib/python3.9/site-packages/pennylane/templates/subroutines/select.py in __init__(self, ops, control, id)
84 )
85
---> 86 if any(
87 control_wire in qml.wires.Wires.all_wires([op.wires for op in ops])
88 for control_wire in control
/opt/conda/lib/python3.9/site-packages/pennylane/templates/subroutines/select.py in <genexpr>(.0)
85
86 if any(
---> 87 control_wire in qml.wires.Wires.all_wires([op.wires for op in ops])
88 for control_wire in control
89 ):
/opt/conda/lib/python3.9/site-packages/pennylane/templates/subroutines/select.py in <listcomp>(.0)
85
86 if any(
---> 87 control_wire in qml.wires.Wires.all_wires([op.wires for op in ops])
88 for control_wire in control
89 ):
AttributeError: 'NoneType' object has no attribute 'wires'