Skip to main content
IBM Quantum Platform

qiskit.circuit.library.z_feature_map

qiskit.circuit.library.z_feature_map(feature_dimension, reps=2, entanglement='full', alpha=2.0, data_map_func=None, parameter_prefix='x', insert_barriers=False, name='ZFeatureMap')

GitHub

Der Pauli-Z-Evolutionskreis erster Ordnung.

Bei 3 Qubits und 2 Wiederholungen wird die Schaltung wie folgt dargestellt:

┌───┐┌─────────────┐┌───┐┌─────────────┐
┤ H ├┤ P(2.0*x[0]) ├┤ H ├┤ P(2.0*x[0]) ├
├───┤├─────────────┤├───┤├─────────────┤
┤ H ├┤ U(2.0*x[1]) ├┤ H ├┤ P(2.0*x[1]) ├
├───┤├─────────────┤├───┤├─────────────┤
┤ H ├┤ P(2.0*x[2]) ├┤ H ├┤ P(2.0*x[2]) ├
└───┘└─────────────┘└───┘└─────────────┘

Dies ist eine Unterklasse von PauliFeatureMap wobei die Pauli-Strings als ['Z'] festgelegt sind. Infolgedessen ist die Erweiterung erster Ordnung eine Schaltung ohne Verschränkungsgatter.

Parameter

  • feature_dimension (int) – Anzahl der Qubits im Schaltkreis.
  • reps (int) – Die Anzahl der Wiederholungen der Evolutionsschichten.
  • entanglement (str |Sequence[Sequence[int]] | Callable[[int], str |Sequence[Sequence[int]]]) – Legt die Verschränkungsstruktur fest. Dies kann eine Zeichenkette ('full', 'linear', 'reverse_linear', 'circular' oder 'sca'), eine Liste von Ganzzahl-Tupeln oder eine aufrufbare Funktion sein, die bei jeder Wiederholung diese Typen zurückgibt.
  • alpha (float) – Der Pauli-Rotationsfaktor, der mit den Pauli-Rotationen multipliziert wird.
  • data_map_func (Callable[[Parameter], ParameterExpression] | None) – Eine Zuordnungsfunktion für die Daten, x die ü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 True diesem Fall werden zwischen den Evolutionsanweisungen und den Hadamard-Schichten Barrieren eingefügt.
  • name (str) – Der Name der Rennstrecke.

Rückgabe

Ein Quantenschaltkreis zur Implementierung der Z-Feature-Map.

Rückgabetyp

QuantumCircuit

Beispiele

>>> from qiskit.circuit.library import z_feature_map
>>> prep = z_feature_map(3, reps=3, insert_barriers=True)
>>> print(prep)
     ┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐
q_0: ┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├
     ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
q_1: ┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├
     ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
q_2: ┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├
     └───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘
>>> data_map = lambda x: x[0]*x[0] + 1  # note: input is an array
>>> prep = z_feature_map(3, reps=1, data_map_func=data_map)
>>> print(prep)
     ┌───┐┌──────────────────────┐
q_0: ┤ H ├┤ P(2.0*x[0]**2 + 2.0) ├
     ├───┤├──────────────────────┤
q_1: ┤ H ├┤ P(2.0*x[1]**2 + 2.0) ├
     ├───┤├──────────────────────┤
q_2: ┤ H ├┤ P(2.0*x[2]**2 + 2.0) ├
     └───┘└──────────────────────┘
>>> from qiskit.circuit.library import n_local
>>> circuit = n_local(3, "ry", "cz", reps=1).decompose()
>>> classifier = z_feature_map(3, reps=1)
>>> classifier.append(circuit, list(range(classifier.num_qubits)))
>>> print(classifier)
     ┌───┐┌─────────────┐┌──────────┐      ┌──────────┐
q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ RY(θ[0]) ├─■──■─┤ RY(θ[3]) ├────────────
     ├───┤├─────────────┤├──────────┤ │  │ └──────────┘┌──────────┐
q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ RY(θ[1]) ├─■──┼──────■──────┤ RY(θ[4]) ├
     ├───┤├─────────────┤├──────────┤    │      │      ├──────────┤
q_2: ┤ H ├┤ P(2.0*x[2]) ├┤ RY(θ[2]) ├────■──────■──────┤ RY(θ[5]) ├
     └───┘└─────────────┘└──────────┘                  └──────────┘
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.