AdamStoppingConfig¶
from cascaqit import AdamStoppingConfig
AdamStoppingConfig ¶
AdamStoppingConfig(
window_size: int = 3,
min_iterations: int = 3,
update_norm_tolerance: float = 0.0001,
gradient_uncertainty_norm_tolerance: float
| None = None,
schema_version: str = ADAM_SCHEMA_VERSION,
)
根据连续几次更新的大小停止 Adam。window_size 至少为 2,min_iterations 不小于 window_size,update_norm_tolerance 必须为正数。达到最少迭代数后,最近窗口内每次投影后的参数更新范数都不超过阈值,才满足更新稳定条件。
可选的 gradient_uncertainty_norm_tolerance 必须为正数。启用后,同一窗口的梯度不确定度范数也必须全部达标;它限制估计不确定度,不限制梯度本身的大小。实际梯度重复估计由 GradientConfig 决定。
这个条件用于控制计算停止,不证明全局最优。边界投影也可能让更新变小,应结合停止记录、梯度和能量历史判断。
from cascaqit import AdamConfig, AdamStoppingConfig
stopping = AdamStoppingConfig(window_size=2, min_iterations=3,
update_norm_tolerance=1e-4)
assert AdamConfig(stopping=stopping).stopping == stopping
assert AdamStoppingConfig.from_json(stopping.to_json()) == stopping
assert "gradient_uncertainty_norm_tolerance" not in stopping.to_dict()
从字典还原 AdamStoppingConfig。省略字段使用默认值,嵌套配置还原后重新校验。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。
解析 JSON 对象并调用 from_dict(),返回 AdamStoppingConfig。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。
未启用梯度不确定度条件时省略 gradient_uncertainty_norm_tolerance。 返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。
返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。
返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。