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

调整学习速率的方法有很多,如何直观的感受学习率随迭代的变化趋势,以及如何获取当前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,lr = 0.02, 100-200 epoch, lr = 0.002

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容