detectron2.solver¶
-
detectron2.solver.
build_lr_scheduler
(cfg: detectron2.config.CfgNode, optimizer: torch.optim.optimizer.Optimizer) → torch.optim.lr_scheduler._LRScheduler[源代码]¶ 从配置中构建 LR 调度器。
-
detectron2.solver.
build_optimizer
(cfg: detectron2.config.CfgNode, model: torch.nn.Module) → torch.optim.optimizer.Optimizer[源代码]¶ 从配置中构建优化器。
-
detectron2.solver.
get_default_optimizer_params
(model: torch.nn.Module, base_lr: Optional[float] = None, weight_decay: Optional[float] = None, weight_decay_norm: Optional[float] = None, bias_lr_factor: Optional[float] = 1.0, weight_decay_bias: Optional[float] = None, lr_factor_func: Optional[Callable] = None, overrides: Optional[Dict[str, Dict[str, float]]] = None) → List[Dict[str, Any]][源代码]¶ 获取优化器的默认参数列表,支持几种类型的覆盖。如果没有覆盖需要,这相当于 model.parameters()。
- 参数
base_lr – 默认情况下每个组的 lr。可以省略以使用优化器中的一个。
weight_decay – 默认情况下每个组的权重衰减。可以省略以使用优化器中的一个。
weight_decay_norm – 覆盖归一化层参数的权重衰减
bias_lr_factor – 偏差参数的 lr 乘数。
weight_decay_bias – 覆盖偏差参数的权重衰减。
lr_factor_func – 通过将参数名称映射到相应的 lr 衰减率来计算 lr 衰减率的函数。请注意,设置此选项需要同时设置
base_lr
。overrides – 如果不是 None,则为具有给定名称的模块参数提供优化器超参数(LR、权重衰减)的值;例如
{"embedding": {"lr": 0.01, "weight_decay": 0.1}}
将为所有名为 embedding 的模块参数设置 LR 和权重衰减值。
对于常见的检测模型,
weight_decay_norm
是唯一需要设置的选项。bias_lr_factor,weight_decay_bias
是 Detectron1 中的遗留设置,未发现有用。示例
torch.optim.SGD(get_default_optimizer_params(model, weight_decay_norm=0), lr=0.01, weight_decay=1e-4, momentum=0.9)
-
class
detectron2.solver.
LRMultiplier
(optimizer: torch.optim.optimizer.Optimizer, multiplier: fvcore.common.param_scheduler.ParamScheduler, max_iter: int, last_iter: int = - 1)[源代码]¶ 基类:
torch.optim.lr_scheduler._LRScheduler
一个 LRScheduler,它使用 fvcore
ParamScheduler
来乘以优化器中每个参数的学习率。每一步,每个参数的学习率都变成其初始值乘以给定ParamScheduler
的输出。每个参数的绝对学习率值可能不同。只要它们之间的相对比例在训练期间不改变,就可以使用此调度器。
示例
LRMultiplier( opt, WarmupParamScheduler( MultiStepParamScheduler( [1, 0.1, 0.01], milestones=[60000, 80000], num_updates=90000, ), 0.001, 100 / 90000 ), max_iter=90000 )
-
__init__
(optimizer: torch.optim.optimizer.Optimizer, multiplier: fvcore.common.param_scheduler.ParamScheduler, max_iter: int, last_iter: int = - 1)[源代码]¶ - 参数
optimizer – 见
torch.optim.lr_scheduler.LRScheduler
。last_iter
与last_epoch
相同。last_iter – 见
torch.optim.lr_scheduler.LRScheduler
。last_iter
与last_epoch
相同。multiplier – 一个 fvcore ParamScheduler,它定义了优化器每个 LR 的乘数
max_iter – 训练迭代的总数
-
-
detectron2.solver.
LRScheduler
¶ torch.optim.lr_scheduler._LRScheduler
的别名
-
class
detectron2.solver.
WarmupParamScheduler
(scheduler: fvcore.common.param_scheduler.ParamScheduler, warmup_factor: float, warmup_length: float, warmup_method: str = 'linear', rescale_interval: bool = False)[源代码]¶ 基类:
fvcore.common.param_scheduler.CompositeParamScheduler
为另一个调度器添加初始预热阶段。
-
__init__
(scheduler: fvcore.common.param_scheduler.ParamScheduler, warmup_factor: float, warmup_length: float, warmup_method: str = 'linear', rescale_interval: bool = False)[source]¶ - 参数
scheduler – 在此调度程序开始之前将添加预热
warmup_factor – 相对于
scheduler
的初始值的因子,例如 0.001warmup_length – 预热步骤相对于整个训练的相对长度(在 [0, 1] 中),例如 0.01
warmup_method – “linear” 或 “constant” 之一
rescale_interval – 是否在预热后重新调整调度程序的间隔
-