我是PyTorch
的新手,我正在做一个玩具例子来理解权重衰减是如何影响传递到优化器的学习速率的。当我使用MultiStepLR
时,我希望在给定的时期数内降低学习速率,但是,它并没有像我预期的那样工作。我做错了什么?
import random
import torch
import pandas as pd
import numpy as np
from torch import nn
from torch.utils.data import Dataset,DataLoader,TensorDataset
from torchvision import datasets, transforms
model = nn.Sequential(nn.Linear(n_input, n_hidden),
nn.ReLU(),
nn.Linear(n_hidden, n_out),
nn.ReLU())
loss_function = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.1)
scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[2,4], gamma=0.1)
for e in range(5):
scheduler.step()
print(e, ' : lr', scheduler.get_lr()[0],"\n")
0 : lr 0.1
1 : lr 0.0010000000000000002
2 : lr 0.010000000000000002
3 : lr 0.00010000000000000003
4 : lr 0.0010000000000000002
学习速率的预期行为为[0.1, 0.1, 0.01, 0.01, 0.001]
1条答案
按热度按时间xxhby3vn1#
当运行你的代码时,我得到以下警告:
可以按照警告消息并使用
get_last_lr
修复代码:输出:
如果您希望学习率在每个时期降低,则应删除
milestones
参数。