退化学习率的应用

定义一个学习率变量,将其衰减系数设置好,并设置好迭代循环的次数,将每次迭代运算的次数与学习率打印出来,观察学习率按照次数退化的现象。

本例中使用迭代循环计数变量global_step来记录循环次数,初始学习率为0.1,令其以每10次衰减0..9得速度来进行退化。

import tensorflow as tf
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 = 10, 
                                           decay_rate = 0.9)
opt = tf.train.GradientDescentOptimizer(learning_rate)
add_global = global_step.assign_add(1)#定义一个OP,令global_step加1完成记步
with tf.Session() as sess:
    tf.global_variables_initializer().run()
    print(sess.run(learning_rate),)
    for i in range(20):
        g, rate = sess.run([add_global, learning_rate])

        print(g,   rate)

运行上面代码会得到一下结果:

0.1
1 0.09895193
2 0.09791484
3 0.09688862
4 0.095873155
5 0.094868325
6 0.09387404
7 0.092890166
8 0.09191661
9 0.09095325
10 0.089999996
11 0.08905673
12 0.088123344
13 0.08719975
14 0.08628584
15 0.0853815
16 0.084486626
17 0.08360115
18 0.08272495
19 0.08185792
20 0.08099999

第一个数是迭代的次数,第二个输出的是学习率。可以看到学习率在逐渐减小,在第十一次由原来的0.1变为0.09。

在训练神经网络时,通常在刚开始时使用较大的learning_rate,随着训练的进行,会慢慢减小learning_rate。在使用时,一定要把当前迭代次数global_step传进去,否则不会有退化功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值