Metadatos OBPM
class OBPMetadata(truncation_error_budget, num_slices, operator_budget, backpropagation_history, num_backpropagated_slices)
Bases: object
Un contenedor para los metadatos generados durante el método backpropagate() .
Atributos
Parámetros
- truncation_error_budget (TruncationErrorBudget)
- num_slices (int | None)
- operator_budget (OperatorBudget)
- backpropagation_history (list[SliceMetadata])
- num_backpropagated_slices (int)
truncation_error_budget
Tipo: TruncationErrorBudget
Valores que especifican la estrategia de truncamiento observable.
num_slices
Tipo: int | None
El número total de cortes que se intentarán retropropagar.
operator_budget
Tipo: OperatorBudget
Valores que especifican el tamaño que puede alcanzar el operador.
backpropagation_history
Tipo: list[SliceMetadata]
Una secuencia de objetos de metadatos para seguir la progresión de la retropropagación.
num_backpropagated_slices
Tipo: int
El número de cortes retropropagados.
Este valor puede diferir de len(backpropagation_history) en los casos en los que un criterio de parada como operator_budget.max_paulis o operator_budget.max_qwc_groups haya provocado la finalización de la retropropagación. Entonces, este valor debe ser igual a len(backpropagation_history) - 1 porque el último corte hizo que se superaran los umbrales. Sin embargo, por comodidad, estos valores se siguen registrando para que el usuario final pueda inspeccionarlos.
Métodos
accumulated_error
accumulated_error(observable_idx, slice_idx=None)
Calcular el error acumulado para un observable dado en un "momento" dado.
Este método calcula el error acumulado para un índice observable dado en un "momento" determinado durante el curso de la retropropagación. En este contexto, "tiempo" debe entenderse como los pasos discretos de cortes ya retropropagados.
El error acumulado se calcula como la suma de los errores individuales SliceMetadata.slice_errors. A su vez, estos pueden calcularse dentro de un TruncationErrorBudget.p_norm. Por lo tanto, el error acumulado calculado constituye un límite superior del error acumulado real, tal y como establece la desigualdad de Minkowski (la generalización de la desigualdad triangular para normas Lp distintas de p=2).
Dado que una norma Lp general (distinta de p=2) no es una norma de producto interior, no satisface la ley del paralelogramo. Por lo tanto, debemos utilizar la desigualdad de Minkowski como límite superior del error acumulado.
Parámetros
- observable_idx (int) – el índice del observable cuyo error acumulado calcular.
- slice_idx (int | None) – el índice del corte (el paso discreto de "tiempo") hasta el que calcular el error acumulado. Si es
None, se pasará por defecto aself.num_backpropagated_slicesque equivale a computar el error acumulado de un observable en el último punto del tiempo que no haya superado ningún criterio de parada en el algoritmo
Devuelve
El error acumulado calculado según las explicaciones anteriores.
Tipo de retorno
from_json
classmethod from_json(json_file)
Carga los metadatos de un archivo json.
Parámetros
json_file (str) – la ruta del archivo a cargar.
Devuelve
Los metadatos cargados.
Tipo de retorno
left_over_error_budget
left_over_error_budget(observable_idx, slice_idx=None)
Calcular el presupuesto de error restante para un observable dado en un "momento" dado.
Este método calcula el presupuesto de error restante para un índice observable dado en un "momento" determinado durante el curso de la retropropagación. En este contexto, "tiempo" debe entenderse como los pasos discretos de cortes ya retropropagados.
El presupuesto de error restante se calcula como el resto del presupuesto total menos la suma de los individuales SliceMetadata.slice_errors. A su vez, estos pueden calcularse dentro de un TruncationErrorBudget.p_norm.
Véanse también las explicaciones en accumulated_error() para más detalles sobre cómo se suman los errores de cada corte para formar un límite superior del error real a través de la desigualdad de Minkowski.
El presupuesto de error sobrante es relativo al valor de self.truncation_error_budget.max_error_total que puede ser numpy.inf en cuyo caso el valor devuelto de este método será numpy.inf, también.
Parámetros
- observable_idx (int) – el índice de la observable cuyo presupuesto de error sobrante calcular.
- slice_idx (int | None) – el índice de la rebanada (el paso discreto de "tiempo") hasta el que calcular el presupuesto de error restante. Si es
None, se pasará por defecto aself.num_backpropagated_slicesque equivale a calcular el presupuesto de error sobrante de un observable en el último punto del tiempo que no ha superado ningún criterio de parada en el algoritmo
Devuelve
El presupuesto de error restante se calcula según las explicaciones anteriores.
Tipo de retorno