退化学习率的应用
程序员文章站
2022-03-09 13:03:55
...
定义一个学习率变量,将其衰减系数设置好,并设置好迭代循环的次数,将每次迭代运算的次数与学习率打印出来,观察学习率按照次数退化的现象。
本例中使用迭代循环计数变量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传进去,否则不会有退化功能。
上一篇: 如何生成超分辨率数据集
下一篇: JavaScript第五章:平稳退化