使用pytorch DDP训练的时候,有的时候会报错This error indicates that your module has parameters that were not used

解决办法:

现在单GPU下做一个iteration,并在loss.backward()optimizer.step()之间插入以下代码:

for name, param in model.named_parameters():
    if param.grad is None:
        print(name)

这时未使用的参数就会未参与梯度的计算,因此可以获取未使用参数,并注释掉消除错误。完整代码如下:

model = model().cuda()
x = torch.rand((...)).cuda()

criterion = torch.nn.MSELoss(reduction='sum')
optimizer = torch.optim.SGD(model.parameters(), lr=1e-4)

y_pred = model(x)

y = y_pred

loss = criterion(y_pred, y)

# Zero gradients, perform a backward pass, and update the weights.
optimizer.zero_grad()
loss.backward()

for name, param in model.named_parameters():
    if param.grad is None:
        print(name)

optimizer.step()
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐