Hi everybody.
Let’s consider that i have complex data. how can i encode them with MÖttÖnen preparation method? How can i define angles for complex data? is it possible to do it or not?
Many thanks for your useful answers in advance.
Hi everybody.
Let’s consider that i have complex data. how can i encode them with MÖttÖnen preparation method? How can i define angles for complex data? is it possible to do it or not?
Many thanks for your useful answers in advance.
Hi @sassan_moradi!
The input to MottonenStatePreparation applied to N
wires should be a complex, normalized vector of length 2 ** N
. For example, if you have two qubits then you can encode a 4-dimensional complex datapoint.
Here is an example:
import pennylane as qml
from pennylane import numpy as np
dev = qml.device("default.qubit", wires=2)
dat = np.random.random(4) + 1j * np.random.random(4)
dat /= np.sqrt(np.sum(np.abs(dat) ** 2))
@qml.qnode(dev)
def f(dat):
qml.templates.MottonenStatePreparation(dat, wires=range(2))
return qml.state()
dat_out = f(dat)
abs(np.vdot(dat, dat_out)) ** 2
Note that the prepared state dat_out
is the same as dat
up to a global phase.
many many thanks for your useful answer.
No problem, let us know if you have any difficulties! Thanks
i run your example. I encountered this error message:
AttributeError: module ‘pennylane’ has no attribute ‘state’.
This may be a case of upgrading PennyLane, try running
pip install pennylane --upgrade
many thanks again, Tom. It works “pip install pennylane --upgrade”.