Tensorflow训练时增加learning rate decay

阿里云2000元红包!本站用户参与享受九折优惠!

关于是不是需要做learning rate decay,以及选取多大的learning rate,跟优化器(Optimizer)、Batchsize以及任务本身有关。
一般而言,选用tf.train.Momentum.Optimizer需要配合lr decay;
选用tf.train.Adam.Optimizer不需要lr decay。

但是关于Adam是否需要做learning rate decay有很多说法:
Should we do learning rate decay for adam optimizer?

    def _optimize(self, loss, global_):
        # optimizer = tf.train.MomentumOptimizer(
        #     learning_rate=0.001, momentum=0.9)
        learning_rate = tf.train.exponential_decay(self.config.init_lr, global_step=global_,
                                                   decay_steps=self.config.decay_step,
                                                   decay_rate=self.config.decay_rate,
                                                   staircase=True)
        tf.summary.scalar("learning_rate", learning_rate)
        optimizer = tf.train.AdamOptimizer(learning_rate, beta1=0.9, beta2=0.999, epsilon=1e-8,
               use_locking=False, name="Adam")
        trainable_var = tf.trainable_variables()
        update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
        grads_and_vars = optimizer.compute_gradients(loss, trainable_var)
        grads_and_vars = [(tf.clip_by_norm(g, self.config.GRADIENT_CLIP_NORM), v)
                          for g, v in grads_and_vars]
        with tf.control_dependencies(update_ops):
            # apply_gradient_op = optimizer.minimize(loss)
            apply_gradient_op = optimizer.apply_gradients(grads_and_vars, name='train_op')
        placeholder_float32 = tf.constant(0, dtype=tf.float32)
        # tf.summary.scalar("accuracy", rate)
        return placeholder_float32, apply_gradient_op, apply_gradient_op, learning_rate

这里global_应该是一个tensor 常量,通过训练时更新迭代步数来得到step, 然后通过feed_dictstep喂给global_,即可以达到lr decay的效果。


lr_decay.png

这里将staircase设置为True,可以看到阶梯状lr下降趋势。

https://www.jianshu.com/p/f9cd468b540b

Python量化投资网携手4326手游为资深游戏玩家推荐:《《魂器学院》:制作组研(diao)发日志特别篇|一个学(lao)员(po)的诞生!

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
GO
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论