Tensorflow(2)-exponential_decay

学习率衰减,对于训练非常重要。在 TF中可以用exponential_decay() 官方API文档

tf.train.exponential_decay()

Parameters:
1) learning_rate
2) global_step
3) decay_steps
4) decay_rate
5) staircase=False
6) name=None

decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)

Eg1:

import tensorflow as tf
import matplotlib.pyplot as plt


global_step = tf.Variable(0, trainable=False)

initial_learning_rate = 0.1 #初始学习率

learning_rate = tf.train.exponential_decay(initial_learning_rate,
                                           global_step=global_step,
                                           decay_steps=1000,decay_rate=0.5, staircase=False)
opt = tf.train.GradientDescentOptimizer(learning_rate)

y = []
x= []
add_global = global_step.assign_add(1)
with tf.Session() as sess:
    tf.global_variables_initializer().run()
    print(sess.run(learning_rate))
    for j in range(10000):
        rate = 0.0
        _, rate = sess.run([add_global, learning_rate])
        x.append(_)
        y.append(rate)

    line3, = plt.plot(x,y, label='learning rate')
    plt.legend(handles=[line3])
    plt.show()

这里写图片描述

如果 staircase = True
这里写图片描述

训练前期如果用过小的学习率,很可能会导致梯度下降到局部最小值,模型不收敛。
这里写图片描述
(纵轴是错误率, 学习率是0.0001)
如果采用大一点的学习率,其他参数不变。
这里写图片描述

(学习率是0.001)

而在模型训练后期,过于大的学习率,会造成模型震荡。此时我们又希望采用较小的学习率,使得模型进一步的收敛。可见,在训练过程中,控制学习率是非常重要的。
Alexnet网络训练步骤: 学习率初始化 0.01 momentum 0.9 学习率衰减 0.0005。 当验证集趋于稳定时候,学习率 / 10。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值