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 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

tensorflow CNN mnist 示例

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

2442
来自专栏Small Code

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

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

2717
来自专栏数据小魔方

撬动地球需要一个杠杆,看懂图表需要一条参考线

今天要跟大家介绍一下图表中用作对比的参考线制作技巧 ▽ 参考线能够更明显的 突出真实值与目标值之间的差距 ? ? 今天要介绍两种参考线的制作思路 散点图法——...

2886
来自专栏数据派THU

从零开始用Python构造决策树(附公式、代码)

? 来源:Python中文社区 作者:weapon 本文长度为700字,建议阅读5分钟 本文介绍如何不利用第三方库,仅用python自带的标准库来构造一个决策...

3208
来自专栏Petrichor的专栏

matplotlib: 绘制平面图/表格

2384
来自专栏用户2442861的专栏

tensorflow mnist神经网络示例

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

2663
来自专栏Jack-Cui

Caffe学习笔记(七):使用训练好的model做预测(mnist)

Python版本: Python2.7 运行平台: Ubuntu14.04 一、前言     在之前的笔记中,已经生成了训练好的mnist.cafffemod...

4445
来自专栏专知

【最新TensorFlow1.4.0教程02】利用Eager Execution 自定义操作和梯度 (可在 GPU 运行)

点击上方“专知”关注获取更多AI知识! 【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工...

5266
来自专栏游遵文的专栏

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

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

6231
来自专栏图形学与OpenGL

机械版CG 实验3 变换

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

511

扫码关注云+社区