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