跳转至

SPSAStoppingConfig

from cascaqit import SPSAStoppingConfig

SPSAStoppingConfig

SPSAStoppingConfig(
    window_size: int = 3,
    min_iterations: int = 3,
    objective_range_tolerance: float = 0.001,
    update_norm_tolerance: float = 0.001,
    gradient_norm_tolerance: float = 0.01,
    gradient_standard_error_norm_tolerance: float
    | None = None,
    sampled_standard_error_tolerance: float | None = None,
    schema_version: str = ALGORITHM_SCHEMA_VERSION,
)

为 SPSA 设置在线稳定性停止条件。window_size 至少 2,min_iterations 不小于窗口长度;所有启用的容差必须有限且为正。完成最少迭代数后,检查最近一个窗口,各项已启用条件必须同时满足。

容差 比较的数据
objective_range_tolerance 各迭代正负目标平均值形成的代理序列,在窗口内的最大值减最小值;不是每个中心点的直接能量
update_norm_tolerance 窗口内最大参数更新范数
gradient_norm_tolerance 窗口内最大估计梯度范数
gradient_standard_error_norm_tolerance 可选的最大梯度标准误差范数;SPSAConfig 要求每次至少两个方向
sampled_standard_error_tolerance 可选的正负目标估计最大标准误差;要求采样目标且 objective_repeats 至少为 2

这个判断说明所选窗口在这些阈值下稳定,不证明收敛到全局最优。采样预算耗尽仍可能在满足条件前停止;应读取终止原因与各项停止检查。

from cascaqit import SPSAConfig, SPSAStoppingConfig

stopping = SPSAStoppingConfig(window_size=2, min_iterations=3,
                              gradient_standard_error_norm_tolerance=0.01)
config = SPSAConfig(directions_per_iteration=2, stopping=stopping)
assert config.stopping.window_size == 2
assert SPSAStoppingConfig.from_json(stopping.to_json()) == stopping

from_dict

from_dict(data: Mapping[str, Any]) -> SPSAStoppingConfig

从字典还原 SPSAStoppingConfig。省略字段使用默认值,嵌套配置还原后重新校验。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。

from_json

from_json(text: str) -> SPSAStoppingConfig

解析 JSON 对象并调用 from_dict(),返回 SPSAStoppingConfig。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。

to_dict

to_dict() -> dict[str, Any]

返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。

to_json

to_json(*, indent: int | None = None) -> str

返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。

stable_hash

stable_hash() -> str

返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。