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()。
- Parameters
base_lr – 默认情况下每个组的初始学习率。如果省略,则使用优化器中的值。
weight_decay – 默认情况下每个组的权重衰减。可以省略以使用优化器中的值。
weight_decay_norm – 覆盖归一化层中参数的权重衰减
bias_lr_factor – 偏置参数的学习率乘数。
weight_decay_bias – 覆盖偏置参数的权重衰减。
lr_factor_func – 用于通过将参数名称映射到相应的学习率衰减率来计算学习率衰减速率的函数。请注意,设置此选项还需要设置
base_lr。overrides - 如果不为None,则为具有指定名称的模块参数提供优化器超参数值(学习率、权重衰减);例如
{"embedding": {"lr": 0.01, "weight_decay": 0.1}}将为所有名为embedding的模块参数设置学习率和权重衰减值。
对于常见的检测模型,
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._LRSchedulerLRScheduler 使用 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)[源代码]¶ - Parameters
optimizer – 参见
torch.optim.lr_scheduler.LRScheduler。last_iter等同于last_epoch。last_iter – 参见
torch.optim.lr_scheduler.LRScheduler。last_iter与last_epoch相同。multiplier – 一个fvcore ParamScheduler,用于定义优化器每个学习率的乘数
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)[源代码]¶ - Parameters
scheduler – 预热(warmup)将被添加到此调度器的开头
warmup_factor – 相对于
scheduler初始值的因子,例如0.001warmup_length – 相对于整个训练过程的预热步骤的相对长度(范围在[0, 1]之间),例如0.01
warmup_method – 可选 "linear" 或 "constant"
rescale_interval – 是否在预热后重新调整调度器的时间间隔
-