OBPMetadata
class OBPMetadata(truncation_error_budget, num_slices, operator_budget, backpropagation_history, num_backpropagated_slices)
Basi: object
Un contenitore per i metadati generati durante il metodo backpropagate() .
Attributi
Parametri
- truncation_error_budget (TruncationErrorBudget)
- num_slices (int | None)
- operator_budget (OperatorBudget)
- backpropagation_history (list[SliceMetadata])
- num_backpropagated_slices (int)
truncation_error_budget
Tipo: TruncationErrorBudget
Valori che specificano la strategia di troncamento delle osservabili.
num_slices
operator_budget
Tipo: OperatorBudget
Valori che specificano quanto può crescere l'operatore.
backpropagation_history
Tipo: list[SliceMetadata]
Una sequenza di oggetti metadati per seguire la progressione della retropropagazione.
num_backpropagated_slices
Tipo: int
Il numero di fette retropropagate.
Questo valore può essere diverso da len(backpropagation_history) nei casi in cui un criterio di arresto, come operator_budget.max_paulis o operator_budget.max_qwc_groups , abbia fatto terminare la retropropagazione. Quindi, questo valore deve essere uguale a len(backpropagation_history) - 1 perché l'ultima fetta ha causato il superamento delle soglie. Tuttavia, per comodità, questi valori vengono comunque registrati affinché l'utente finale possa controllarli.
Metodi
accumulated_error
accumulated_error(observable_idx, slice_idx=None)
Calcolo dell'errore accumulato per una determinata osservabile in un determinato "tempo".
Questo metodo calcola l'errore accumulato per un dato indice osservabile in un determinato "momento" durante il corso della retropropagazione. In questo contesto, per "tempo" si intendono i passi discreti di fette già retropropagate.
L'errore cumulativo viene calcolato come somma dei singoli SliceMetadata.slice_errors. Questi, a loro volta, possono essere calcolati all’interno di un TruncationErrorBudget.p_norm. Pertanto, l'errore accumulato calcolato costituisce un limite superiore dell'errore accumulato reale, come indicato dalla disuguaglianza di Minkowski (la generalizzazione della disuguaglianza triangolare per le norme Lp diverse da p=2).
Poiché una norma Lp generale (diversa da p=2) non è una norma del prodotto interno, non soddisfa la legge del parallelogramma. Pertanto, dobbiamo utilizzare la disuguaglianza di Minkowski come limite superiore dell'errore accumulato.
Parametri
- observable_idx (int) – l'indice dell'osservabile di cui calcolare l'errore accumulato.
- slice_idx (int | None) – l'indice della fetta (il passo discreto "temporale") fino al quale calcolare l'errore accumulato. Se si tratta di
None, il valore predefinito èself.num_backpropagated_slices, che equivale a calcolare l'errore accumulato di un'osservabile nell'ultimo punto del tempo che non ha superato alcun criterio di arresto nell'algoritmo
Risultati
L'errore accumulato calcolato in base alle spiegazioni precedenti.
Tipo di restituzione
from_json
classmethod from_json(json_file)
Carica i metadati da un file json.
Parametri
json_file (str) – il percorso del file da caricare.
Risultati
I metadati caricati.
Tipo di restituzione
left_over_error_budget
left_over_error_budget(observable_idx, slice_idx=None)
Calcolo del budget di errore residuo per una data osservabile in un dato "tempo".
Questo metodo calcola il budget di errore residuo per un dato indice osservabile in un determinato "momento" durante il corso della retropropagazione. In questo contesto, per "tempo" si intendono i passi discreti di fette già retropropagate.
Il margine di errore residuo viene calcolato come il resto del margine totale meno la somma dei singoli SliceMetadata.slice_errors. Questi, a loro volta, possono essere calcolati all’interno di un TruncationErrorBudget.p_norm.
Si vedano anche le spiegazioni in accumulated_error() per maggiori dettagli su come gli errori delle singole fette vengono sommati per formare un limite superiore all'errore reale tramite la disuguaglianza di Minkowski.
Il budget di errore residuo è relativo al valore di self.truncation_error_budget.max_error_total che può essere numpy.inf , nel qual caso il valore restituito da questo metodo sarà numpy.inf, anch'esso.
Parametri
- observable_idx (int) – l'indice dell'osservabile di cui calcolare il bilancio degli errori residui.
- slice_idx (int | None) – l'indice della fetta (il passo discreto "temporale") fino alla quale calcolare il budget di errore residuo. Se si tratta di
None, si imposta per defaultself.num_backpropagated_slices, che equivale a calcolare il budget di errore residuo di un'osservabile nell'ultimo momento che non ha superato alcun criterio di arresto nell'algoritmo
Risultati
Il bilancio degli errori residui viene calcolato in base alle spiegazioni precedenti.
Tipo di restituzione