tensorflow2.x中使用动态学习率(包含1和2版本函数区别)

动态学习率
对学习率应用指数衰减

一、V1版本

之前查来查去,往上最多的调用方式就是使用tf.train.exponential_decay,直接调用就会报错,原因是tf2中这个函数改名了,当然也可以通过如下方式进行调用。
官方文档链接
tf.compat.v1.train.exponential_decay官方文档

函数及参数
tf.compat.v1.train.exponential_decay(
learning_rate,# 最初学习率
global_step, # 计算运行了几轮BATCH_SIZE的计数器,初值给0, 设为不被训练
decay_steps, # 喂入多少轮BATCH-SIZE以后,更新一次学习率。一般为总样本数量/BATCH_SIZE
decay_rate, # 学习率的衰减率
staircase=False, # 如果staircase=True,那就表明每decay_steps次计算学习速率变化,更新原始学习速率,如果是False,那就是每一步都更新学习速率。
name=None
)

计算公式
1.当staircase=False时
decayed_learning_rate = learning_rate *
decay_rate ^ (global_step / decay_steps)
衰减后的学习率 = 初始学习率x衰减系数^(全局步数/衰减步数)
学习率是每次逐渐衰减的

2.当staircase=True时, (global_step / decay_steps)会向下取整,即阶梯型向下衰减,是突然衰减的

例子
比如在(我的学习项目)中,训练集是1714,batch_size用的是32,在staircase为True的情况,给定初始学习率为1e-3,学习率衰减率为0.95,decay_steps为54(1714/32=54,即每个eopch学习率衰减一次)。
则随着迭代次数从1到2,第二轮的学习率变为0.001*0.95^ (54/54)=9.5e-4,第三轮是0.001*0.95^(108/54)=9.025e-4
如果是False,学习率变动就是指数型0.001*0.95^ (1/54),0.001*0.95^ (2/54)。。。。。。。0.001*0.95^(54/54)

二、V2版本

说明
在tensorflow2中,该api改名叫tf.keras.optimizers.schedules.ExponentialDecay,总体来说没有区别,一一对应即可,唯一差别在于原gloabl_steps,现steps不需要设定了
官方文档
api文档
函数及参数
tf.keras.optimizers.schedules.ExponentialDecay(
initial_learning_rate, decay_steps, decay_rate, staircase=False, name=None
)
计算公式(函数)
def decayed_learning_rate(step):
return initial_learning_rate * decay_rate ^ (step / decay_steps)
可以看出计算公式没有变动,只是变量命名更容易理解

摘录自自己的深度学习学习记录
链接:深度学习-猴痘病识别

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱挠静香的下巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值