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)
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()
Gibt zurück, ob die Trunkierung aktiv ist, d. h. ob das Budget ungleich Null ist.
Rückgabetyp
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
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)
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_sliceangegeben wird, wird sein Wert in eine Liste umgewandelt und sofort fürTruncationErrorBudget.per_slice_budget - wenn dies nicht der Fall ist, muss
max_error_totaleingestellt werden - wenn
num_slicesnicht 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_slicesangegeben wird, dannTruncationErrorBudget.per_slice_budgeteine 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.
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 ebenfallsnum_slicesfestgelegt 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
truncate_binary_search
truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)
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
tolist, wird die Schwellenwertsuche beendet.
Rückgabe
Die abgeschnittene Beobachtungsgröße und eine Begrenzung des entstehenden Abschneidefehlers.
Die Grenze des entstandenen Abbruchfehlers, , wird als p-norm der Koeffizientengrößen der abgeschnittenen Terme, , berechnet, so dass .
Rückgabetyp
tuple [*SparsePauliOp*, float ]