mindyolo
mindyolo copied to clipboard
关于默认使用学习率,使用的是一个固定学习率?
-
从下面这个函数来看, 这个学习率使用的是固定学习率? https://github.com/mindspore-lab/mindyolo/blob/8228636c35b52d571d63713af7f2eb199e2698c1/mindyolo/optim/scheduler.py#L7
-
在log 中的学习率,是一个动态变化的学习率
-
在gpu上 visdrone yolov5 loss 一直不下降
每个模型都有自己的学习率衰减策略,GPU上的性能没有全量验证过
我这边没理解哈,因为我看这个学习率除了yolox 外,送给nn.Momentum 全部是一个 固定的学习率呗, 这个是怎么衰减的呢?
我这边也尝试将下面生成的学习率送进去 nn.Momentum , 但是得到的学习率,画出来的结果完全是一样的
def linear_warmup_lr(current_step, warmup_steps, base_lr, init_lr):
"""Linear learning rate."""
lr_inc = (float(base_lr) - float(init_lr)) / float(warmup_steps)
lr = float(init_lr) + lr_inc * current_step
return lr
def warmup_cosine_annealing_lr(lr, steps_per_epoch, warmup_epochs, max_epoch, T_max, eta_min=0):
"""Cosine annealing learning rate."""
# TODO checke input type
base_lr = lr
warmup_init_lr = 0
total_steps = int(max_epoch * steps_per_epoch)
warmup_steps = int(warmup_epochs * steps_per_epoch)
lr_each_step = []
for i in range(total_steps):
last_epoch = i // steps_per_epoch
if i < warmup_steps:
lr = linear_warmup_lr(i + 1, warmup_steps, base_lr, warmup_init_lr)
else:
lr = eta_min + (base_lr - eta_min) * (1. + math.cos(math.pi * last_epoch / T_max)) / 2
lr_each_step.append(lr)
return np.array(lr_each_step).astype(np.float32)
可以看下这个link https://www.hiascend.com/forum/thread-0294147492002755003-1-1.html
可以看下这个函数 里面对不同的模型做了不一样的 权重分组和学习率衰减策略 https://github.com/mindspore-lab/mindyolo/blob/master/mindyolo/optim/group_params.py#L8