CNTK create_trainer 方程式

CNTK create_trainer equations

在下面的 CNTK create_trainer 处理程序中(在 python 中)我试图理解这两个等式的含义 - 我相信这是每个​​小批量的学习率,但其余部分没有评论由微软。有人了解这些 lr_per_mb 等式及其意义吗?

lr_per_mb = [1.0]*80+[0.1]*40+[0.01]

lr_per_mb = [0.1]*1+[1.0]*80+[0.1]*40+[0.01]

def create_trainer(网络, minibatch_size, epoch_size, num_quantization_bits, block_size, warm_up, progress_printer) :

if network['name'] == 'resnet20': 
    lr_per_mb = [1.0]*80+[0.1]*40+[0.01]
elif network['name'] == 'resnet110': 
    lr_per_mb = [0.1]*1+[1.0]*80+[0.1]*40+[0.01]
else: 
    return RuntimeError("Unknown model name!")

语法 [a1] * b + [a1] * d + a3 意味着,学习器将在前 b 次迭代中使用 a1 的学习率(时期/样本:取决于您的训练器迭代设置),然后它将使用 a2 的学习率进行 d 次迭代(时期或样本),对于剩余的迭代,学习率应为 a3 .

通常你会以高学习率开始,随着训练的进行,学习率会降低。这就是您在上面的代码中看到的。此外,对于这两个网络,学习率是不同的。为学习率找到正确的参数需要付出很多努力。因此,使用示例中的一些数字作为初始起点可能会节省您的大量时间。