网上搜了很多关于学习率衰减 tf.train.exponential_decay()函数的解释,感觉都不是很清楚,现在由我来。
1. 函数参数
tf.train.exponential_decay(
learning_rate, # 初始学习率
global_step, #
decay_steps, # 衰减步长
decay_rate, # 衰减率
staircase=False #
)
比较容易理解的参数,我已经标出来了。
每一次迭代后,学习率的计算公式如下:
ln即学习率(learning rate)。
2. 俺的理解
①decay_step
decay_step是我们设置的衰减步长,例如设置:
decay_step = 1000
decay_rate = 0.9
那么宏观来看,每迭代1000次,初始学习率就会乘以一次0.9。
②global_step
global_step我们在使用时,常常初始化为0:
global_step = tf.Variable(0, trainable=False)
那根据公式计算的话,其实学习率一直是不变的。
这是因为很多地方忽略了一个说明:就是global_step在每次迭代的过程中会自加1。
这样当执行1000次迭代时,global_step与decay_step相等,刚好初始学习率就乘了0.9的衰减系数。
③staircase
这个参数设置为True时,则只有在迭代完1000次时(即decay_step的值),学习率才会乘上衰减系数0.9;
设置为False时,则在每一次迭代完成时,学习率都会更新,相当于按照公式实时更新。
|