qiskit.circuit.library.pauli_feature_map
qiskit.circuit.library.pauli_feature_map(feature_dimension, reps=2, entanglement='full', alpha=2.0, paulis=None, data_map_func=None, parameter_prefix='x', insert_barriers=False, name='PauliFeatureMap')
Der Pauli-Expansionskreislauf.
Die Pauli-Expansionsschaltung ist eine Datenkodierungsschaltung, die die Eingangsdaten , wobei die feature_dimension ist, wie folgt transformiert
Dabei ist ein Satz von Qubit-Indizes, der die Verbindungen in der Feature-Map beschreibt, ist ein Satz, der alle diese Indexsätze enthält, und . Standardmäßig ist das Daten-Mapping
Die möglichen Verbindungen können mit den Argumenten entanglement und paulis festgelegt werden. Zum Beispiel können wir für Ein-Qubit-Rotationen und Zwei-Qubit-Wechselwirkungen zwischen allen Qubit-Paaren festlegen:
circuit = pauli_feature_map(..., paulis=["Z", "YY"], entanglement="full")die Blöcke der Form
┌───┐┌─────────────┐┌──────────┐ ┌───────────┐
┤ H ├┤ P(2.0*x[0]) ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
├───┤├─────────────┤├──────────┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───────────┤
┤ H ├┤ P(2.0*x[1]) ├┤ RX(pi/2) ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ RX(-pi/2) ├
└───┘└─────────────┘└──────────┘└───┘└────────────────────────────────┘└───┘└───────────┘Die Schaltung enthält reps Wiederholungen dieser Transformation.
Bitte beachten Sie z_feature_map() für den Fall von Ein-Qubit-Pauli- Rotationen und auf zz_feature_map() für die Ein- und Zwei-Qubit-Pauli- Rotationen.
Parameter
- feature_dimension (int) – Anzahl der Qubits im Schaltkreis.
- reps (int) – Die Anzahl der Wiederholungen der Evolutionsschichten.
- entanglement (str |Mapping[int, Sequence[Sequence[int]]] | Callable[[int], str |Mapping[int, Sequence[Sequence[int]]]]) – Legt die Verschränkungsstruktur fest. Es kann sich um eine Zeichenkette (
'full','linear','reverse_linear','circular'oder'sca') handeln oder um ein Wörterbuch, bei dem die Schlüssel die Anzahl der Qubits darstellen und die Werte eine Liste von Ganzzahlpaaren sind, die die Indizes der miteinander verschränkten Qubits angeben, zum Beispiel:{1: [(0,), (2,)], 2: [(0,1), (2,0)]}oder es kann ein seinCallable[[int], Union[str | Dict[...]]], um eine für eine Wiederholung spezifische Verschränkung zurückzugeben. - alpha (float) – Der Pauli-Rotationsfaktor, der mit den Pauli-Rotationen multipliziert wird.
- paulis (list[str] | None) – Eine Liste von Zeichenfolgen für die zu verwendenden Paulis. Wenn keine angegeben werden,
['Z', 'ZZ']wird verwendet. - data_map_func (Callable[[Parameter], ParameterExpression] | None) – Eine Zuordnungsfunktion für die Daten,
xdie übergeben werden kann, um die Standardzuordnung zu überschreiben. - parameter_prefix (str) – Das Präfix, das verwendet wird, wenn Standardparameter generiert werden.
- insert_barriers (bool) – In
Truediesem Fall werden zwischen den Evolutionsanweisungen und den Hadamard-Schichten Barrieren eingefügt. - name (str) – Der Name der Rennstrecke.
Rückgabe
Ein Quantenschaltkreis, der die Pauli-Feature-Map implementiert.
Rückgabetyp
Beispiele
>>> prep = pauli_feature_map(2, reps=1, paulis=["ZZ"])
>>> print(prep)
┌───┐
q_0: ┤ H ├──■──────────────────────────────────────■──
├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐
q_1: ┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
└───┘└───┘└────────────────────────────────┘└───┘>>> prep = pauli_feature_map(2, reps=1, paulis=["Z", "XX"])
>>> print(prep)
┌───┐┌─────────────┐┌───┐ ┌───┐
q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ H ├──■──────────────────────────────────────■──┤ H ├
├───┤├─────────────┤├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───┤
q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ H ├
└───┘└─────────────┘└───┘└───┘└────────────────────────────────┘└───┘└───┘>>> prep = pauli_feature_map(2, reps=1, paulis=["ZY"])
>>> print(prep)
┌───┐┌──────────┐ ┌───────────┐
q_0: ┤ H ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
├───┤└──────────┘┌─┴─┐┌────────────────────────────────┐┌─┴─┐└───────────┘
q_1: ┤ H ├────────────┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├─────────────
└───┘ └───┘└────────────────────────────────┘└───┘>>> from qiskit.circuit.library import efficient_su2
>>> prep = pauli_feature_map(3, reps=3, paulis=["Z", "YY", "ZXZ"])
>>> wavefunction = efficient_su2(3)
>>> classifier = prep.compose(wavefunction)
>>> classifier.num_parameters
27
>>> classifier.count_ops()
OrderedDict([('cx', 39), ('rx', 36), ('u1', 21), ('h', 15), ('ry', 12), ('rz', 12)])Quellenangaben:
[1] Havlicek et al. Supervised learning with quantum enhanced feature spaces, Nature 567, 209-212 (2019).