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

  • 相关阅读:
    (转)Zipalign——Android apk优化工具
    (转)Android 数字证书详
    (转)ant深入浅出
    (转)Java调用Ant API用法
    (转)Java 代码调用ANT
    (转) Android如果对APK进行加密,提高反编译难度(思路)
    (转)Ant自动打包
    (转)Ant build.xml中的各种变量,使用系统环境变量
    (转)JAVA调用脚本
    (转)Android 编译,打包、签程名详细教
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/7105748.html
Copyright © 2011-2022 走看看