zoukankan      html  css  js  c++  java
  • Tensorflow 自适应学习速率

    Tensorflow 自适应学习速率

    在模型的初期的时候,往往设置为较大的学习速率比较好,因为距离极值点比较远,较大的学习速率可以快速靠近极值点;而,后期,由于已经靠近极值点,模型快收敛了,此时,采用较小的学习速率较好,较大的学习速率,容易导致在真实极值点附近来回波动,就是无法抵达极值点。


    在tensorflow中,提供了一个较为友好的API, tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None),其数学表达式是这样的:

    [decayed\_learning\_rate = learning\_rate imes decay\_rate ^{ (global\_step / decay\_steps)} ]

    先解释API中的参数的意思,第一个参数learning_rate即初始学习速率,第二个参数,是用来计算步骤的,每调用一次优化器,即自增1,第三个参数decay_steps通常设为一个常数,如数学公式中所示,与第五个参数配合使用效果较好,第五个参数staircase如果设置为True,那么指数部分就会采用整除策略,表示每decay_step,学习速率变为原来的decay_rate,至于第四个参数decay_rate表示的是学习速率的下降倍率。

    global_step = tf.Variable(0, trainable=False)
    starter_learning_rate = 0.1
    learning_rate = tf.exponential_decay(starter_learning_rate, global_step, 100000, 0.96, staircase=True)
    optimizer = tf.GradientDescent(learning_rate)
    optimizer.minimize(...my loss..., global_step=global_step)
    

    意思就是,初始的学习速率是0.1,每经过10万轮次训练后,学习速率变为原来的0.96

  • 相关阅读:
    自编游戏
    宣言
    Leetcode: 12. Integer to Roman
    Leetcode: 11. Container With Most Water
    Leetcode: 10. Regular Expression Matching
    网络编程:listen函数
    网络编程:connect函数
    Leetcode: 9. Palindrome Number
    Leetcode: 8. String to Integer (atoi)
    Leetcode: 7. Reverse Integer
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/7105748.html
Copyright © 2011-2022 走看看