Skip to main content
IBM Quantum Platform

Trunkierungs-Dienstprogramme

qiskit_addon_obp.utils.truncating

Funktionen zum Abschneiden von Pauli-Operatoren innerhalb bestimmter Fehlerbudgets.

TruncationErrorBudget

class TruncationErrorBudget(per_slice_budget=<factory>, max_error_total=0.0, p_norm=1, tol=1e-08)

GitHub

Basen: object

Eine Klasse zur Speicherung der Konstanten, die das Budget für den Abbruchfehler bestimmen.

Eine ausführliche Erläuterung zur Kürzung von Operatorausdrücken während der Rückpropagierung und zur Begrenzung des dabei entstehenden Fehlers finden Sie in der Anleitung.

Parameter

is_active

is_active()

GitHub

Gibt zurück, ob die Trunkierung aktiv ist, d. h. ob das Budget ungleich Null ist.

Rückgabetyp

bool

max_error_total

Typ: float

Standardwert: 0.0

Der maximale Gesamtabschneidefehler, der für jede Beobachtungsgröße während der gesamten Backpropagation zulässig ist. Dieser Wert kann sein numpy.infsein, zum Beispiel wenn der maximale Fehler unter setup_budget() nicht angegeben wurde.

p_norm

Typ: int

Standardwert: 1

Gibt an, welche Lp-Norm für die Berechnung der Abschneidefehler verwendet wird.

Eine ausführliche Erläuterung zur Begrenzung von Abschneidefehlern mithilfe höherer Lp-Normen finden Sie in der Anleitung.

per_slice_budget

Typ: list[float]

Die maximale Menge an Abbruchfehlern, die pro Backpropagated Slice zugelassen wird. Diese Liste wird während der Backpropagation der Schaltkreisabschnitte in einer Schleife durchlaufen.

tol

Typ: float

Standardwert: 1e-08

Absolute Toleranz, die bei der Trunkierung verwendet wird. Sobald ein optimaler Schwellenwert bis zu dieser Toleranzgrenze gefunden wurde, wird die Suche nach einem optimalen Schwellenwert beendet.

setup_budget

setup_budget(*, max_error_per_slice=None, max_error_total=None, num_slices=None, p_norm=1)

GitHub

Berechnen Sie das Budget, das für jeden Slice für die Trunkierung beobachtbarer Terme zur Verfügung steht.

Diese Methode TruncationErrorBudget erleichtert dem Endnutzer die Erstellung eines. Dieses Fehlerbudget kann der Methode backpropagate() übergeben werden, um die Verkürzung von Pauli-Termen mit geringem Gewicht zu ermöglichen. Eine ausführliche Erläuterung zum Abschneiden von Termen aus dem Ausgaboperator und zur Begrenzung des dabei entstehenden Fehlers finden Sie in der Anleitung.

Die Logik der Konstruktion ist wie folgt:

  • wenn max_error_per_slice angegeben wird, wird sein Wert in eine Liste umgewandelt und sofort für TruncationErrorBudget.per_slice_budget
  • wenn dies nicht der Fall ist, muss max_error_total eingestellt werden
  • wenn num_slices nicht set,:attr:.TruncationErrorBudget ist, wird per_slice_budget auf [max_error_total] gesetzt, was dazu führt, dass das gesamte Budget gierig verbraucht wird
  • wenn jedoch num_slices angegeben wird, dann TruncationErrorBudget.per_slice_budget eine gleichmäßige Verteilung des maximalen Gesamtfehlers über die angegebene Anzahl von Slices an: [max_error_total / num_slices]

Wenn schließlich max_error_total eingestellt ist, wird der maximale Gesamtfehler, der während der gesamten Backpropagation akkumuliert werden kann, hart begrenzt. Daher kann die Einstellung von max_error_per_slice und max_error_total von Nutzen sein.

Anmerkung

Budget, das während einer vorherigen Iteration nicht ausgegeben wurde, wird auf die nachfolgenden Iterationen übertragen, was bedeutet, dass das maximale Budget für ein beliebiges Slice während der Backpropagation in der Tat höher sein kann TruncationErrorBudget.per_slice_budget.

Parameter

  • max_error_per_slice (float |Sequence[float] | None) – Gibt den maximalen Fehler pro Backpropagated Slice an. Siehe oben für weitere Einzelheiten.
  • max_error_total (float | None) – Gibt den maximalen Gesamtfehler für die gesamte Backpropagation an. Siehe oben für weitere Einzelheiten.
  • num_slices (int | None) – Die Anzahl der Slices, auf die das Budget verteilt werden soll. Siehe oben für weitere Einzelheiten.
  • p_norm (int) – Die Lp-Norm des Fehlers. Dies wirkt sich auf die schrittweise Verteilung von aus max_error_total , wenn ebenfalls num_slices festgelegt ist (siehe oben). Eine ausführliche Erläuterung zur Begrenzung von Abschneidefehlern mithilfe höherer Lp-Normen finden Sie in der Anleitung.

Rückgabe

Die daraus resultierenden TruncationErrorBudget.

Erhöht

ValueError - wenn max_error_per_slice und max_error_total beide None sind.

Rückgabetyp

TruncationErrorBudget

truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)

GitHub

Führen Sie eine binäre Suche durch, um eine optimale beobachtbare Abschneidegrenze zu finden.

Entfernt die Pauli-Terme aus einer SparsePauliOp , deren Summe der absoluten Koeffizientenwerte den angegebenen Fehler budget nicht überschreitet.

Parameter

  • observable (SparsePauliOp) – die SparsePauliOp , aus der Begriffe abgeschnitten werden sollen.
  • budget (float) – der maximal zulässige Rundungsfehler.
  • p_norm (int) – eine ganze Zahl, die angibt, welche p-Norm zu verwenden ist.
  • tol (float) – wenn sich die Schwellenwerte für die binäre Suche um einen Betrag unterscheiden, der kleiner als tol ist, wird die Schwellenwertsuche beendet.

Rückgabe

Die abgeschnittene Beobachtungsgröße und eine Begrenzung des entstehenden Abschneidefehlers.

Anmerkung

Die Grenze des entstandenen Abbruchfehlers, EE, wird als p-norm der Koeffizientengrößen der abgeschnittenen Terme, cc, berechnet, so dass E=∥c∥pE = \|c\|_p.

Rückgabetyp

tuple [*SparsePauliOp*, float ]

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.