深度学习tensorflow模型训练的API

本文探讨了深度学习中两种常用的学习率衰减策略:指数衰减与分段常数法。指数衰减通过设置衰减周期和衰减率来调整学习率,而分段常数法则允许在特定步长后骤降学习率。通过示例解释了`tf.train.exponential_decay`和`tf.train.piecewise_constant`的使用,并展示了它们在实际项目中的应用,如在FPN模型中对学习率的精细化调整。这种方法有助于优化模型训练过程,提高收敛速度和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习率衰减API

指数型 lr 衰减法:

tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate,staircase=False, name=None)

函数参数说明
learning_rate传入的初始 lr 值
global_step用于逐步计算衰减指数
decay_steps衰减周期
decay_rate每次衰减的倍率
staircase若为 False 则是标准的指数型衰减,True 时则是阶梯式的衰减方法,目的是为了在一段时间内(往往是相同的 epoch 内)保持相同的 learning rate

在这里插入图片描述
exponential_decay 示例,其中红色线条是 staircase=False,即指数型下降曲线,蓝色线条是 staircase=True,即阶梯式下降曲线
该衰减方法的优点是收敛速度较快,简单直接。

项目中用到的:tf.train.piecewise_constant(x, boundaries, values, name=None)

函数参数说明
xx 即为 global step
global_step用于逐步计算衰减指数
boundariesboundaries=[step_1, step_2, …, step_n] 定义了在第几步进行 lr 衰减
valuesvalues=[val_0, val_1, val_2, …, val_n] 定义了 lr 的初始值和后续衰减时的具体取值。需要注意的是,values 应该比 boundaries 长一个维度。

在这里插入图片描述
这种方法有助于使用者针对不同任务进行精细地调参,在任意步长后下降任意数值的 learning rate。
在train.py中 line 91 处有:

    lr = tf.train.piecewise_constant(global_step,
                                     boundaries=[np.int64(cfgs.DECAY_STEP[0]), np.int64(cfgs.DECAY_STEP[1])],
                                     values=[cfgs.LR, cfgs.LR / 10., cfgs.LR / 100.])

在FPN中cfgs.py的原本的DECAY_STEP 设置为:

DECAY_STEP = [60000, 80000]

Tiny中的author修改为:

DECAY_STEP = [10000, 20000]

这样修改后,学习率衰减变为在第10000step进行衰减至cfgs.LR / 10.
即原来的1/10,
在第20000step进行衰减至cfgs.LR / 100.
即原来的百分之一
MOMENTUM激励都为0.9,未修改,不讨论

其他衰减策略参考:https://www.sohu.com/a/217389557_717210

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值