OPTIMIZATION
优化器用于对梯度、学习率等进行调整
下面是一个优化器的配置:
OPTIMIZATION:
BATCH_SIZE_PER_GPU: 4
NUM_EPOCHS: 10
OPTIMIZER: adam_onecycle
LR: 0.001
WEIGHT_DECAY: 0.04
MOMENTUM: 0.8
MOMS: [0.85, 0.75]
PCT_START: 0.1
DIV_FACTOR: 100
DECAY_STEP_LIST: [35, 45]
LR_DECAY: 0.1
LR_CLIP: 0.0000001
LR_WARMUP: False
WARMUP_EPOCH: 1
GRAD_NORM_CLIP: 10
LOSS_SCALE_FP16: 32.0
下面来看每个配置的具体作用和含义:
按照配置的功能,可以分为以下几组:
-
首先是batch_size 和epoch
BATCH_SIZE_PER_GPU: 4 # 表示每个GPU上一次迭代的batch size 是4
NUM_EPOCHS: 10 # 表示一共训练10个epoch -
然后是Optimizer(优化器)
OPTIMIZER: adam_onecycle # 表示使用的优化器是adam_onecycle
LR: 0.001 # 表示初始学习率是0.001
WEIGHT_DECAY: 0.04 # 表示权重衰减系数是 0.04
MOMENTUM: 0.8 # 表示MOMENTUM是0.8, SGD算法需要,其他不需要 -
然后是Scheduler(学习率调度器)
参考:https://blog.youkuaiyun.com/ChuiGeDaQiQiu/article/details/121462371
MOMS: [0.95, 0.85]
PCT_START: 0.1
DIV_FACTOR: 100
DECAY_STEP_LIST: [35, 45]
LR_DECAY: 0.1
LR_CLIP: 0.0000001
LR_WARMUP: False
WARMUP_EPOCH: 1
- 梯度裁剪clip_grad_norm_
GRAD_NORM_CLIP: 10
LOSS_SCALE_FP16: 32.0
下面对各个功能组件进行具体分析:
batch_size 和 epoch数比较简单,没啥好说的
下面来看Optimizer(优化器)
怎么构造
Optimizer在train.py中通过
build_optimizer(model, optim_cfg, filter_frozen_params=False) 函数进行构造
def build_optimizer(model, optim_cfg, filter_frozen_params=False):
if optim_cfg.OPTIMIZER == 'adam':
optimizer = optim.Adam(model.parameters(<

本文详细解读了OpenPCDet中优化器的配置,包括Adam、SGD、adam_onecycle等的选择,以及学习率调度器如OneCycle、CosineAnnealing的设置,还涉及了梯度裁剪和混合精度训练的相关参数。
最低0.47元/天 解锁文章
4741

被折叠的 条评论
为什么被折叠?



