AdamIterationIR¶
from cascaqit import AdamIterationIR
AdamIterationIR ¶
AdamIterationIR(
iteration_index: int,
config: AdamConfig,
center_objective_evaluation_index: int,
updated_objective_evaluation_index: int,
center_parameters: Mapping[str, float],
gradient_index: int,
gradient_hash: str,
gradient: Mapping[str, float],
gradient_covariance: Mapping[str, Mapping[str, float]],
gradient_standard_errors: Mapping[str, float],
gradient_uncertainty_norm: float,
gradient_repeat_count: int,
gradient_repeat_stop_reason: Literal[
"fixed_repeats",
"target_reached",
"max_repeats_reached",
"evaluation_budget_exhausted",
"backend_budget_exhausted",
],
previous_first_moment: Mapping[str, float],
previous_second_moment: Mapping[str, float],
first_moment: Mapping[str, float],
second_moment: Mapping[str, float],
bias_corrected_first_moment: Mapping[str, float],
bias_corrected_second_moment: Mapping[str, float],
step: Mapping[str, float],
bounds: Mapping[str, tuple[float, float]],
unprojected_parameters: Mapping[str, float],
updated_parameters: Mapping[str, float],
update_norm: float,
projection_applied: bool,
gradient_objective_evaluation_count: int,
gradient_backend_execution_count: int,
gradient_total_shots: int,
iteration_hash: str = "",
schema_version: str = ADAM_SCHEMA_VERSION,
)
保存一次 Adam 更新及其关联梯度,通常从 result.optimization_starts[i].adam_iterations 读取。iteration_index 从 0 开始;center_objective_evaluation_index 与 updated_objective_evaluation_index 指向更新前后的目标记录,后者必须紧随前者。gradient_index/hash 关联梯度记录,不代表在读取时重新计算梯度。
| 字段组 | 含义 |
|---|---|
| center_parameters、gradient | 当前参数与保存的梯度,各映射必须使用同一参数顺序 |
| gradient_covariance、gradient_standard_errors、gradient_uncertainty_norm | 梯度估计协方差、对角方差平方根及 sqrt(trace(covariance)),与梯度范数不同 |
| gradient_repeat_count、gradient_repeat_stop_reason | 重复估计次数及因固定次数、目标、上限或预算停止的原因 |
| previous_、first_moment、second_moment、bias_corrected_ | 上一时刻动量、本次动量及偏差修正后的动量 |
| step、unprojected_parameters、updated_parameters、bounds | Adam 步长向量、减去步长后的参数、边界投影后的参数与边界 |
| update_norm、projection_applied | 实际参数更新范数及本次更新是否受边界投影影响 |
| gradient_objective_evaluation_count、gradient_backend_execution_count、gradient_total_shots | 此梯度估计的成本,不是整个优化的总成本 |
直接构造会重新核对动量、更新公式、不确定度、投影与摘要。iteration_hash 省略或为空时自动计算,否则必须匹配内容;不要手工拼接不相符的计算记录。
from cascaqit import HamiltonianTerm, OptimizerConfig, PauliHamiltonian, PauliZ, VQE
vqe = VQE(PauliHamiltonian("z", (HamiltonianTerm("z", 1.0, PauliZ("q0")),),
logical_order=("q0",)))
from cascaqit import AdamIterationIR
from cascaqit.algorithms import GradientConfig
result = vqe.run(optimizer=OptimizerConfig(method="ADAM", max_iterations=1,
gradient=GradientConfig(), seed=7), initial_parameters=(0.4, 0.2), final_shots=8)
iteration = result.optimization_starts[0].adam_iterations[0]
assert iteration.verify_hash()
assert iteration.updated_objective_evaluation_index == iteration.center_objective_evaluation_index + 1
assert AdamIterationIR.from_json(iteration.to_json()).iteration_hash == iteration.iteration_hash
create ¶
create(
*,
iteration_index: int,
config: AdamConfig,
center_objective_evaluation_index: int,
updated_objective_evaluation_index: int,
center_parameters: Mapping[str, float],
gradient_index: int,
gradient_hash: str,
gradient: Mapping[str, float],
gradient_covariance: Mapping[str, Mapping[str, float]],
gradient_standard_errors: Mapping[str, float],
gradient_uncertainty_norm: float,
gradient_repeat_count: int,
gradient_repeat_stop_reason: Literal[
"fixed_repeats",
"target_reached",
"max_repeats_reached",
"evaluation_budget_exhausted",
"backend_budget_exhausted",
],
previous_first_moment: Mapping[str, float],
previous_second_moment: Mapping[str, float],
bounds: Mapping[str, tuple[float, float]],
gradient_objective_evaluation_count: int,
gradient_backend_execution_count: int,
gradient_total_shots: int,
) -> AdamIterationIR
从参数、梯度、上一时刻动量、配置与来源索引计算本次动量、偏差修正、步长、边界投影及摘要,返回 AdamIterationIR。它只计算一次经典更新,不调用后端,也不评估更新后能量;传入索引和成本必须来自真实记录。
计算除 iteration_hash 字段自身以外的保存内容摘要,返回 SHA-256 十六进制字符串,不改写对象。与包含该字段的 stable_hash() 用途不同。
比较保存的 iteration_hash 与重新计算的摘要,返回布尔值。它检查内容一致性,不重新运行量子实验。
从字典还原 AdamIterationIR。还原所有梯度与动量字段,并重新验证更新公式、协方差派生量和摘要。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。
解析 JSON 对象并调用 from_dict(),返回 AdamIterationIR。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。
返回完整记录的 JSON 兼容字典,嵌套对象也会序列化。它保存已有数据,不重新执行实验。
返回完整记录的 JSON 字符串;indent 可设置缩进,不写文件。
返回完整记录规范 JSON 的 SHA-256 摘要,用于内容比较与来源引用。它不证明实验结论正确,也不等于物理等价性判断。