調(diào)整學(xué)習(xí)速率的方法有很多绅项,如何直觀的感受學(xué)習(xí)率隨迭代的變化趨勢,以及如何獲取當(dāng)前epoch的學(xué)習(xí)速率 lr比肄。我們可以把學(xué)習(xí)速率隨 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,