Skip to main content
IBM Quantum Platform

PauliTwoDesign

class qiskit.circuit.library.PauliTwoDesign(num_qubits=None, reps=3, seed=None, insert_barriers=False, name='PauliTwoDesign')

GitHub

Basen: TwoLocal

Der Pauli Two-Design Ansatz.

Diese Klasse implementiert eine bestimmte Form eines 2-Design-Schaltkreises [1], der in der Literatur zum maschinellen Lernen im Quantenbereich häufig untersucht wird, beispielsweise bei der Untersuchung von „barren plateaus“ in Variationsalgorithmen [2].

Die Schaltung besteht aus abwechselnden Rotations- und Verschränkungsschichten mit einer Anfangsschicht aus „ H=RY(π/4)\sqrt{H} = RY(\pi/4) “-Gattern. Die Rotationsschichten enthalten Pauli-Rotationen eines einzelnen Qubits, wobei die Achse zufällig und gleichmäßig aus den Richtungen X, Y oder Z ausgewählt wird. Die Verschränkungsschichten bestehen aus paarweisen CZ-Gattern mit einer Gesamttiefe von 2.

Die Schaltung könnte z. B. so aussehen (beachten Sie jedoch, dass die Wahl eines anderen Saatguts zu unterschiedlichen Pauli-Drehungen führt).

     ┌─────────┐┌──────────┐       ░ ┌──────────┐       ░  ┌──────────┐
q_0: ┤ RY(π/4) ├┤ RZ(θ[0]) ├─■─────░─┤ RY(θ[4]) ├─■─────░──┤ RZ(θ[8]) ├
     ├─────────┤├──────────┤ │     ░ ├──────────┤ │     ░  ├──────────┤
q_1: ┤ RY(π/4) ├┤ RZ(θ[1]) ├─■──■──░─┤ RY(θ[5]) ├─■──■──░──┤ RX(θ[9]) ├
     ├─────────┤├──────────┤    │  ░ ├──────────┤    │  ░ ┌┴──────────┤
q_2: ┤ RY(π/4) ├┤ RX(θ[2]) ├─■──■──░─┤ RY(θ[6]) ├─■──■──░─┤ RX(θ[10]) ├
     ├─────────┤├──────────┤ │     ░ ├──────────┤ │     ░ ├───────────┤
q_3: ┤ RY(π/4) ├┤ RZ(θ[3]) ├─■─────░─┤ RX(θ[7]) ├─■─────░─┤ RY(θ[11]) ├
     └─────────┘└──────────┘       ░ └──────────┘       ░ └───────────┘

Beispiele

from qiskit.circuit.library import PauliTwoDesign
circuit = PauliTwoDesign(4, reps=2, seed=5, insert_barriers=True)
circuit.draw('mpl')
Schaltplan, der durch den vorherigen Code ausgegeben wurde.
Siehe auch

Die Funktion pauli_two_design() funktion konstruiert die gleiche Schaltung, nur schneller.

Referenzen

[1] : Nakata et al, Unitäre 2-Entwürfe aus zufälligen X- und Z-Diagonalen-Unitariern.

arXiv:1502.07514

[2] : McClean et al., Unfruchtbare Plateaus in Trainingslandschaften für Quantenneuronale Netze.

arXiv:1803.11173

Veraltet seit Version 2.1

Die Klasse qiskit.circuit.library.n_local.pauli_two_design.PauliTwoDesign ist ab Qiskit 2.1 veraltet. Sie wird in Qiskit 3.0 entfernt. Verwenden Sie stattdessen die Funktion qiskit.circuit.library.pauli_two_design.

Parameter

  • num_qubits (int | None) – Die Anzahl der Qubits der Pauli-Zweier-Schaltung.
  • reps (int) – Gibt an, wie oft ein aus einer Rotationsschicht und einer Verschränkungsschicht bestehender Block wiederholt wird.
  • seed (int | None) – Der Keim für die zufällige Auswahl der Achsen der Pauli-Drehungen.
  • insert_barriers (bool) – Wenn True, werden zwischen den einzelnen Schichten Barrieren eingefügt. Wenn False, werden keine Barrieren eingefügt. Die Standardeinstellung ist False.
  • name (str) – Der Name, der für die generierte Schaltung verwendet werden soll.

Attribute

num_parameters_settable

Gibt die Anzahl der einstellbaren Parameter zurück.

Rückgabe

Die Anzahl der möglicherweise unterschiedlichen Parameter.

name

Typ: str

Ein von Menschen lesbarer Name für den Stromkreis.

Beispiel

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.