(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股票指数预测|数据分享
14 2
|
机器学习/深度学习 开发框架 .NET
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
1794 0
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
1944 0
差异基因分析:fold change(差异倍数), P-value(差异的显著性)
|
机器学习/深度学习 资源调度 监控
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
通过实例学习Pytorch加载权重.load_state_dict()与保存权重.save()
通过实例学习Pytorch加载权重.load_state_dict()与保存权重.save()
17 0
|
5月前
|
机器学习/深度学习 TensorFlow 定位技术
神经网络学习率指数衰减ExponentialDecay策略的参数含义与使用方法详解
神经网络学习率指数衰减ExponentialDecay策略的参数含义与使用方法详解
|
12月前
|
算法 数据建模 Serverless
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-2
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-2
|
12月前
|
机器学习/深度学习 算法 数据挖掘
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-1
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-1
|
机器学习/深度学习 PyTorch Serverless
假设测试数据集test_data为随机生成的,并设置小批次。model神经网络已经训练好了,怎么用MSE来做测试
其中,model表示已经训练好的PyTorch模型,torch.rand()函数用于生成测试数据集,torch.split()函数用于将测试数据集分成小批次,model(batch)用于对小批次的输入数据进行预测,torch.cat()函数用于将所有小批次的预测值拼接在一起,最后使用mean_squared_error()函数计算均方误差。注意,在计算均方误差之前,需要将测试数据集和预测值转换为NumPy数组并将它们从GPU中移动到CPU上。
118 0
|
数据可视化 PyTorch 算法框架/工具
loss放在GPU上面的,现在我需要将loss的值放在visdom上面画出来,怎么处理?
在这个例子中,我们首先初始化了Visdom客户端。接下来,我们假设loss值已经在GPU上计算,并将其定义为torch张量。然后,我们使用.cpu()方法将loss从GPU设备移动到CPU,并使用.detach()方法分离出其计算图依赖关系,并将其转换为NumPy数组。最后,我们使用Visdom的vis.line()方法绘制loss曲线。其中,X表示横坐标,Y表示纵坐标,win指定窗口名称,name指定曲线名称,update指定更新模式(‘append’表示追加数据)。
228 0