TensorFlow 学习率 learning rate 指数衰减法。

TensorFlow 学习率 learning rate的设置:指数衰减法。

函数:tr.train.exponential_decay

    初始时使用较大的学习率较快地得到较优解,随着迭代学习率呈指数逐渐减小。

    

decayed_learning_rate = learning_rate*(decay_rate^(global_steps/decay_steps)
    其中:decay_steps为衰减速度,可以理解为完整使用一遍训练数据所需要的迭代次数。等于总样本数/每个batch训练样本数。其实质为每完整过完一遍训练数据,学习率减小一次。从而达到该次训练中,所有的数据对训练模型具有相同的作用。这也是程序中staircase设置为true的原因。

import tensorflow as tf
import matplotlib.pyplot as plt

learning_rate = 0.1  # 学习速率L
decay_rate = 0.8  # 衰减速率,即每一次学习都衰减为原来的0.8
global_steps = 1000  # 总学习次数
# 如果staircase为True,那么每decay_steps改变一次learning_rate,
# 改变为learning_rate*(decay_rate^(global_steps/decay_steps)
# 如果为False则,每一步都改变
decay_steps = 100  

global_ = tf.placeholder(dtype=tf.int32)
# 如果staircase=True,那么每decay_steps更新一次decay_rate,如果是False那么每一步都更新一次decay_rate。
c = tf.train.exponential_decay(learning_rate, global_, decay_steps, decay_rate, staircase=True)
d = tf.train.exponential_decay(learning_rate, global_, decay_steps, decay_rate, staircase=False)

T_C = []
F_D = []

with tf.Session() as sess:
    for i in range(global_steps):
        T_c = sess.run(c, feed_dict={global_: i})
        T_C.append(T_c)
        F_d = sess.run(d, feed_dict={global_: i})
        F_D.append(F_d)

plt.figure(1)
l1, = plt.plot(range(global_steps), F_D, 'r-')  # staircase=False
l2, = plt.plot(range(global_steps), T_C, 'b-')  # staircase=True

plt.legend(handles=[l1, l2, ], labels=['staircase=False', 'staircase=True'],
           loc='best', ) 
plt.show()



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TensorFlow中,我们可以使用tf.train模块中的Optimizer类和learning_rate参数来控制学习学习是在模型训练过程中决定参数更新步长的重要超参数。 首先,我们可以使用tf.train模块中的Optimizer类来定义一个优化器对象。例如,可以使用tf.train.GradientDescentOptimizer来定义一个梯度下降优化器对象。 然后,在定义一个optimization步骤时,我们可以通过设置learning_rate参数来指定所需的学习。例如,可以使用optimizer.minimize(loss, var_list=variables, learning_rate=0.01)来指定学习为0.01。 如果想在训练过程中动态修改学习,可以通过在定义optimization步骤时将学习设置为一个Tensor而不是一个固定的常数。这样,我们可以使用tf.placeholder来创建一个占位符,并在每次执行训练步骤时,将实时的学习值传递给占位符。 例如,可以使用learning_rate = tf.placeholder(tf.float32, shape=[])来创建一个学习的占位符。然后,在每次执行训练步骤时,可以通过feed_dict参数来传递实时的学习值,例如feed_dict={learning_rate: 0.01}。 这样,在每次训练步骤中,我们就可以动态地修改学习。例如,可以通过设置不同的学习值来实现学习衰减或动态调整学习的算。 总结起来,要在TensorFlow中动态修改学习,我们可以通过创建一个学习的占位符,并在每次执行训练步骤时,通过feed_dict参数传递实时的学习值。这样就可以实现学习的动态修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值