tensorflow学习笔记(三十六):learning rate decay

learning rate decay

在训练神经网络的时候,通常在训练刚开始的时候使用较大的learning rate, 随着训练的进行,我们会慢慢的减小learning rate。对于这种常用的训练策略,tensorflow 也提供了相应的API让我们可以更简单的将这个方法应用到我们训练网络的过程中。

接口 tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None) 参数: learning_rate : 初始的learning rate global_step : 全局的step,与 decay_stepdecay_rate一起决定了 learning rate的变化。 staircase : 如果为 True global_step/decay_step 向下取整

更新公式:

decayed_learning_rate = learning_rate *
                        decay_rate ^ (global_step / decay_steps)

这个代码可以看一下 learning_rate 的变化趋势:

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)
with tf.Session() as sess:
    tf.global_variables_initializer().run()
    print(sess.run(learning_rate))
    for i in range(10):
        _, rate = sess.run([add_global, learning_rate])
        print(rate)

用法:

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)
with tf.control_denpendices([add_global]):
    train_op = opt.minimise(loss)

with tf.Session() as sess:
    tf.global_variables_initializer().run()
    print(sess.run(learning_rate))
    for i in range(10):
        _= sess.run(train_op)
        print(rate)

参考资料

https://www.tensorflow.org/api_docs/python/tf/train/exponential_decay

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏图形学与OpenGL

机械版CG 实验3 变换

进一步掌握二维、三维变换的数学知识、变换原理、变换种类、变换方法;进一步理解采用齐次坐标进行二维、三维变换的必要性;利用OpenGL实现二维、三维图形变换。

371
来自专栏游遵文的专栏

机器学习优化算法:梯度下降(Gradient Descent)

优化算法 ( Optimization Algorithm ) 是机器学习理论中重要的组成部分,每年 ICML 会议中,总会有很多关于优化算法 Paper 以及...

5671
来自专栏小樱的经验随笔

51Nod 1080 两个数的平方和(数论,经典题)

1080 两个数的平方和 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 给出一个整数N,将N表示为2个整数...

3516
来自专栏求索之路

cs231n之KNN算法

1.环境搭建以及前置条件 1.前置环境: 1.mac 2.pycharm 3.python3 4.Anaconda 2.环境搭建: 1.官网下载并安装Ana...

3179
来自专栏Small Code

【TensorFlow】TensorFlow 的卷积神经网络 CNN - 无TensorBoard版

前面 有篇博文讲了多层感知器,也就是一般的前馈神经网络,文章里使用 CIFAR10 数据集得到的测试准确率是 46.98%。今天我们使用更适合处理图像的卷积神经...

2497
来自专栏深度学习与计算机视觉

TensorFlow 网络优化步骤与一般方法

深度学习中,网络的优化是训练过程中很重要的一部分,现在有很多的优化策略,而他们的核心的内容都是梯度下降。 理论的部分大家可以参考: 理解梯度下降在机器学...

50410
来自专栏Petrichor的专栏

matplotlib: 绘制平面图/表格

1574
来自专栏用户2442861的专栏

tensorflow CNN mnist 示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

1232
来自专栏用户2442861的专栏

tensorflow mnist神经网络示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

2023
来自专栏李蔚蓬的专栏

第14周Python机器学习周记

(2)新增一个键值(maybe),计算香农熵,观察其变化(熵越高,则混合的数据也越多);

953

扫码关注云+社区