I have the following code block:
import pennylane as qml
def ansatz(params):
“”"VQC ansatz using single-qubits unitaries and entangling gates
Args:
params : shape (`depth` + 1, `n_wires`, 3) tensor containing trainable parameters
"""
j = np.random.randint(3)
k = np.random.randint(n_wires)
for i in range(n_wires):
#qml.Rot(params[0, k, 0], params[0, k, 1], params[0, k, 2], wires=i)
qml.exp(qml.PauliY(i), 0.5j*params[0, i, 1])
qml.exp(qml.PauliZ(i), 0.5j*params[0, i, 2])
for s in pset:
qml.CZ(wires=s)
Later I got
TypeError: must be real number, not ArrayBox
Does anyone notice any problem with calling
qml.exp(qml.PauliY(i), 0.5j*params[0, i, 1])
Thanks.
Hi @David_Liu, welcome to the Forum!
I’m currently unable to reproduce your error. I’m also puzzled about your code. Maybe this community demo on VQC can help you.
Some additional suggestions:
- It’s important not to define ‘j’ as a number because ‘j’ is used as the imaginary unit in Python.
- You haven’t defined pset anywhere so this raises an error
- Make sure you are using the latest version of PennyLane (v0.26). You can check this by using qml.about()
- If you want this to be a qnode (which I think you do) then remember that you will need a device and you will need to decorate your circuit with @qml.qnode(dev). I encourage you to watch this tutorial video to learn how to create your first quantum circuit.
.
Please feel free to clarify your question or let me know if this helps!
Thank you much. Thank you much. (at least 20 characters)
No problem David! I’m glad you’re learning how to use PennyLane