tensorflow机器学习指数衰减学习率的使用tf.train.exponential_decay

训练神经网络模型时通常要设置学习率learning_rate,可以直接将其设置为一个常数(通常设置0.01左右),但是用产生过户学习率会使参数的更新过程显得很僵硬,不能很好的符合训练的需要(到后期参数仅需要很小变化时,学习率的值还是原来的值,会造成无法收敛,甚至越来越差的情况),过大无法收敛,过小训练太慢。

所以我们通常会采用指数衰减学习率来优化这个问题,exponential_decay可以通过tf.train.exponential_decay函数直接设置,

global_step = tf.Variable(0, trainable=False)
lr = tf.train.exponential_decay(learning_rate=0.02,
global_step=global_step,
decay_steps=100,
decay_rate=0.9,
staircase=False)
learning_rate为原始学习率
global_step个人感觉好比一个计数器,你没进行一次更新它就会增一
decay_steps为衰减间隔,顾名思义就是每隔多少步会更新一次学习率(它只有在staircase为true时才有效)
decay_rate衰减率
staircase若为true则每隔decay_steps步对学习率进行一次更新,若为false则每一步都更新
指数衰减学习率更新公式如下:

猜你喜欢

转载自www.cnblogs.com/biandekeren-blog/p/11871091.html