Utilità di troncamento
qiskit_addon_obp.utils.truncating
Funzioni per il troncamento degli operatori di Pauli entro determinati limiti di errore.
TruncationErrorBudget
class TruncationErrorBudget(per_slice_budget=<factory>, max_error_total=0.0, p_norm=1, tol=1e-08)
Basi: object
Una classe per memorizzare le costanti che determinano il bilancio degli errori di troncamento.
Si rimanda alla guida pratica per una trattazione dettagliata sul troncamento dei termini dell'operatore durante la retropropagazione e sulla limitazione dell'errore che ne deriva.
Parametri
is_active
is_active()
Restituisce se il troncamento è attivo, cioè se il budget è diverso da zero.
Tipo di restituzione
max_error_total
Tipo: float
Valore predefinito: 0.0
Il massimo errore di troncamento totale da consentire per ogni osservabile durante l'intera retropropagazione. Questo valore può essere numpy.inf, ad esempio quando l'errore massimo non è stato specificato durante il sito setup_budget().
p_norm
Tipo: int
Valore predefinito: 1
Indica quale Lp-norm viene utilizzata per calcolare gli errori di troncamento.
Si rimanda alla guida pratica per una trattazione dettagliata su come limitare l'errore di troncamento utilizzando norme Lp più elevate.
per_slice_budget
La quantità massima di errore di troncamento da consentire per ogni slice retropropagata. L'elenco verrà ripetuto durante la retropropagazione delle fette di circuito.
tol
Tipo: float
Valore predefinito: 1e-08
Tolleranza assoluta utilizzata durante il troncamento. Una volta trovata una soglia di troncamento ottimale, fino a questa tolleranza, la ricerca di una soglia ottimale si interrompe.
setup_budget
setup_budget(*, max_error_per_slice=None, max_error_total=None, num_slices=None, p_norm=1)
Calcolare il budget disponibile per ogni slice per il troncamento dei termini osservabili.
Questo metodo semplifica la creazione di un per l'utente finale TruncationErrorBudget . Questo margine di errore può essere fornito al metodo backpropagate() per consentire il troncamento dei termini di Pauli a basso peso. Per una trattazione dettagliata sul troncamento dei termini dall'operatore di output e sulla limitazione dell'errore che ne deriva, consultare la guida pratica.
La logica di costruzione è la seguente:
- se viene fornito
max_error_per_slice, il suo valore viene convertito in un elenco e utilizzato immediatamente perTruncationErrorBudget.per_slice_budget - se questo non è il caso, è necessario impostare
max_error_total - se
num_slicesnon è set,:attr:.TruncationErrorBudget.per_slice_budget viene impostato su[max_error_total], con il risultato che l'intero budget viene consumato avidamente - tuttavia, se viene fornito
num_slices, alloraTruncationErrorBudget.per_slice_budgetassume una distribuzione uniforme dell'errore totale massimo sul numero di fette specificato:[max_error_total / num_slices]
Infine, se si imposta max_error_total , si pone un limite rigido all'errore massimo totale che può essere accumulato durante l'intera retropropagazione. Pertanto, l'impostazione di max_error_per_slice e max_error_total può essere utile.
Il budget non speso durante un'iterazione precedente viene riportato nelle iterazioni successive, il che significa che il budget massimo per qualsiasi slice durante la retropropagazione può in effetti superare TruncationErrorBudget.per_slice_budget.
Parametri
- max_error_per_slice (float |Sequence[float] | None) – Specifica l'errore massimo per ogni slice retropropagata. Per maggiori dettagli, vedere sopra.
- max_error_total (float | None) – Specifica l'errore massimo totale per l'intera retropropagazione. Per maggiori dettagli, vedere sopra.
- num_slices (int | None) – Il numero di fette su cui distribuire il budget. Per maggiori dettagli, vedere sopra.
- p_norm (int) – La norma Lp dell'errore. Ciò influisce sulla distribuzione graduale di
max_error_totalnel caso in cui sia impostato anchenum_slices(vedi sopra). Si rimanda alla guida pratica per una trattazione dettagliata su come limitare l'errore di troncamento utilizzando norme Lp più elevate.
Risultati
Il risultato TruncationErrorBudget.
Aumenti
ValueError - se max_error_per_slice e max_error_total sono entrambi None.
Tipo di restituzione
truncate_binary_search
truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)
Eseguire una ricerca binaria per trovare una soglia di troncamento osservabile ottimale.
Rimuove i termini di Pauli da SparsePauliOp la cui somma dei valori assoluti dei coefficienti non supera l'errore fornito budget.
Parametri
- observable (SparsePauliOp) – il sito
SparsePauliOpda cui troncare i termini. - budget (float) – l'errore di troncamento massimo ammissibile.
- p_norm (int) – un intero che specifica quale p-norm utilizzare.
- tol (float) – quando le soglie della ricerca binaria differiscono di un valore inferiore a
tol, la ricerca della soglia si arresta.
Risultati
L'osservabile troncata e un limite sull'errore di troncamento sostenuto.
Il limite dell'errore di troncamento, , è calcolato come la p-norm grandezza dei coefficienti dei termini troncati, , tale che .
Tipo di restituzione
tupla [*SparsePauliOp*, float ]