Pytorch中缺少优化器参数

Pytorch中缺少优化器参数,pytorch,Pytorch,我有两个网络使用不同的学习率共享一个优化器。简单代码如下所示: 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

我有两个网络使用不同的学习率共享一个优化器。简单代码如下所示:

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)
仅打印两个参数:

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多个参数。我以为所有参数都会打印出来。为什么会这样?谢谢大家!

只打印每个参数组的第一个张量:

如果k是'params':
输出+=(k+):'+str(v[0].shape).ljust(30)+'.#只打印v[0]!
尝试打印所有参数:

如果k是'params':
输出+=(k+':')
对于v中的vp:
输出+=(str(vp.shape).ljust(30)+'')
您所说的“超过100个参数”是什么意思?尺寸为100?可培训层的数量?你能给出网络的定义吗?@Shai,“超过100个参数”意味着超过100个可训练变量(参数)。网络的定义是几个普通的二维层。我以为所有这些可培训参数都会打印出来。然而,只有两个是打印的。