探究各种学习率策略--模拟学习率变化过程

Posted Tina姐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了探究各种学习率策略--模拟学习率变化过程相关的知识,希望对你有一定的参考价值。

调整学习速率的方法有很多,如何直观的感受学习率随迭代的变化趋势,以及如何获取当前epoch的学习速率 lr。我们可以把学习速率随 epoch的变化画出来。

import torch
import monai
import matplotlib.pyplot as plt

model = monai.networks.nets.UNet(dimensions=3, in_channels=1, out_channels=2, channels=(16, 32, 64, 128, 256),
                                     strides=(2, 2, 2, 2))

optimizer = torch.optim.Adam(model.parameters(), lr=0.02)

# scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=50, gamma=0.5)
# 每step_size步之后衰减为 lr * gamma
scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[100, 200, 300, 500], gamma=0.1)
# 在 milestones epoch处衰减, lr * gamma

lr_list = []
epochs = 600
for epoch in range(epochs):
    lr = scheduler.get_last_lr()[0]
    print('lr: %.6f, epoch: %d'%(lr, epoch))
    lr_list.append(lr)
    optimizer.step()
    scheduler.step()
print(set(lr_list))
plt.plot(list(range(epochs)), lr_list)
plt.xlabel("epoch")
plt.ylabel("lr")
plt.title("LR")
plt.show()


从图上可以看出,lr 每100 epoch 变化一次,每次下降为之前的0.1倍。 比如 0-100 epoch, l r = 0.02 lr = 0.02 lr=0.02, 100-200 epoch, l r = 0.002 lr = 0.002 lr=0.002

以上是关于探究各种学习率策略--模拟学习率变化过程的主要内容,如果未能解决你的问题,请参考以下文章

第十七篇 PyTorch学习率调整策略

PyTorch学习之六个学习率调整策略

学习率变更策略

tensorflow学习率控制及调试

tensorflow学习率控制及调试

神经网络十大学习率衰减提效策略!