# qml.templates.state_preparations.ArbitraryStatePreparation¶

ArbitraryStatePreparation(weights, wires)[source]

Implements an arbitrary state preparation on the specified wires.

An arbitrary state on $$n$$ wires is parametrized by $$2^{n+1} - 2$$ independent real parameters. This templates uses Pauli word rotations to parametrize the unitary.

Example

ArbitraryStatePreparation can be used to train state preparations, for example using a circuit with some measurement observable H:

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

@qml.qnode(dev)
def vqe(weights):
qml.ArbitraryStatePreparations(weights, wires=[0, 1, 2, 3])

return qml.expval(qml.Hermitian(H, wires=[0, 1, 2, 3]))

Parameters
• weights (array[float]) – The angles of the Pauli word rotations, needs to have length $$2^(n+1) - 2$$ where $$n$$ is the number of wires the template acts upon.

• wires (Iterable or Wires) – Wires that the template acts on. Accepts an iterable of numbers or strings, or a Wires object.