Metadados OBPMetadata
class OBPMetadata(truncation_error_budget, num_slices, operator_budget, backpropagation_history, num_backpropagated_slices)
Bases: object
Um contêiner para metadados gerados durante o 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 especificam a estratégia de truncamento observável.
num_slices
Tipo: int | None
O número total de fatias para tentar retropropagar.
operator_budget
Tipo: OperatorBudget
Valores que especificam o tamanho que o operador pode crescer.
backpropagation_history
Tipo: list[SliceMetadata]
Uma sequência de objetos de metadados para rastrear a progressão da retropropagação.
num_backpropagated_slices
Tipo: int
O número de fatias retropropagadas.
Esse valor pode ser diferente de len(backpropagation_history) nos casos em que um critério de parada, como operator_budget.max_paulis ou operator_budget.max_qwc_groups , fez com que a retropropagação fosse encerrada. Então, esse valor deve ser igual a len(backpropagation_history) - 1 porque a última fatia fez com que os limites fossem excedidos. No entanto, por conveniência, esses valores ainda são registrados para que o usuário final possa inspecioná-los.
Métodos
accumulated_error
accumulated_error(observable_idx, slice_idx=None)
Calcule o erro acumulado para um determinado observável em um determinado "tempo".
Esse método calcula o erro acumulado para um determinado índice observável em um determinado "momento" durante o curso da retropropagação. Nesse contexto, "tempo" deve ser entendido como as etapas discretas de fatias já retropropagadas.
O erro acumulado é calculado como a soma dos erros individuais SliceMetadata.slice_errors. Esses, por sua vez, podem ser calculados dentro de um TruncationErrorBudget.p_norm. Assim, o erro acumulado calculado é um limite superior do erro acumulado real, conforme determinado pela desigualdade de Minkowski (a generalização da desigualdade do triângulo para normas Lp diferentes de p=2).
Como uma norma Lp geral (diferente de p=2) não é uma norma de produto interno, ela não satisfaz a lei do paralelogramo. Portanto, devemos usar a desigualdade de Minkowski como o limite superior do erro acumulado.
Parâmetros
- observable_idx (int) – o índice do observável cujo erro acumulado deve ser computado.
- slice_idx (int | None) – o índice da fatia (a etapa discreta de "tempo") até a qual será computado o erro acumulado. Se for
None, o padrão seráself.num_backpropagated_slices, o que equivale a calcular o erro acumulado de um observável no último ponto no tempo que não tenha ultrapassado nenhum critério de parada no algoritmo
Retorna
O erro acumulado calculado de acordo com as explicações acima.
Tipo de retorno
from_json
classmethod from_json(json_file)
Carregar metadados de um arquivo json.
Parâmetros
json_file (str) – o caminho para o arquivo a ser carregado.
Retorna
Os metadados carregados.
Tipo de retorno
left_over_error_budget
left_over_error_budget(observable_idx, slice_idx=None)
Calcule o orçamento de erros remanescentes para um determinado observável em um determinado "momento".
Esse método calcula o orçamento de erro restante para um determinado índice observável em um determinado "momento" durante o curso da retropropagação. Nesse contexto, "tempo" deve ser entendido como as etapas discretas de fatias já retropropagadas.
O orçamento de erro remanescente é calculado como o saldo do orçamento total menos a soma dos orçamentos individuais SliceMetadata.slice_errors. Esses, por sua vez, podem ser calculados dentro de um TruncationErrorBudget.p_norm.
Consulte também as explicações em accumulated_error() para obter mais detalhes sobre como os erros individuais das fatias são somados para formar um limite superior para o erro real por meio da desigualdade de Minkowski.
O orçamento de erro restante é relativo ao valor de self.truncation_error_budget.max_error_total , que pode ser numpy.inf e, nesse caso, o valor retornado desse método também será numpy.inf.
Parâmetros
- observable_idx (int) – o índice do observável cujo orçamento de erro residual deve ser computado.
- slice_idx (int | None) – o índice da fatia (a etapa discreta de "tempo") até a qual será computado o orçamento de erro restante. Se for
None, o padrão seráself.num_backpropagated_slices, o que equivale a calcular o orçamento de erro restante de um observável no último ponto no tempo que não tenha ultrapassado nenhum critério de parada no algoritmo
Retorna
O orçamento de erro restante foi calculado de acordo com as explicações acima.
Tipo de retorno