欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

退化学习率用法实例

程序员文章站 2023-12-30 19:04:58
...

使用迭代循环计数变量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)
# 定义一个op,令global_step加1完成记步
add_global = global_step.assign_add(1)
with tf.Session() as sess:
    tf.global_variables_initializer().run()
    print(sess.run(learning_rate))
    for i in range(20):
        # 循环20步,将每步的学习率打印出来
        g, rate = sess.run([add_global, learning_rate])
        print(g, rate)

运行代码得到结果:

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

第1个数是迭代的次数,第2个输出是学习率。可以看到学习率在逐渐变小。

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

上一篇:

下一篇: