(0)global_step学习率衰减用法

简介: 主要是用在梯度下降中的学习率问题上,设置学习率的大小, 是在精度和速度之间找到一个平衡:

主要是用在梯度下降中的学习率问题上,设置学习率的大小, 是在精度和速度之间找到一个平衡:

  • 如果学习率的值比较大, 则训练速度会提升, 但结果的精度不够。
  • 如果学习率的值比较小, 精度虽然提升了, 但训练会耗费太多的时间。

global_step所以引入了退化学习率又叫学习率衰减, 它的本意是希望在训练过程中对于学习率大和小的优点都能够为我们所用, 也就是当训练刚开始时使用大的学习率加快速度, 训练到一定程度后使用小的学习率来提高精度, 这时可以使用学习率衰减的方法:

tf.train.exponential_decay(learning_rate,global_step,deacy_step,deacy_rate,staircase = False,name = None) 
1

当staircase = True表示没有衰减的功能。默认为False。

上面函数的意思是每迭代1000步,学习率衰减到原来的90%,其中global_step表示的是当前的迭代步数,用来记录循环次数。

global_step = tf.Variable(0,trainable=False)
• 1

实例表述

import tensorflow as tf
tf.reset_default_graph()
global_step = tf.Variable(0,trainable=False)
 通过exponential_decay函数生成学习率
learning_rate = tf.train.exponential_decay(0.1,global_step, 10, 0.9, staircase = False) 
opt = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
add_global = global_step.assign_add(1)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(learning_rate.eval())
    for i in range(20):
        g,rat = sess.run([add_global,learning_rate])
        print(g,rat)

结果

0.1
1 0.09895193
2 0.09791484
3 0.09688862
4 0.095873155
5 0.095873155
6 0.09387404
7 0.092890166
8 0.09191661
9 0.09095325
10 0.089999996
11 0.089999996
12 0.08812335
13 0.087199755
14 0.08628584
15 0.0853815
16 0.08448663
17 0.08360115
18 0.08272495
19 0.08185793
20 0.08099999

注意:在使用时, 一定要把当前迭代次数global_step传进去, 否则不会有退化的功能。

相关文章
|
7月前
|
数据挖掘 Python
【视频】随机波动率SV模型原理和Python对标普SP500股票指数预测|数据分享
【视频】随机波动率SV模型原理和Python对标普SP500股票指数预测|数据分享
|
机器学习/深度学习 开发框架 .NET
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
2657 0
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
3051 0
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
|
机器学习/深度学习 资源调度 监控
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
|
5月前
|
Python
Fama-French模型,特别是三因子模型(Fama-French Three-Factor Model)
Fama-French模型,特别是三因子模型(Fama-French Three-Factor Model)
|
5月前
|
机器学习/深度学习 数据采集 监控
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
**神经网络与AI学习概览** - 探讨神经网络设计,包括MLP、RNN、CNN,激活函数如ReLU,以及隐藏层设计,强调网络结构与任务匹配。 - 参数初始化与优化涉及Xavier/He初始化,权重和偏置初始化,优化算法如SGD、Adam,针对不同场景选择。 - 学习率调整与正则化,如动态学习率、L1/L2正则化、早停法和Dropout,以改善训练和泛化。
49 0
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
|
6月前
|
算法 C语言 Ruby
分形逃逸时间算法中的 Normalized Iteration Count(NIC)技术 让颜色更柔和
Normalized Iteration Count (NIC) 技术是一种提升逃逸时间算法中分形图像质量的方法,它产生更平滑的颜色过渡。数学公式表示为:`mu = n + 1 - log(log(|Z(n)|)) / log(p)`,其中 `Z(n)` 是迭代次数,`|Z(n)|` 是复数模长,`p` 通常取2。示例代码提供了 Ruby, Maxima 和 C 语言的实现。
|
7月前
|
机器学习/深度学习 TensorFlow 定位技术
神经网络学习率指数衰减ExponentialDecay策略的参数含义与使用方法详解
神经网络学习率指数衰减ExponentialDecay策略的参数含义与使用方法详解
128 1
|
机器学习/深度学习 PyTorch 算法框架/工具
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
223 0
|
机器学习/深度学习 算法 数据挖掘
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-1
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-1