def get_learning_rate(batch):
learning_rate = tf.train.exponential_decay(
BASE_LEARNING_RATE, # Base learning rate.
batch * BATCH_SIZE, # Current index into the dataset.
DECAY_STEP, # Decay step.
DECAY_RATE, # Decay rate.
staircase=True)
learning_rate = tf.maximum(learning_rate, 0.00001) # CLIP THE LEARNING RATE!
return learning_rate
在Tensorflow中,为解决设定学习率(learning rate)问题,提供了指数衰减法来解决。
通过tf.train.exponential_decay函数实现指数衰减学习率。
步骤:1.首先使用较大学习率(目的:为快速得到一个比较优的解);
2.然后通过迭代逐步减小学习率(目的:为使模型在训练后期更加稳定);
这里用到的是exponential_decay()这个函数,下面解释一下具体的参数意义:
BASE_LEARNING_RATE为基础的学习率,也就是最开始初始化的学习率的值。
batch*BATCH_SIZE当前在数据中的索引值。
DECAY_STEP为衰减的速度。
DECAY_RATE为衰减的系数也就是步长。
staircase为使用阶梯的衰减方式。
learning_rate = tf.maximum(learning_rate, 0.00001) # CLIP THE LEARNING RATE!
在学习的过程中如果学习率的值小于0.00001则将学习率设置为0.00001。为了防止刚开始时学习速率过慢。