Skip to main content
IBM Quantum Platform

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)

GitHub

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()

GitHub

Restituisce se il troncamento è attivo, cioè se il budget è diverso da zero.

Tipo di restituzione

bool

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

Tipo: list[float]

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)

GitHub

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 per TruncationErrorBudget.per_slice_budget
  • se questo non è il caso, è necessario impostare max_error_total
  • se num_slices non è 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 , allora TruncationErrorBudget.per_slice_budget assume 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.

Nota

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_total nel caso in cui sia impostato anche num_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

TruncationErrorBudget

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

GitHub

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 SparsePauliOp da 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.

Nota

Il limite dell'errore di troncamento, EE, è calcolato come la p-norm grandezza dei coefficienti dei termini troncati, cc, tale che E=cpE = \|c\|_p.

Tipo di restituzione

tupla [*SparsePauliOp*, float ]

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.