CNTK create_trainer方程

时间:2017-05-15 03:06:10

标签: python cntk

在下面的CNTK create_trainer处理程序(在python中)我试图理解这两个方程式的含义 - 我相信这是每个​​minibatch的学习率,但其余部分没有被微软评论。有没有人理解这些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(network,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!")

1 个答案:

答案 0 :(得分:1)

语法[a1] * b + [a1] * d + a3表示,学习者将使用a1的学习率进行首次b次迭代(时期/样本:取决于您的训练师迭代设置),然后它将对a2次迭代(时期或样本)使用d的学习率,对于剩余的迭代,学习率应为a3

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