# AmplitudeEmbedding for two individual qubits

Is it possible to initialize two qubits using `AmplitudeEmbedding`, but doing so for each qubit individually?

Something like this -

``````dev = qml.device("default.qubit", wires=[1, 2])

@qml.qnode(dev)
def SWAP_test(A, B):
qml.AmplitudeEmbedding([A[0],A[1]], wires=[1], normalize=True)
qml.AmplitudeEmbedding([B[0], B[1]], wires=[2], normalize=True)
return qml.probs(wires=[1])
``````

Hi @ofir.arzi!

This is a current restriction with PennyLane, in that only a single, initial state preparation routine can be used.

However, you can use the `qml.transforms.merge_amplitude_embedding` transform to merge multiple amplitude embeddings in your quantum function, as long as they act on different wires:

``````dev = qml.device('default.qubit', wires=4)

@qml.qnode(dev)
@qml.transforms.merge_amplitude_embedding
def qfunc():
qml.CNOT(wires=[0, 1])
qml.AmplitudeEmbedding([0, 1], wires=2)
qml.AmplitudeEmbedding([0, 1], wires=3)
return qml.probs(wires=[0, 1, 2, 3])
``````

Using the transformation we can join the different amplitude embeddings into a single one:

``````>>> print(qml.draw(qfunc)())
0: ──╭C───────────────────────╭┤ Probs
1: ──╰X───────────────────────├┤ Probs
2: ──╭AmplitudeEmbedding(M0)──├┤ Probs
3: ──╰AmplitudeEmbedding(M0)──╰┤ Probs
M0 = [0.+0.j 0.+0.j 0.+0.j 1.+0.j]
``````