-
Notifications
You must be signed in to change notification settings - Fork 7.2k
Closed
Description
When I try to set the learning rate of the FC layer in ResNet50 to a different learning rate, I get the following error:
ValueError Traceback (most recent call last)
<ipython-input-123-553a220d2682> in <module>()
----> 1 optimizer = get_optimizer(model)
<ipython-input-121-302e147c3398> in get_optimizer(model, lr)
10 # {'params': model.classifier.parameters(), 'lr': lr*10} # the classifier needs to learn weights faster
11 {'params': model.fc.parameters(), 'lr': lr*10}
---> 12 ], lr=lr, weight_decay=0.0005)
/home/varun/.linuxbrew/Cellar/python3/3.6.0_1/lib/python3.6/site-packages/torch/optim/adam.py in __init__(self, params, lr, betas, eps, weight_decay)
26 defaults = dict(lr=lr, betas=betas, eps=eps,
27 weight_decay=weight_decay)
---> 28 super(Adam, self).__init__(params, defaults)
29
30 def step(self, closure=None):
/home/varun/.linuxbrew/Cellar/python3/3.6.0_1/lib/python3.6/site-packages/torch/optim/optimizer.py in __init__(self, params, defaults)
37 group_set = set(group['params'])
38 if not param_set.isdisjoint(group_set):
---> 39 raise ValueError("some parameters appear in more than one "
40 "parameter group")
41 param_set.update(group_set)
ValueError: some parameters appear in more than one parameter group
My model code is:
def get_model(pretrained=True, num_classes=5):
model = models.resnet.resnet50(pretrained=pretrained)
mod = list(model.children())
mod.pop()
mod.append(torch.nn.Linear(4096, 5))
model.fc = torch.nn.Sequential(*mod)
return model
model = get_model()
and my optimizer code is:
def get_optimizer(model, lr=1e-04):
return optim.Adam([
{'params': model.conv1.parameters()},
{'params': model.layer1.parameters()},
{'params': model.layer2.parameters()},
{'params': model.layer3.parameters()},
{'params': model.layer4.parameters()},
{'params': model.fc.parameters(), 'lr': lr*10} # the classifier needs to learn weights faster
], lr=lr, weight_decay=0.0005)
If I comment out all the dictionaries except for the last model.fc.parameters
one, the code runs, else even for one other layer, I get the above error.
Metadata
Metadata
Assignees
Labels
No labels