源代码:
if cuda:
model = model.cuda(gpus_list[0])
criterion = criterion.cuda(gpus_list[0])
# optimizer = optim.Adam(model.parameters(), lr=opt.lr, betas=(0.9, 0.999), eps=1e-8)
optimizer = optim.Adam([
{'params': model.conv1.parameters()},
{'params': model.conv2.parameters()},
{'params': model.conv3.parameters(), 'lr': opt.lr * 0.1}
], lr=opt.lr)
这时会报错,原因可能是并行运算时,模型被dataparallel包装,所有module都增加一个属性module.因此需要通过net.module.linear调用
这时只需要:
把
model = model.cuda(gpus_list[0])
改为
model = model.module.cuda(gpus_list[0])