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
从字典还原 SPSAStoppingConfig。省略字段使用默认值,嵌套配置还原后重新校验。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。
解析 JSON 对象并调用 from_dict(),返回 SPSAStoppingConfig。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。
返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。
返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。
返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。