qml.BasisEmbedding¶
- BasisEmbedding = <Subroutine: BasisEmbedding>[source]¶
Encodes \(n\) binary features into a basis state of \(n\) qubits.
For example, for
features=np.array([0, 1, 0])orfeatures=2(binary 010), the quantum system will be prepared in state \(|010 \rangle\).Warning
BasisEmbeddingcalls a circuit whose architecture depends on the binary features. Thefeaturesargument is therefore not differentiable when using the template, and gradients with respect to the argument cannot be computed by PennyLane.- Parameters:
features (tensor_like or int) – Binary input of shape
(len(wires), )or integer that represents the binary input.wires (Any or Iterable[Any]) – the wire(s) that the template acts on
Example
Basis embedding encodes the binary feature vector into a basis state.
dev = qml.device('reference.qubit', wires=3) @qml.qnode(dev) def circuit(feature_vector): qml.BasisEmbedding(features=feature_vector, wires=range(3)) return qml.state() X = [1,1,1]
The resulting circuit is:
>>> print(qml.draw(circuit, level="device")(X)) 0: ──X─┤ ╭State 1: ──X─┤ ├State 2: ──X─┤ ╰State
And, the output state is:
>>> print(circuit(X)) [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j]
Thus,
[1,1,1]is mapped to \(|111 \rangle\).