TensorFlow VS PyTorch之学习率衰减

Galatea ·
更新时间:2024-11-13
· 764 次阅读

在训练神经网络时,有些情况下,需要对学习率进行调整。在这里分别介绍TensorFlow和PyTorch的一种方法。

tf.train.exponential_decay()

TensorFlow提供了指数衰减法

tf.train.exponential_decay(learning_rate, global_step=global_step, decay_steps=100,decay_rate=0.99, staircase=True) 计算公式:

learning_rate * decay_rate^(global_step / decay_steps)

参数 learning_rate:初始学习率 global_step:计数器,每进行一次更新,加1 decay_steps:衰减步长 decay_rate:衰减系数 staircase:若为True,则学习率呈阶梯形式下降,即global / decay_steps为整数。相当于每隔decay_steps更新一次学习率;若为False,则学习率呈连续下降,即global / decay_steps为浮点型,每一步都会更新一次学习率。
在这里阶梯状的蓝色部分为staircase为True的情况;连续的红色部分为staircase为False的情况。 torch.optim.lr_scheduler.StepLR()

PyTorch提供了基于epoch的学习率下降方法。该方法只是其中一种

torch.optim.lr_scheduler.StepLR(optimizer,step_size=100,gamma=0.99,last_epoch=-1) 计算公式:

learning_rate * gamma^(epoch / step_size)

参数 optimizer:自己定义的优化器 step_size:衰减步长,即每隔step_size个epoch,更新一次学习率 gamma(float):衰减系数 last_epoch(int):最后一次epoch的索引默认为-1 optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=100, gamma=0.99) # 之后搭配 scheduler.step()进行操作。

参考文献:https://www.cnblogs.com/happystudyeveryday/p/11144433.html


作者:beijiafei



pytorch 学习率 学习 tensorflow

需要 登录 后方可回复, 如果你还没有账号请 注册新账号