Thanks for the quick reply. My completed code looks like:
param_frozen_list = [] # should be changed into torch.nn.ParameterList()
param_active_list = [] # should be changed into torch.nn.ParameterList()
for name, param in model.named_parameters():
if name == 'frozen_condition':
param_frozen_list.append(param)
elif name == 'active_condition':
param_active_list.append(param)
else:
continue
optimizer = torch.optim.SGD([
{'params': param_frozen_list, 'lr': 0.0},
{'params': param_active_list, 'lr': args.learning_rate}],
lr = args.learning_rate,
momentum = args.momentum,
weight_decay = args.weight_decay)
The key problem is that in the loop result of model.named_parameters()
, some layers is lost.
I use model.modules()
to check out that they exits in the full module sequences. So is there wrong in my code or a pytorch bug?