У меня есть 2 сети, которые используют один оптимизатор с разной скоростью обучения. Простой код, показанный ниже:
optim = torch.optim.Adam([
{'params': A.parameters(), 'lr': args.A},
{'params': B.parameters(), 'lr': args.B}])
Это правильно? Я спрашиваю об этом, потому что, когда я проверяю параметры в оптимизаторе (используя код ниже), я нашел только 2 параметра.
for p in optim.param_groups:
outputs = ''
for k, v in p.items():
if k is 'params':
outputs += (k + ': ' + str(v[0].shape).ljust(30) + ' ')
else:
outputs += (k + ': ' + str(v).ljust(10) + ' ')
print(outputs)
Печатается только 2 параметра:
params: torch.Size([16, 1, 80]) lr: 1e-05 betas: (0.9, 0.999) eps: 1e-08 weight_decay: 0 amsgrad: False
params: torch.Size([30, 10]) lr: 1e-05 betas: (0.9, 0.999) eps: 1e-08 weight_decay: 0 amsgrad: False
На самом деле, 2 сетииметь более 100 параметров. Я думал, что все параметры будут напечатаны. Почему это происходит? Спасибо!